AIを普段ガンガン利用する僕がAIを利用したプログラミング学習方法を考案してみた

# はじめに

こんにちは。主に**XにてAI駆動開発について発信している熊井悠**です！

https://x.com/qumaiu

プロジェクトマネージャーになってから早数年・・・

基本的に実装工程はメンバーに依頼しつつPMとしてコードを読むことが多くなっていたのですが、**AI駆動開発を利用した組織作りをする中で自分自身で実装する機会がかなり増え**ました。

そうした活動を続けていたところ**想定以上に知識が蓄積される**と気づいたので、そこから学んだプログラミング学習方法をまとめてみました！

> 補足：AI駆動開発
> AI駆動開発とは AIソリューション（CursorやWindsurfなど）を利用したシステム開発の通称です。最近は書籍も増えており一般化しつつある用語ではあります。

### 対象読者
- エンジニア初級者
- 実装経験を積みたい方

なるべく**簡単でシンプルな学習方法**にしてみます。

## 前提：僕が利用しているAIツール
コード生成系で利用しているAIツールとプランは下記の通りです。
個人的な検証用に契約しているものもあります。
- ChatGPT（法人でTeamプラン・個人でProプラン）
- Claude（Proプラン）
- Cursor（Business×2アカウント、Pro×1アカウント）
- Windsurf（Proプラン）
- Devin（Teamsプラン）
- v0（Premiumプラン）
- bolt.new（Proプラン）

このようなツール群を触ってきた経験も踏まえて書いていきたいと思います。

## プログラミング学習なら、このAIツール！
上記のうちローカルPCでのコードエディタ形式で提供しているものは下記です。
- Cursor（https://www.cursor.com/ja）
- Windsurf（https://windsurf.com/editor）

プログラミング学習をする上で僕が重要だと考えているのは
- **誰かのコードを読めること**
- **コードのフィードバックを受けられること**
- **自分の目的に沿ったお題（テーマ）をもとに進められること**

だと考えております。これをAIで実施できるか否かが一つのポイントです。
また、PC上で環境構築も含めて実施していくと考えると個人的にはCursorもしくはWindsurfが良いと思います。ツール特性を考えるとWindsurfの方がシンプルではあるのですが、実際に見て選んでいただければと！

## プログラミング学習における大原則

AIに関係なく大原則の考え方があります。それは『**パラシュート勉強法**』というものです。
下記のXのポストで116万インプレッションした内容なのですが「**先にやってみて、できないところを学ぶ**」という手法です。

https://x.com/qumaiu/status/1824592404151930953

僕は**IT系の知識をインプットする際は必ず上記の方法を取っています**。
また、パラシュート勉強法という名前の通り「あと数分でスカイダイビングするという差し迫った状況下であれば、スポンジのようにパラシュートについて学習することができる」というように、追い込むことも重要だったりはします。

**理想は社内の勉強会などで講義をする予定を組んでしまう**など発表せざるを得ない状況に置いてみると学習効率はあがります。

それではステップを追って紹介しましょう。

## STEP1. 何を勉強するか決める

最初に決めるのは「何を勉強するか？」です。
プログラミング学習という名を付けているのだからプログラミングに決まっている！という声も聞こえてきそうですが、その先に実現したいことを思い浮かべてみてください。

- プロジェクトで必要だから
- 自身のステップアップのため
- 個人開発のため

など理由があると思います。
今一度**その学習対象が目的達成に必要なものか**は自問自答といいつつAIに相談してみてください。遠回りせず最適なロードマップを描きましょう！

## STEP2. いきなり直結するテーマで進める

パラシュート勉強法の方法論を採用するため、最初のステップは「**開発したいものを作ってみる**」です。

書籍だと関係ないプログラムだったりするのでここが大きな差だと思います。

例えば、僕は以前、仮想通貨のウォレットアプリを作るプロジェクトにアサインされる可能性があり、慌ててブロックチェーンの実装方法を学んだことがあります。当時は簡単なサンプルだけだったのですが、今回は実際に作るものをイメージしてまずは実装方針を立ててみましょう。

### ① 実装方針をAIに聞いてみる

