生成AI を使えば、Python のコードを書いたことがなくても 目的を伝えるだけでコードが返ってくる ようになりました。本記事では、株価分析の入り口として「サンプル CSV を読み込み、銘柄ごとに平均終値を出す」コードを、生成AI と協力して書く流れを最初から最後まで体験します。

目次

  1. 大切な原則
  2. サイクルの全体像
  3. ステップ 1. ゴールを言葉にする
  4. ステップ 2. プロンプトを書く
  5. ステップ 3. 返ってきたコードを保存する
  6. ステップ 4. 実行する
  7. ステップ 5. うまく動かないとき
  8. ステップ 6. 育てる
  9. 良いプロンプトと悪いプロンプト
  10. 生成AI に頼まない方が良い場面

大切な原則

これらを意識した上で、サイクルを始めます。

サイクルの全体像

生成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 pandas
import 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. 実行する

仮想環境を有効化した状態で実行します。

Terminal window
(.venv) $ pip install pandas # 初回のみ
(.venv) $ python mean_close.py

サンプルデータの中身次第で、次のような結果が出ます。

7203: 2901.67
9984: 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 に貼らない