AI駆動開発(導入編)
プログラミングと生成AI
2025年現在、OpenAI o3を始めとする生成AI(LLM)は部分的なコーディングタスクで人間を凌ぐ精度を見せ始めている。既に一からコードを書く必要はほとんどなく、生成AIが出してきたコードを人間がレビューして仕上げるという開発スタイルが主流である。簡単な指示だけでAIエージェントが自律的にほとんどすべてのタスクをやってくれる未来もそう遠くはないと思われる。
一方で、生成AIは必ずしも完全なコードを出してくれるわけではない。LLMに確率的生成モデルを採用しているため、原理的にハルシネーション(もっともらしい嘘をつくこと)を起こしたり、可読性が低く保守しづらいコードや古いバージョンのコード、セキュリティリスクのあるコードを生成したりする可能性を含む。そのため、必ず人間によるチェックが必要になる。加えて、現実のソフトウェア要件は曖昧で変動しうるため、場面ごとのトレードオフに対する意思決定は人間が下す必要がある。そして、そのためには当然コードを読み書きでき、最終的な意思決定と品質保証をする人間が必要になる。
また、生成AIを「学習パートナー」として上手く活用すれば、状況に合わせてプログラミング学習をサポートしてくれる。生成させたコードに対して「このコードは何をしているのか?」、「なぜこのような書き方にしたのか?」、「他の書き方はないか?」「このコードをレビューして」などと深堀りしていくことで生成されたコードを深く理解できるようになる。自分の言葉で「なぜこのコードを採用したのか」を説明できるようになるまで深堀りできると効果的に学習を進められる。
AI学習の注意点
AIはプログラミング学習の強力な味方になるが、使い方を間違えると学習の妨げになったり、思わぬトラブルに繋がったりすることもある。AIを活用した学習の注意点を以下に示す。
AI駆動開発実践
AIのサポートを受けながら開発を進める手順を示す。実践時にはGitHub CopilotやCursorなどの他AIツールを使ってもよいが、ここでは生成AIへの入出力が分かりやすいようにChatGPTとのチャット形式で進めてゆく。出力結果をしっかりと理解して自分の状況に合わせて書き換えたり、追加で質問したりすることが最も重要である。なお、使用したモデルは括弧内に明記しておくが、無料で利用できる範囲のAIツールを用いても(出力精度は変わってしまうが)特に問題ない。
実践手順
プロンプト:
プログラミング初学者がPythonでテトリスを実装した後に、
更にステップアップするためにおすすめのアプリ開発の題材を提案して下さい。
そのアプリ開発でどんな技術が身につくのかも一緒に示してください。
テトリスと関連付けなくて構いません。
出力結果(model: OpenAI o3):output1
プロンプト:
「ToDoリスト」アプリを企画・開発しようとしています。
類似アプリや競合アプリをリサーチし、市場調査の結果をまとめてください。
出力結果(model:OpenAI DeepResearch):output2
プロンプト:
以下の「アプリの題材」と「市場調査結果」をもとに、
プログラミング初学者が作れる範囲で、
「ToDoリスト」アプリの要件定義書を作成してください。
▼アプリの題材
```
<アプリの題材をここに貼り付ける>
```
▼市場調査結果
```
<市場調査の結果をここに貼り付ける>
```
出力結果(model: OpenAI o3):output3
プロンプト例:
要件定義書から画面遷移図、データベース設計を作成してください。
```
<要件定義書をここに貼り付ける>
```
プロンプト:
要件定義書の内容を踏まえて、
プログラミング初学者にもわかるように具体的な実装手順を作成してください。
```
<要件定義書をここに貼り付ける>
```
出力結果(model: OpenAI o3):output4
プロンプト:
Phase 1 ― CLI × JSON(MVP)でやることを初学者にもわかるようにもっと具体的に書いてください。
出力結果(model: OpenAI o3):output5
プロンプト例:
以下のコードが何をしているのか一行ずつ順を追って教えてください。
```
<対象のコードをここに貼り付ける>
```
プロンプト例:
以下の要件がプログラミング初学者の私には難易度が高いです。
もう少し機能を落として、簡単に実装できる内容に修正してください。
```
<要件定義書をここに貼り付ける>
```
詰まったときの対処法
AIが生成する内容を理解できず、コードの量に圧倒されてしまうときなどは、基礎知識が不足している可能性が高い。そんなときは、まず「何がわからないか」を列挙して、知らない用語やライブラリを一つずつ調べて埋めていくと良い。例えばPyQt6ライブラリについて理解したいなら、生成AIに「PyQt6を使って、ボタンを押すと文字が変わるだけの最小サンプルをください」と頼み、コードを行ごとに確認しながら動かすと効率良く理解できる。
また、AI駆動開発による学習と並行して、書籍や公式ドキュメントなどで全体像を整理、体系化することも大切である。点で集めた知識を線につなげることで、次に同じような壁に当たっても自力で乗り越えられる「真の技術力」が身につく。