AIのチャットプロンプトに「**●●システムを構築したい。そのためにはどのような実装方針を取るか？**」と質問してみましょう。試しに「仮想通貨のウォレットアプリ」の例で聞いてみます。

かなり大雑把ですが下記の回答が得られました。（CursorのAskモード）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4038495/e28a1746-3648-4e55-a52f-bcf26f932d7b.png)
※プログラミング学習なのでプログラミングのところ以外は一旦見なくてもOKです。

### ② できそうなこと/できなそうなことで分類してみる

生成された実装方針のうち「**できそうなこと/できなそうなこと**」で分類してみましょう。

先ほどの例では
- バックエンド：JavaScriptならできそう
- フロントエンド：React + Electronはよくわからない

という結論だったとします。

###  "でき"そうなものへのアプローチ
実装方針をもっと細分化していきます。
80%近くできそうであれば「**そのままコーディング**」してみます。そして**実装をしつつAIにコードレビューを適宜してもらい**ましょう。

下記が詳細な実装方針を聞いた例です。（CursorのAskモード）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4038495/76926bb0-e31d-4b20-b529-520bf49ef5a5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4038495/097ea72c-3b6b-4e9a-aab6-4cf3c68e171c.png)

コードレビューをAIにしてもらったら足りない知識を補って進めていきましょう。これで80%をなるべく100％に近づけるようにします。

特に経験者でも思いもよらない実装方針やライブラリ選択などあると思うのでそういった情報を血肉に変えていきます。

### "できな"そうなものへのアプローチ
次に難しそうなものへのアプローチです。こちらも実装方針を細分化していきます。
実装の流れを理解したら「**AIにコード生成**」してもらいます。できそうなものとの違いはここです。**まずはコードを読んでみましょう**。

実装方針を聞いたときの結果↓（CursorのAskモード）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4038495/7df8eeaa-1b0c-46a8-ba14-fcc2a5322697.png)

AIによるコード生成を実行してみた結果↓（CursorのAgentモード）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4038495/ef2fd804-3bde-404a-a693-2e27987e88c3.png)

ここで生成されたコードを読んで「不明点」を確認します。
不明点がある箇所のコードに対してAIに「これはどういう意味？どういうプログラミング文法なの？」と聞きます。

下記のようなイメージです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4038495/68c581db-f9d1-4b2f-ba75-23d1dfc1c6b6.png)

このようにどんどん知識をつけていきます。
不明点の解消だけじゃ難しい場合は、AIにチャットで「どのように見れば自身の学習につながるか？」を聞いてみることをおすすめします。

### まとめると
さて上記で説明した分類を整理すると
- "でき"そうなもの：ゴリゴリ書いてレベル上げ
- できな"そうなもの：質問しながら知識補填

というアプローチをひたすら繰り返していくことになります。
学習する言語は変えず愚直に上記を繰り返して「見慣れた」レベルまで持っていきましょう。

## ③ 書籍/技術ブログで知識の体系化をする

③は実は②が完了してからよりも、**並行しながら進めることが効果的**です。
書籍などは最初に読むイメージが多いと思いますが、**コードを先に眺めた状態で書籍を読むと頭にスルスル入ってくる**ようになります。

移動中、寝る前などPCを開けない状態では書籍や技術ブログなど読み物を中心に学習して「これってこういうことか！」や「バラバラな知識だったけどこういう意図があったのか！」というような発見をしましょう。※「アハ体験」と言います

ちなみに僕は本だけでなく自分で書いたコードをGitHubに格納して寝る前に読み返したりしています。

# おわりに

以上がAIを活用した学習方法です。
もっと具体的なところまで書くと言語や対象領域で細々とあるのですが、**なるべく普遍的なものにしたかったのでシンプルに**書いてみました。ぜひ応用編などは考えて取り組んでいただければと思います。

---

普段はXでAI駆動開発の組織論などについて語っているのでぜひ未フォローの方はフォローしてもらえると嬉しいです！また『クマイ総研』というAI駆動開発のコミュニティ運営もしています。月に2～3日しか募集していないのですが気になる方がいればぜひチェックを！

https://x.com/qumaiu

ではでは、皆さんの貴重なお時間でお付き合い頂きありがとうございました！
クマイでした～