ChatGPTをプログラミング学習に使ったら効率が3倍になった使い方5選

※本記事にはアフィリエイト広告が含まれます。

プログラミングの勉強にChatGPTを使い始めたのは2023年の春、GPT-4が公開されてすぐのことだった。それまでは「AIに聞くのは甘え」というなんとなくの気持ちがあって、エラーが出たらStack OverflowやQiitaを検索するのが普通だった。

でも使い始めてみたら、単純に「早い・丁寧・的外れが少ない」の三拍子が揃っていた。自分の学習速度が体感で3倍になったと感じるまでに1ヶ月かからなかった。この記事は、「プログラミング学習でChatGPTを使うと本当に効果的な使い方5選」を、実体験と具体例で紹介するものだ。

1. エラーメッセージの解説を求める

プログラミング初〜中級者が最も時間を無駄にする場面は「エラーを理解できずに詰まる」だ。特に英語のエラーメッセージは、意味は調べれば分かっても「なぜ自分のコードで発生しているか」が分からないことが多い。

使い方の例

Pythonでスクレイピングスクリプトを書いていたとき、こんなエラーが出た。

AttributeError: ‘NoneType’ object has no attribute ‘find’

Stack Overflowで検索すると「BeautifulSoupでselectした結果がNoneになっている」という情報は得られるが、「自分のコードのどこに問題があるか」は示してくれない。ChatGPTにはこう聞いた。

「以下のPythonコードを実行したら [エラーメッセージ] が出ました。原因と修正方法を教えてください。[コードを貼り付け]」

返ってきた回答は、「soup.find(‘div’, class_=’article’) がNoneを返しているため、その直後の .find() でエラーになっています。CSSクラス名が実際のHTMLと一致しているか確認してください」という具体的な説明だった。原因の特定まで5分かからなかった。

重要なのは「エラーメッセージだけでなくコードも一緒に貼る」ことだ。コードがなければ的外れな回答になることが多い。

2. コードレビューを依頼する

自分で書いたコードを「誰かに見てもらう」機会は、独学では全くない。スクールに通えばメンターに見てもらえるが、独学者には無縁だ。ChatGPTはコードレビュアーとして機能する。

使い方の例

Flaskで書いたユーザー認証機能のコードをChatGPTに貼って、「このコードのセキュリティ上の問題点と改善できる点を教えてください」と聞いた。返ってきた指摘は3点あった。

  1. パスワードを平文でデータベースに保存している(bcryptでハッシュ化すべき)
  2. SQLクエリを文字列結合で作成しているためSQLインジェクションのリスクがある
  3. セッションの有効期限が設定されていない

1番と2番は自分では全く気づいていなかった。実際に脆弱性のあるコードを書いてしまっていた。「動くコードを書ける」と「セキュアなコードを書ける」の間にある壁を、コードレビューによって認識できた。

プロンプトに「改善したコードも書いてください」と追加すると、修正例も出してくれる。読んで理解してから自分で書き直す、というプロセスが学習になる。

3. リファクタリングの提案をもらう

「動くコードを書く」の次のステップは「読みやすく・保守しやすいコードを書く」だ。これは独学で最も習得が難しいスキルで、実務経験がないと「なぜ今のコードが良くないのか」さえ分からない。

使い方の例

こんなコードを書いていた。

「クライアントから受け取ったデータを処理して、条件によって3つの異なる処理を実行する関数」を1つの関数に400行にわたって書いていた。動くことは動く。でも後で読み返すと何をしているか全く分からない。

ChatGPTに「このコードをリファクタリングしてください。可読性を重視して」と頼んだ。返ってきた提案は「単一責任の原則に基づいて5つの関数に分割する」「条件分岐をdictionaryに置き換えて削減する」というものだった。リファクタリング後のコードと、「なぜこの書き方の方が良いか」の説明も一緒に来た。

このプロセスで「関数は1つのことだけをする」「長い関数は分割する」という設計原則を、自分のコードを通じて学べた。

4. 学習計画の作成

