この記事は 「マナビDX Questで得たもの Advent Calendar 2025 」16日目の記事です。
poem風味が強いので、お好きなところだけ選び抜いてお楽しみください。
TL;DR
- 世間の「ランキング1位」は、案外あなたの1位と言うには早いかもしれない
- 「立派なエンジニア」になろうとして手を止めるより、泥臭い hack で手を動かそう
- 「なんとかしたい」という身近な不満は、データと技術を使えば自分の手で変えられる (かもしれない)
このひとだあれ?
「せし (@NitCelcius)」といいます
- いつもはゆるくプログラム書きつつ個人製作します
- C# (.NET Core, Unity)
- Next.js / Nuxt.js どっちも好き嫌い入り交じります
- 申し込み当時は大学2年生の夏まっただ中でした
- 当時プログラミングサークルの会長で C# 以外使わない狂信者でした
- ゆえに Python のポテンシャルを知らなかった
- 昨年の Advent Calendar に書いた記事から1年ぶりです
学業で満足できるか?
マナビDX Quest を修了してもう2年経ち、大学で学ぶことも一定楽しみつつ、「やっぱり自分の好きなものづくりがしたい」気持ちが大きくなっています。むしろ、大学よりも別のことに時間を割きたいと思うようになりました。”大学生は学業が本分である”という主張に間違いはないと思うけれど、本分だからといって他の全てに勝るものではないと思います。
「プログラミングができるようになりたいなぁ」と思っても「何すればいいんだ?」と時間を割く具体的な対象が見当たらなくても、「プログラミングできるようになりたいんだけど、初心者は何から始めればいい?」と一つLLMに疑問を投げつけてみることで、最初の一歩がいくつか提示されます。モデルによって提示される一歩こそ違いますが、「初心者に教えるなら Python か JavaScript が簡単じゃないか」という似通った結果が出てくるので、最初から崖っぷち!ということは少なそうです。
余談: 実際に Gemini 3 Pro に聞くとこんなことを言います (だいぶ省略しています)
> > > > ### 1. まず「何を作りたいか」を決める > > プログラミング言語は「道具」です。作りたいものによって、選ぶべき道具(言語)が全く異なります。 > > 以下の表を見て、自分の興味がどこにあるか確認してみてください。 > > | **作りたいもの・興味** | **おすすめ言語** | **難易度** | **特徴** | > | --- | --- | --- | --- | > | **Webサイト・Webアプリ** | HTML/CSS, JavaScript | ★☆☆ | 画面が動くので成果が見えやすく楽しい。求人も多い。 | > | **AI・データ分析・自動化** | Python | ★☆☆ | 文法がシンプルで読みやすい。現在の人気No.1。 | > | **スマホアプリ (iPhone)** | Swift | ★★☆ | iPhoneアプリを作るならこれ。Macが必要。 | > | **スマホアプリ (Android)** | Kotlin | ★★☆ | Androidアプリ開発の標準。 | > | **ゲーム (Unity)** | C# | ★★★ | 本格的な3D/2Dゲームが作れる。 | > > ### 2. もし「特に決まっていない」なら? > > もし具体的に作りたいものが決まっていない場合は、以下の2択がおすすめです。 > > - **Python(パイソン):** > - **理由:** 文法が非常にシンプルで、英語を読む感覚に近い。AI開発や面倒な作業の自動化など、汎用性が高い。 > - **こんな人向け:** 「とりあえずプログラミングの基礎を理解したい」「AIに興味がある」 > - **JavaScript(ジャバスクリプト):** > - **理由:** ブラウザ(Chromeなど)があればすぐに動かせるため、「環境構築」という最初の壁がない。 > - **こんな人向け:** 「自分が書いたコードですぐに画面が動く感動を味わいたい」「Web業界に行きたい」 > > ### 3. 最初の一歩:具体的な学習ステップ > > いきなり分厚い専門書を買うのは**NG**です(読み終わる前に挫折します)。まずは「手を動かす」ことから始めましょう。 >あるいは Claude Opus 4.5 に聞くと
> 1. 「何を作りたいか」をざっくり決める >言語選びは目的によって変わります:
| やりたいこと | おすすめ言語 |
| --- | --- |
| Webサイト・Webアプリ | HTML/CSS → JavaScript |
| AI・データ分析・自動化 | Python |
| ゲーム開発 | C#(Unity) |
| スマホアプリ | Swift(iOS)/ Kotlin(Android) |
**迷ったら Python か JavaScript** がおすすめです。どちらも文法がシンプルで、学習リソースも豊富です。
### 2. 小さなものを作ってみる
チュートリアルを「写す」だけでなく、少しずつ **自分でアレンジ** してみることが大事です。例えば:
- 簡単な電卓
- ToDoリスト
- 自己紹介サイト
### 継続のコツ
> 「完璧に理解してから進もう」としないこと
>
現役エンジニアも常に調べながらコードを書いています。「なんとなく動いた」でOK、必要になったら戻るスタイルで大丈夫です。
AIも言う通り、まずは手を動かしてみるのが大事だと思います。
「まず、データはあるの?」が先に来る
マナビDX Quest の詳細な紹介は他記事にお任せして、私が参加したときはビジネスの視点において、「企業の業務効率に関する課題をどう解決するか」「その解決策を実行させるための説得材料(データ)は何か」を考えていました。自然と、日常で見聞きする主張に対して「その根拠となるデータはどうなってるんだ?」と考えるクセがついてきました。
ランキング1位は「あなた」にとっての1位か?
私は大学生ゆえ、就職活動や企業説明会、あるいは講義を聴講すると入ってくる「〇〇ランキング1位」からはなかなか逃げられません。2年生の私なら「1位だから良いものなんだろうなぁ」と考えていたかもしれません。もちろん、大勢の意見を平均すれば、正しいようにも感じます。
ただ、ランキングは大勢の意見を丸めた平均値が反映された結果であって、これをすぐに自分に適用して良いかは、疑問が残ります。
個人がランキングを作るとき、点数をつけるとき重視するもの…給与なのか、技術スタックなのか、あるいは社食の美味しさなのか…といったパラメータは、おそらく全員共通ではなさそうです。(私なら給与:技術:社食で 3:5:2 をつけます)
このため、誰かが加工した「1位」という結論が目の前にあるなら、
「いったい何を根拠に1位と言っているのか?」「私の好きに対して『1位』でいられるか?」
という疑問が先に浮かんできます。自分で手を動かして信頼できそうな情報をあさり、納得するためのデータを集めるようになりました。
大きな課題を「ミニ課題」へ分解する
マナビDX Quest を修了して次は機械学習を使ったデータ分析を試してみたいと思い、東京大学松尾研の講座「GCI 2024 Summer」に参加・修了しました。
ここでは機械学習モデルや因果分析を学んでいました。とはいえ、最終課題である「業務効率化」や「企業の抱える問題の指摘と改善策をプレゼンする」といった大きな課題を前にすると、どこから手をつけていいか分からずつらいです。
こういったとき、因果関係を整理して「ミニ課題」まで細分化するといいな、と学びました。目の前にある課題がとんでもなく大きいなら、
- 大きな課題: この業務プロセスを改善したい → 何をすればいいんだ??
- ミニ課題: このデータの入力ミスを減らしたい → 入力フォームのバリデーションを変えればなんとかなるかも
と分解すれば、ちょっと気が楽になります。課題が小さければ、少しずつコードを書けば成果を出せて、かつ先が見えるので軌道修正もしやすいです。この「小さく刻んで、データを出して進む」やり口が、ちょっとした助けになっている気がします。
泥臭い hack たち
そうやってデータに向き合うようになると、いきなり Notebook を開いたり、きれいなコードを書くことが先決ではないな、と思うようになりました。今ある道具を使って最短で目的を達成して、後から自動化に取り組もう、というものです。
ブラウザのコンソールで十分なことがある
たとえばWebサイトのタイトルが欲しいときは、ブラウザの DevTools (F12) をおもむろに開いて、コンソールに一行打ち込めば十分1です。
document.getElementsByTagName("title")[0].innerText
エディタの置換機能で整形する
あるいは、AIに任せた議事録データの「話者表記」が邪魔で、発言内容だけを抜き出したいときなど、文字列操作がエディタの置換機能で十分なこともあります。
例えば以下のテキストに対して、発言内容だけを抜き出します。
話者1: それでは定例会を始めます。
話者2: よろしくお願いします。今週の進捗ですが……
話者1: 先に共有事項からお願いします。
...
VS Code などのエディタで正規表現を使うと、行頭にくっついている「話者(10進数の正の数): 」を置換対象とできます。
^話者[0-9]+:\
それでは定例会を始めます。
よろしくお願いします。今週の進捗ですが……
先に共有事項からお願いします。
...
ワンライナーやExcel活用
1, 2, 3... のような連番が欲しいときは、Excel を開いて =ROW() をオートフィルしてもよいですし、ターミナルを開いて python を起動してからこれを書いても同じものを得られます。
print( "\n".join([str(i) for i in range(1, 101)]) )
1
2
3
...
100
とはいえ、目的を見失わないようにしよう
エンジニアらしさという意味で言うなら、同じことを繰り返さないという意味の「DRY原則」があります。今後も使う処理なら、繰り返さないようになんらかプログラムを書いてもよいと思います。ただ、小さいタスクにおいてはその場で書いて片付けてもいいな、と思うようにもなりました。
「立派なコードを書くこと」も大事ですが、それが主目的ではなくて、「データの整形をする」「欲しい情報を手に入れる」ことこそが主目的とするなら、ひとまずそれを達成しよう、という考えです。
閑話休題:
ここで思い出したもの: “Pikachu's Lament” (The Living Tombstone) 2 から…
You don't have to catch them.
You don't have to be the best, that no one ever was.
(すべてを手に入れる必要はないし、誰もなれなかった最高になる必要もない)
ひとつの終着点、「オープンデータ」でアプリを作るはなし
ここまでの経験を経て、目の前の課題に「データを使って何かできないか?」と考えることが増えました。そこで、個人的に不便を感じていたバスのダイヤや運行情報を発信するアプリを作りはじめました。
これは 「標準的なバス情報フォーマット(GTFS-JP)」 として公開されているオープンデータを使って、「バス乗り間違えた…!」をなくすためのデジタル時刻表を作るプロジェクトです。
「なにかしたい」というモチベーションから、ひょんな出会いがあった
秋田在住で通学をバスに頼ってきた私は、「バス乗り間違えた…!」だったり目の前でバスを逃したり…などなど、いろいろと失敗してきた経験があります。寒いとか辛いとかありますが、周りの友人が「バスで行けるかな、不安」とつぶやいているのも相まって、自分なりに何かしたいな、と思い、アプリとして作っています。
「バスをもうちょっと分かりやすくしたい」課題に対して、例えば分かりやすいデザインで時刻表を作る、あるいはナビ代わりのアプリを見つけるなど様々なアプローチがありますが、『プログラムを使ってものづくりをしたい』と思う自分なりの解決策を提案したい、と考えて調べてみると「GTFS-JP」なるオープンデータが見当たりました。
オープンデータは「営利・非営利を問わず二次利用が可能」かつ「プログラムで扱いやすい」形式で公開されています。仕様書もあって、うまく行けばプログラムにこれを読ませて、アプリとして提供できるかもしれない — と思い、手を動かしています。
現在は 秋田イノベーション・プログラム ASHIOTO (AKATSUKIプロジェクトのひとつ) に採択いただき、来年初旬の公開を目指しています。
「Googleマップがあれば、それで十分じゃないか?」と言われてきたことも多々あります。とはいえ、全員に対し同じUIを提供する便利さに頼り切って、地域特有の事情…雪が多くてバスが遅れやすい、長距離を運行するバスが多い…など、そういったつらさを諦めるのは、なんだかもどかしいと考えています。世の中の正解がどうだとしても、自分の手で目の前の解決策に否を示したかった、というわがままが原動力です。
かつては「C#書きたいからプログラム書くか~」だけだった私が、今は「課題を解決するためにデータを探して、技術を使って形にする」というプロセスを楽しんでいるよ、という記事でした。
-
HTML5 の形式に従わないドキュメントなど、
<title>が複数ある場合には最初のタグの内容が抜き出されます。(HTML5では There must be no more than one title element per document とある) ↩ -
29秒あたりに出てきます: https://youtu.be/HCnWfCRFZpI?t=29 ↩