はじめに
前回の記事ではエラーが解決できないときの考え方と調べ方のコツを解説しました。その中で「AIに質問する」という選択肢を紹介しましたが、今回はAIツールをプログラミング学習とコーディング作業にどう活用するかをより詳しく解説します。ChatGPTやClaude(このブログを執筆するときに私も活用しています)をうまく使うことで学習効率とコーディングの生産性が大きく上がります。ただし「使い方を間違えると逆効果になる」という落とし穴もあります。両方をしっかり解説します。
1. AIツールの現在地を理解する
1.1 プログラミングで使えるAIツール
代表的なAIツール:
ChatGPT(OpenAI)
→ URL: chatgpt.com
→ 無料版・有料版(GPT-4oなど)
→ Web検索・画像認識・コード実行が可能
Claude(Anthropic)
→ URL: claude.ai
→ 無料版・有料版
→ 長い文章の処理が得意・コード生成も優秀
GitHub Copilot
→ エディタ(VSCode)に組み込んで使う
→ コードを書きながら次の行を自動補完してくれる
→ 有料(学生は無料プランあり)
Cursor
→ AIが組み込まれたコードエディタ
→ コードベース全体を理解した上で補完・修正してくれる
→ 有料プランあり
1.2 AIが得意なこと・苦手なこと
| 得意なこと | 苦手なこと |
|---|---|
| コードの説明・解説 | 最新のライブラリの情報(知識に期限あり) |
| よく知られたパターンのコード生成 | 自分のプロジェクト固有のコンテキスト理解 |
| エラーメッセージの原因説明 | 100%正確なコードの保証 |
| リファクタリングの提案 | 実行結果の動作保証 |
| 概念のわかりやすい説明 | 複雑なビジネスロジックの完全な理解 |
| コードレビューのフィードバック | セキュリティの完全な担保 |
⚠️ AIは「自信満々に間違える」ことがあります: AIが生成したコードは必ず自分で動作確認してください。「それっぽいコード」が出てきても実際には動かない・セキュリティ上の問題があることがあります。
2. 学習への活用:AIを「家庭教師」として使う
2.1 概念をわかりやすく説明してもらう
AIは同じ概念を何度でも・どんな角度からでも説明してくれます。
効果的な質問の例:
❌ 「Promiseとは?」
→ 教科書的な説明が返ってくるだけ
✅ 「JavaScriptのPromiseを、ピザの宅配に例えて
小学生でもわかるように説明してください。
その後、実際のコードで使い方を見せてください。」
→ 具体的なたとえ話+コード例がセットで返ってくる
✅ 「Promiseとasync/awaitの違いを教えてください。
どちらをどんな場面で使うか、
具体的なコード例で比較してもらえますか?」
→ 使い分けまで含めた実践的な説明が返ってくる
2.2 コードの意味を一行ずつ解説してもらう
前回の記事で解説した「読み解き」アプローチとAIを組み合わせます。
プロンプト例:
「以下のJavaScriptコードについて、
一行ずつ何をしているか初心者向けに
日本語で解説してください。
特に『なぜそう書くのか』の理由も
教えてもらえると助かります。
---
function debounce( fn, delay ) {
let timer;
return function( ...args ) {
clearTimeout( timer );
timer = setTimeout( () => fn.apply( this, args ), delay );
};
}
---
」
2.3 理解度を確認するクイズを出してもらう
プロンプト例:
「JavaScriptのPromiseについて
初心者向けの理解度確認クイズを5問作ってください。
条件:
・選択肢は4択
・正解とその理由の解説も付けてください
・難易度は易しい・普通・難しいを
それぞれバランスよく入れてください」
2.4 エラーの原因と解決策を教えてもらう
プロンプト例:
「以下のJavaScriptコードでエラーが出ています。
【コード】
const user = await getUser();
console.log( user.address.city );
【エラーメッセージ】
TypeError: Cannot read properties of undefined (reading 'city')
なぜこのエラーが起きているか教えてください。
また、解決策を3つ提示して
それぞれのメリット・デメリットも教えてください。」
3. コーディングへの活用:AIを「ペアプログラマー」として使う
3.1 コードのたたき台を作ってもらう
「ゼロから書く」のではなく「AIに下書きを作ってもらって自分で理解しながら修正する」というアプローチです。
効果的な使い方:
① AIにたたき台を生成してもらう
② 生成されたコードを一行ずつ読んで理解する
③ 理解できない部分はAIに質問する
④ 自分のプロジェクトに合わせて修正する
⑤ 動作確認する
❌ 良くない使い方:
AIが生成したコードをそのままコピーして動いた
→「なぜ動いたかわからない」→ 学習にならない
✅ 良い使い方:
コードを読んで理解した上で使う
→ 次回は自分で書けるようになる
3.2 効果的な依頼の書き方(プロンプト)
AIへの依頼の書き方で結果が大きく変わります。
❌ 曖昧な依頼:
「お問い合わせフォームを作ってください」
→ 何が返ってくるかわからない
✅ 具体的な依頼:
「ReactとTypeScriptを使って、
以下の条件のお問い合わせフォームを作ってください。
【条件】
・フィールド:名前(必須)・メール(必須)・メッセージ(必須・最大500文字)
・バリデーション:React Hook Form + Zod を使う
・エラーメッセージは日本語
・送信中はボタンを無効化してローディング表示
・送信成功後にフォームをリセットする
・スタイルはTailwind CSSを使う
【現在の環境】
・React 18
・TypeScript 5
・React Hook Form 7
・Zod 3」
3.3 既存コードのレビューをしてもらう
プロンプト例:
「以下のJavaScriptコードをレビューしてください。
確認してほしい観点:
① バグや潜在的な問題がないか
② パフォーマンス上の改善点
③ 可読性・保守性の改善点
④ セキュリティ上の懸念点
初心者向けにわかりやすく、
優先度(高・中・低)を付けて指摘してください。
---
(コードを貼り付ける)
---
」
3.4 リファクタリングの提案をしてもらう
プロンプト例:
「以下のコードをリファクタリングしてください。
目標:
・重複を削減する
・可読性を上げる
・関数を適切なサイズに分割する
リファクタリング前後のコードを両方示して、
何をどう変えたか・なぜそう変えたかを
日本語で説明してください。
---
(コードを貼り付ける)
---
」
4. AIと上手く付き合うためのコツ
4.1 「続きを聞く」を積極的に使う
AIとの会話は続けるほど文脈を理解して精度が上がります。
会話の続け方の例:
1回目:
「useEffectの基本を教えてください」
→ 基本的な説明が返ってくる
2回目:
「ありがとうございます。
では依存配列に関数を入れると
無限ループになる場合について詳しく教えてください」
→ より具体的な説明が返ってくる
3回目:
「その問題をuseCallbackで解決する方法と
useCallbackを使うべき場面・使わなくていい場面の
違いを教えてください」
→ さらに深い内容の説明が返ってくる
→ 1回の質問で全部聞こうとせず
「深堀りしていく」スタイルが効果的
4.2 AIへのフィードバックを使う
出力が期待と違ったときの対処法:
「説明が難しすぎます。
もっと簡単な言葉で、
具体的な例を使って説明し直してください。」
「生成されたコードが長すぎます。
必要最小限のシンプルなバージョンで
作り直してください。」
「TypeScriptの型が省略されています。
すべての変数・関数に型を付けた
バージョンに書き直してください。」
4.3 回答の正しさを検証する
AIの回答を検証する方法:
① 実際に動かしてみる
→ 「動いた」が最終的な正解
② 公式ドキュメントと照合する
→ AIの説明と公式の説明が一致するか確認する
③ 別の質問で矛盾を確認する
「先ほどの説明について、
別の観点から確認したいのですが…」
④ 複数のAIに聞いてみる
→ ChatGPTとClaudeで同じ質問をして
回答が一致するか確認する
5. AIを使った学習の落とし穴
5.1 「コピペ学習」になっていないか
危険なパターン:
AIにコードを生成してもらう
↓
コピーして動いた
↓
「できた!」と満足する
↓
2週間後…同じ機能を一から書けない
これは「AIが学習した」のであって
「自分が学習した」わけではない
正しいパターン:
AIにコードを生成してもらう
↓
一行ずつ読んで理解する
↓
理解できない部分を質問する
↓
コードを消して自分で書き直してみる
↓
詰まったところだけAIに確認する
↓
「自分で書けた」という達成感
5.2 「質問力」を磨かないと意味がない
AIを使いこなすには**何を聞くべきかわかる力(質問力)**が必要です。
質問力を磨くには:
・「何がわからないかわからない」状態から脱する
→ まず自分でコードを書いてエラーに当たることが大事
・基礎を自分でやってから詰まったところをAIに聞く
→ 基礎もAI任せにすると質問力が育たない
・AIの回答を理解しようとする姿勢を持つ
→ 「使えれば理解しなくていい」は長期的には損
5.3 セキュリティ・著作権に注意する
AIツール使用時の注意点:
⚠ 機密情報を貼り付けない:
・本番環境のAPIキー・パスワード
・個人情報・顧客データ
・会社の機密コード
→ AIサービスに送信した内容が
学習データに使われる場合がある
⚠ 生成されたコードのライセンスを確認する:
・AIが学習データのコードを
そのまま出力することがある
→ 商用利用する場合は特に注意
⚠ セキュリティレビューは別途行う:
・AIが生成したコードにも
脆弱性が含まれることがある
→ セキュリティが重要な部分は
専門家にレビューを依頼する
6. AIを活用した具体的な学習プラン
6.1 この連載の記事をAIと一緒に復習する
復習の手順:
① この連載の気になる記事を読む
② AIに「実際に試したい部分」について質問する
「この記事でuseCallbackを使う場面として
〇〇と書かれていましたが、
もう少し詳しく教えてもらえますか?」
③ AIが生成したコードを写経する
(コピペではなく自分で打ち込む)
④ 「作って壊す」で実験する
「このコードの〇〇を変えたらどうなると思いますか?」
→ まず自分で予測してから試す
⑤ わからなかった部分をAIに質問する
6.2 ミニプロジェクトをAIと一緒に作る
AIと一緒にプロジェクトを作るフロー:
Week 1:設計
「React + TypeScriptで
記事の読んだかどうか管理するアプリを作りたい。
どんな機能が必要か・どんな構成にすればいいか
初心者向けに教えてください。」
Week 2:実装(基本)
「まずトップページのコンポーネントから作ります。
読んだ記事のリストをlocalStorageに保存して
表示する部分のコードを教えてください。」
Week 3:実装(応用)
「基本機能ができました。
次にカテゴリでフィルタリングする機能を
追加したいのですが、どうすればいいですか?」
Week 4:レビュー
「完成したコードを貼ります。
改善できる部分を教えてください。」
7. 実践チェックリスト
✓ 概念の説明をAIに頼むとき「たとえ話+コード例」を求めているか
✓ AIに依頼するとき使っているライブラリ名とバージョンを伝えているか
✓ AIが生成したコードをコピペで終わらせず一行ずつ読んで理解しているか
✓ 理解できない行はAIに「この行はなぜこう書くのか」と質問しているか
✓ AIの回答を実際に動かして動作確認しているか
✓ 機密情報(APIキー・個人情報など)をAIに貼り付けていないか
✓ AIへの依頼に「条件・使用技術・環境」を具体的に含めているか
✓ 1回の質問で全部解決しようとせず「深堀りしていく」会話ができているか
まとめ
今回はAIツールをプログラミング学習とコーディングに活用する方法を解説しました。ポイントをまとめると:
- AIは「自信満々に間違える」ことがある・生成されたコードは必ず自分で動作確認する
- 学習面では「たとえ話+コードで概念を説明してもらう」「コードを一行ずつ解説してもらう」「理解度クイズを出してもらう」が効果的
- コーディング面では「たたき台を作ってもらって自分で理解しながら修正する」「コードレビューしてもらう」が効果的
- AIへの依頼は「目的・条件・使用技術・バージョン」を具体的に書くと精度が上がる
- 1回の質問ではなく「深堀りしていく」会話スタイルが効果的
- 「AIにコードを生成してもらってコピペ」はAIが学習しているのであって自分は学習していない
- 機密情報・本番のAPIキー・個人情報はAIに貼り付けない
- AIを使いこなすには「何を聞くべきか」という質問力が必要・質問力は自分でコードを書いてエラーに当たることで育つ
次の記事では、デザインツールFigmaの使い方をご紹介します。お楽しみに!
コメント