生成AI を使えば、Python のコードを書いたことがなくても 目的を伝えるだけでコードが返ってくる ようになりました。本記事では、株価分析の入り口として「サンプル CSV を読み込み、銘柄ごとに平均終値を出す」コードを、生成AI と協力して書く流れを最初から最後まで体験します。
目次
- 大切な原則
- サイクルの全体像
- ステップ 1. ゴールを言葉にする
- ステップ 2. プロンプトを書く
- ステップ 3. 返ってきたコードを保存する
- ステップ 4. 実行する
- ステップ 5. うまく動かないとき
- ステップ 6. 育てる
- 良いプロンプトと悪いプロンプト
- 生成AI に頼まない方が良い場面
大切な原則
- 生成AI は便利な相棒ですが、書いてくれたコードを読み・実行し・結果を確認する のは利用者の責任です
- API キー・パスワード・個人情報を 生成AI に貼り付けない(詳細は#2-8「API キーや秘密情報の安全な扱い方」 / #7-4「AI が書いたコードを安全にレビューする観点」)
- 出てきたコードに「公式ドキュメントに無い関数」が混じることがあります(#7-5「ハルシネーション(存在しない関数)への対処」)
これらを意識した上で、サイクルを始めます。
サイクルの全体像
生成AI と Python を書く流れは、次の 4 ステップを繰り返す形になります。
1. プロンプト ↓ 2. コード提示 ↓ 3. 実行 ↓ 4. 結果(または失敗) ↓ 1. プロンプト(修正依頼や次の依頼) ↓ ...これを 何往復かする のが普通です。一発で完成するコードを期待するより、修正を回して育てる感覚が近いです。
ステップ 1. ゴールを言葉にする
最初に「何をしたいか」を 1〜2 文で書き出します。今回のゴールはこうします。
stocks.csv に銘柄コード・日付・終値・出来高が入っています。 銘柄ごとの平均終値を計算して出力してください。
この文章はそのままプロンプトの素材になります。ゴールが曖昧だと、生成AI も曖昧なコードを返します。
ステップ 2. プロンプトを書く
ゴールを少し補足して、生成AI に投げるプロンプトに整えます。
Python のコードを書いてください。
【目的】stocks.csv の銘柄ごとの平均終値を計算して、コンソールに出力する。
【入力】stocks.csv (UTF-8、CSV ヘッダーあり)列: Date, Code, C, Vo
【出力】銘柄コードと平均終値を、銘柄コード昇順で表示。
【制約】- pandas を使う- pandas のバージョンは 2.2 系- インストールが必要なライブラリは、コードの先頭にコメントで記載「目的・入力・出力・制約」の 4 つを区切ると、ブレの少ないコードが返ります(詳細は#7-2「データ分析のためのプロンプト設計」)。
ステップ 3. 返ってきたコードを保存する
生成AI が返したコードを、エディタで mean_close.py として保存します。例として、こういうコードが返ってくるはずです。
# 必要: pip install pandasimport pandas as pd
def main() -> None: df = pd.read_csv("stocks.csv") result = ( df.groupby("Code")["C"].mean() .sort_index() .round(2) ) for code, mean_close in result.items(): print(f"{code}: {mean_close}")
if __name__ == "__main__": main()この時点でコードを 読んで意味を確認 します。groupby("Code") が「銘柄ごとに分けて」、.mean() が「平均を出す」、.sort_index() が「銘柄コード順にソート」していることが分かります。
ステップ 4. 実行する
仮想環境を有効化した状態で実行します。
(.venv) $ pip install pandas # 初回のみ(.venv) $ python mean_close.pyサンプルデータの中身次第で、次のような結果が出ます。
7203: 2901.679984: 9816.67ここで結果が 想定どおり であれば、サイクルはひと段落です。
ステップ 5. うまく動かないとき
コードが落ちたら、次のように生成AI に追記で投げます。
さきほどのコードを実行すると、こうエラーが出ました。
(エラーメッセージをそのままコピー)
実行環境は次の通りです:- Python 3.12.5- pandas 2.2.3
原因と修正版のコードを教えてください。エラーメッセージは 省略せずそのまま貼る のが鉄則です。先頭の Traceback も含めます(詳細は#7-3「エラーを生成AIに直してもらう作法」)。
ステップ 6. 育てる
最初の実装が動いたら、要件を足していきます。
さきほどの mean_close.py に次の機能を追加してください:
1. 平均終値だけでなく、平均出来高も出力する2. 結果を CSV ファイル output.csv として保存する3. 標準出力には件数だけを表示し、詳細はファイルに任せる「いま動いているコード」を起点に、変更点だけを伝えます。コード全体を毎回貼り直す必要はありません(必要なら生成AI 側から「現在のコードを再掲してください」と要求されます)。
良いプロンプトと悪いプロンプト
並べて比較します。
| 観点 | 悪い例 | 良い例 |
|---|---|---|
| ゴール | 「銘柄を集計して」 | 「銘柄ごとの平均終値と平均出来高を出力」 |
| 入力 | 暗黙 | 「列: Date, Code, Close, Volume」 |
| 出力 | 暗黙 | 「CSV と標準出力の使い分けを明記」 |
| 制約 | 無し | 「pandas 2.2、ライブラリは先頭にコメント」 |
慣れない最初は冗長に書いて構いません。プロンプトの長さは「修正回数」をしばしば短くします。
生成AI に頼まない方が良い場面
すべてを生成AI に任せるのは逆効果です。次のような場面では自分で読み書きするほうが早く・安全です。
- 5 行未満の単純な変更
- 公式ドキュメントを読めば 30 秒で分かる API の使い方
- API キー・トークンが関わる処理(誤って AI に貼ってしまうリスク)
- 機密性のあるデータの加工
逆に「初見のライブラリの使い方」「複雑な集計」「テストの追加」「リファクタリング」は、生成AI が大きな効果を発揮します。
まとめ
- 生成AI と Python のサイクルは「プロンプト → コード → 実行 → 修正」を何往復もする
- プロンプトには 目的・入力・出力・制約 を分けて書く
- エラーは Traceback ごとそのまま貼る
- コードの中身は読んで理解する。完全な代行は危険
- API キーや機密データは AI に貼らない