「何を学べばいいか分からない」問題はプログラミング学習者の永遠の悩みだ。ChatGPTに学習計画を作ってもらうことで、この問題をかなり解消できる。

使い方の例

こんなプロンプトを送った。「私はPythonの基礎(変数・関数・クラス・ファイル操作)は理解していますが、Webアプリを作ったことがありません。6ヶ月でFlaskを使ったWebアプリを個人開発してポートフォリオにできる状態にしたいです。週10〜15時間の学習時間が取れます。ロードマップを月ごとに作成してください。」

返ってきたロードマップはこうだった。

  • 1ヶ月目:Flask入門・HTMLテンプレート・ルーティング
  • 2ヶ月目:データベース(SQLite→MySQL)・ORMとしてのSQLAlchemy
  • 3ヶ月目:ユーザー認証・セッション管理・パスワードハッシュ
  • 4ヶ月目:REST API設計・JSON・フロントエンドとの連携
  • 5ヶ月目:テスト(pytest)・セキュリティ(CSRF・SQLインジェクション対策)
  • 6ヶ月目:デプロイ(Heroku or Railway)・ポートフォリオ完成

このロードマップを自分で作ろうとしたら、何十時間もかかるか、そもそも作れなかったと思う。「自分のレベルと目標を具体的に伝える」ことがプロンプトのポイントで、漠然と「プログラミングのロードマップ」と聞いても使えない回答が返ってくる。

5. 概念の理解を自分の言葉で確認する

プログラミングには「なんとなく動いているけど、なぜ動くか分かっていない」という状態になりやすい。特に再帰処理・クロージャー・非同期処理・クラスの継承といった概念は、書いて動かしても「理解できた」とは言えないことが多い。

使い方の例

非同期処理(async/await)が「なんとなく使えてはいるけど、本質が分かっていない」と感じて、こう聞いた。「Pythonのasync/awaitを、小学生でも分かるような例えを使って説明してください。」

返ってきた例えは「コンビニのレジが1台しかないのが同期処理、複数台あるのが非同期処理」という例えではなく、「コーヒーを注文して、できあがるまでの間に別の作業をするのが非同期。注文してコーヒーができるまでずっとカウンターで待つのが同期」という日常の例えだった。

これで概念が「スッと」入ってきた。その後、自分の言葉で説明できるか確認するため「今の説明を聞いて、私の理解を確認したいのですが」と続けて自分の解釈を書いて送った。「合っていますか?」と聞くと、合っている部分・補足が必要な部分をフィードバックしてくれる。

使い方の注意点——ChatGPTを使う上で知っておくこと

  • コードをそのままコピペして使わない:ChatGPTが生成したコードが正しいとは限らない。必ず「なぜこう書くのか」を理解してから使う
  • 古い情報が混じることがある:特定のライブラリのAPIバージョンが古い情報を返すことがある。公式ドキュメントで照合する習慣を持つ
  • 「分かった気」になることへの注意:ChatGPTの説明が分かりやすすぎて、「理解した」→「実際に書けない」という状態になりやすい。説明を聞いた後は必ず自分でコードを書いてみることが重要だ

まとめ——ChatGPTはプログラミング学習の「専属メンター」になる

ChatGPTが登場する前のプログラミング独学は、「詰まったらGoogle検索・Stack Overflow・Qiita」が頼みの綱だった。それと比べると、「自分のコードを見た上で、自分の疑問に答えてくれる」ChatGPTは、専属メンターに近い存在だ。

5つの使い方の中で最も効果が高かったのは「エラーメッセージ+コードを貼ったデバッグ支援」だ。詰まる時間が劇的に短くなる。次いで「コードレビュー」が、「動くコードを書く」から「良いコードを書く」への成長を加速してくれた。

「ChatGPTを使うのは甘え」ではなく、「優秀なツールを使いこなすスキル」だ。むしろプロのエンジニアほど積極的に活用している。使わない選択肢はないと今では断言できる。

タイトルとURLをコピーしました