君たちはどう学ぶか:AI時代に感じた「勉強の難しさ」
はじめに
書くまでもなく、AI が身近に、そして日常的なものになってきていると思います。
個人的な見え方としては、今年に入ってからより一層日常的にも、そして仕事としても AI というキーワードを多く聞き、そして利用するようになった気がしています。
色々あって私はそんな時代に 1 ヶ月半ほど暇ができ、よっしゃ、なんか勉強するか!となったのですが、
「この時代の勉強って難しくない、、、?」
となったのでこの記事を書くことにしました。
今まで自分がしてきた勉強、そして違和感
まずは自分語りから。
私は未経験新卒でプログラマになりました。
入社当初は Proagate
や Rails Tutorial
で勉強はしていたものの、WEB アプリケーションとは何か、バックエンドとは?フロントエンドとは?といったことを理解していたかというと全くそうではなくただ手を動かしていたレベルでした。
そんな感じだったのでとにかく知識がなく、ひたすら業務に出てくるものやトレンドになっている技術をキャッチアップしたりしていき、どうにかこうにかプログラマとしてキャリアを進めていきました。
そんな私の勉強方法はシンプルで
1. 業務で触るが知らない、もしくは自分で興味のある技術等を貯めておく
2. それらからやるべき/やりたいことを決める
3. 公式ドキュメントなどを利用して自分で手を動かしていく
といった形でした。 とにかくがむしゃらに手を動かして学ぶ という感じです。
この期間もさて、いつものやり方で勉強をしようかな、と考えていたのですが、とあることから
「この勉強の仕方、今の時代にあってないかも...?」
と感じたのです。
AI エージェントを使って感じた、「今までの勉強が通用しない」という感覚
なぜそうなったかというと、AI エージェント、この時は Cursor
を触ったことがきっかけでした。
それまでも Copilot
や Gemini
などは利用していました。しかし Cursor
は業務的には使えずで、この機会に触ってみるか、となったのです。
その時にバックエンドとフロントエンドを TypeScript
で作成、型を共通にして、型安全なアプリケーションを作れないか?と以前から思っていたのを思い出して、 Cursor
に
Hono をバックエンド、 Next.js をフロントエンドとしたTODOアプリケーションをモノレポで作って
と雑にお願いしてみました。すると 20 分くらいでアプリケーションが出来上がりました 。
Hono
の RPC 機能を使えていない部分があり当初の目的とは違うアプリケーションができてはいましたが、動くアプリケーションとしては完成していたのです。
この時に、
「...あれ、もしかして今までの勉強をしていくのは違う...?」
となったのです。
違和感の理由
違和感の理由は単純明快で、 AI エージェントを利用したコーディングでは一切コードを書いてない というところにあります。
これは様々なところで言及されていることですが、 AI エージェントが「コーダー」を担っていきている というところになります。
もし人間が TODO アプリケーションでバックエンド、フロントエンドと両方を作ろうとした時はそれなりに時間がかかるかなと思います。早くても 1 時間程度はかかるのではないでしょうか。それが AI エージェントでは 20 分ほどで完成するのです。すごい。
さて、ここで私の勉強に戻ります。
今まで私がやってきた勉強は技術の コーディングのやり方 を覚える側面が強いことに気づきました。上で記載している
3. 公式ドキュメントなどを利用して自分で手を動かしていく
の部分です。
ですが、これから AI エージェントと開発をしていった場合に、 「コーダー」としての作業は担う部分が減る と予測ができます。
そのため今までの勉強では コーディングの能力は上げることができるかもしれないが、これからの時代に必要になっていくことはここではないだろう となったのです。
本題:「勉強の難しさ」
さて、ここまではとてもありきたりでみんなが書いていることかと思います。
ここからがようやく本題で、ここで自分は勉強の難しさ、というものを感じたのでそれを書いていければと思います。
「手を動かす」から「理解する」「深掘りする」
これまでは「手を動かす」という営みで「コーダー」としての勉強はできていました。
しかしその部分を AI エージェントが担うのであれば、そこは勉強の戦略としては正解と言えないでしょう。
AI エージェントに対して指示を出していく、という作業を担っていくとした場合は学ぶべきは
1. 仕組みを「理解する」
2. 仕組みを「深掘りする」
というものが必要になっていくのではないかと思います。
1. 仕組みを「理解する」
ここは今までとあまり変わらないのかなと思っています。
アプリケーションを作ろうとした時に、まずは基礎知識、そして言語やフレームワークといった 仕組みを「理解する」 という勉強が必要になると思っています。
基礎知識、というところについてはもし WEB アプリケーションを作るのであれば、WEB アプリケーションの開発ではどのようなものが必要になるか、という一般的なものになると思います。
雑に書くと、ユーザーのためのフロントエンドが必要で、ユーザーの情報を保持しておくためにデータベースが必要、フロントエンドからデータベースにアクセスするためのバックエンドが必要で、さらに公開するためにインフラが必要で、、といった WEB アプリケーションの構成 d だったりです。
また、少し発展的なところになると、ログインのために OIDC を学ぶ、といったこともあるかなと思っています。
言語やフレームワークというところでは、AI エージェントが生成したコードをレビューする営みのために必要かなと思っています。これは次の 2. 仕組みを「深掘りする」 につながる部分ですが、 AI が生成したコードを読み、理解できる必要がある ためです。
つまり総合して言えば、 作るための勉強 になるのかなと思います。
2. 仕組みを「深掘りする」
仕組みを「深掘りする」 は簡単に言えば、 専門性を高める 営みになります。
例を挙げると、 その分野での知識の深掘り といったものがこれに当たるのかなと思います。
こちらは直前の 仕組みを「理解する」
につながる部分がありますが、AI は時折セキュリティ的に懸念があるコードといったものを生成します。秘匿しておくべき情報が露出していたり、また、XSS ができてしまう状態にあったりなど。
こういった際の対応として、AI が生成したコードを読み、理解した上で、事前にその回避ができる、発生しても解消ができるような知識が必要になります。
仕組みを「理解する」
が作るための勉強であるのであれば、そこから先に進んだ、 解像度を高める、堅牢性を高めるといった 作りを良くする勉強 がこちらにあたるのかなと思っています。
言語化した上でも感じる「難しさ」
上で勉強することについては言語化が自分の中ではできたと思っています。
しかしながら、やはり勉強に対してはまだ「難しさ」を感じる部分が個人的にはあります。
それは 「速度」 と 「ボリューム」 です。
AI エージェントにより、「コーダー」の部分が解消されたことで、いってしまえば 知らない言語・知らないアーキテクチャ でも開発ができるようになりました。
しかしながら上で書くように、それらを把握する必要がある、かつ、深掘りをできねばならねばありません。
今までは手を動かす中でトライアンドエラーをしていき、緩やかにその勉強ができていたように思います。
その緩やかさが無くなった今、私、つまり 人間の速度は変わっていないが、勉強という営みの速度が上がってきたことで追いつけない というふうになってきたのが難しさとして感じています。
終わりに:それでも勉強は楽しい
色々と難しさについて言及してきましたが、今日も私は勉強をしています。
勉強という営みの速度感だったり、また、AI そのものの発展の速度も早く、少し難しさや疲弊は感じているものの、速度が上がったことで学べることが増えてきていたり、技術的なブレイクスルーが発生している場に立ち会えているというところで楽しさも感じています。
これからプログラマーというものがどのような形に変わっていき、どのような仕事になるかは分かりません。
ですが「人間は考える葦である」というように、勉強を通して考えていくことは決して無駄にはならないと思いながら、今日も勉強を進めていこうかなと思っています。
Discussion