Pythonバイブコーディング講座 — Part 3

LLMでバイブコーディング

ChatGPTと対話してコードを書いてもらう

2026.04 Tomoaki Yamaguchi ← シリーズ目次へ

Part 2 で環境ができたので、ここからが本講座の真骨頂です。本パートでは、「やりたい解析」を日本語でLLMに伝え、Pythonコードを .ipynb ファイルとして書いてもらい、自分のVSCodeで実行するというスタイルを身につけます。コードが書けなくても、LLMに頼めば書いてもらえます。エラーが出ても、LLMに聞けば直してもらえます。この往復のスタイルを「バイブコーディング」と呼びます。

01 バイブコーディングとは何か

バイブコーディング(Vibe Coding)とは、コードを自分で書く代わりに、自然言語で意図を伝えてLLMにコードを書いてもらうコーディングスタイルのことです。「こういう解析をしたい」「このCSVを読み込んで列ごとに集計したい」と日本語で伝えれば、LLMがそのままPythonコードに変換してくれます。

本講座では、無料で使える ChatGPT(OpenAI)または Claude(Anthropic)を使えば十分です。どちらも無料プランで本講座の内容はすべて実行できます。

有料プラン(ChatGPT Plus、Claude Pro)にすると、より高性能なモデルが使えてコードの精度が上がります。ただし、まずは無料プランで十分です。慣れてきてから有料プランの導入を検討してください。

02 最重要:個人情報・非公開データの取り扱い

実際にLLMを使い始める前に、絶対に守ってほしい大前提を最初に確認します。読み進めるうちに「うっかり情報を送ってしまった」とならないよう、はじめにお伝えします。

絶対にLLMに送ってはいけないもの:
・実験データの生データ(特に被験者情報・個人を特定できる情報を含むもの)
・未公開の論文の本文・図表
・共同研究で守秘義務のある情報
・個人情報(氏名、住所、ID など)

LLMに伝えてよいのは、「データの構造(列名・列の意味・行数の概略)」だけです。例えば次のような書き方なら問題ありません。

sample_data.xlsx は、列が「個体ID」「バイオマス」「葉面積」「窒素含有量」の4列、行数は約100行です。それぞれ数値データ(個体IDのみ文字列)です。これを読み込んで、バイオマスと葉面積の相関を計算してください。

コードはあくまで自分のローカル環境で実行することを前提とし、LLMにはデータの形だけを伝えるのがコツです。実行は自分のPC内で完結するため、データ自体が外に出ることはありません。

「一時チャット」機能を使う選択肢

ChatGPTやClaudeには 一時チャット(Temporary Chat) という機能があり、会話の内容が学習データとして使用されず、チャット履歴にも残らない設定で会話できます。守秘性が気になる依頼や、研究室内の構造を相談する場合は、この機能の併用が有効です。

「一時チャット」を使っても、データそのものを送ることが推奨されるわけではありません。あくまで 送る情報を最小限にしたうえで、追加の安全策として一時チャットを併用する という考え方です。

03 バイブコーディングの起点:データの構造を抽出してLLMに伝える

Step 02 のとおり、データそのものをLLMに送ることはできません。一方で、データの構造(列名・型・行数など)をLLMに伝えないと、的確なコードを書いてもらえません。この矛盾を解決するのが、バイブコーディングの第一歩となる 「データ概要を自分の手元で抽出し、構造情報だけをLLMに伝える」 という二段階ワークフローです。これをやらずにいきなり依頼すると、LLMは想定と異なる列名や型を仮定したコードを出力してしまうため、必ずここから始めましょう。

手順

  1. LLMに「データの概要(列名・データ型・欠損値の有無・各列の範囲など)を出力するだけの短いコードを書いてください」と依頼
  2. もらったコードをVSCodeで実行
  3. 出力された結果(個人情報を含まない構造情報のみ)をコピー
  4. その結果をLLMに貼り付けて、「このデータ構造を踏まえて〇〇の解析をするコードを書いてください」と続きの依頼をする
まず最初に、データの構造を確認したいです。my_first_analysis/sample_data.xlsx を読み込んで、列名・各列のデータ型・欠損値の数・各数値列のmin/max/平均だけを出力する短いコードを書いてください。出力結果はあとであなたに貼り付けて、続きの解析を相談します。

実行結果(例:「列名は A, B, C で、A は数値、欠損値なし、minは0.5、maxは12.3...」のような情報)をLLMに貼り付けてから本番の解析を頼むと、LLMはデータ構造を踏まえた精度の高いコードを返してくれます。データの中身は一切送っていないので秘匿性も保てます。

04 いちばん大事:自分の意図を正確に体系立てて伝える

バイブコーディングで一番大事なスキルは、Pythonの文法を覚えることでも、便利なライブラリを知っていることでもありません。「自分が何をやりたいのか」を自分自身が精密に理解し、それをLLMに具体的・体系的に伝えることです。

LLMは万能ではありません。こちらの伝えた情報からコードを推測しているにすぎません。「データを集計してください」のような曖昧な依頼では、LLMもどう集計すればよいか判断できず、的外れなコードが返ってきます。逆に「列Aの値ごとに、列Bの平均と標準偏差を計算し、列A降順にソートしたうえで、結果をCSVファイルとして results/ フォルダに保存してください」のように具体的に伝えれば、ほぼ意図どおりのコードが一発で出てきます。

プロンプト(依頼文)に含めるべき情報のチェックリスト

目的:何のためにこの解析をするのか
入力:何が・どこに・どんな構造であるのか(Step 03 で抽出した構造情報を貼る)
処理:具体的にどんな計算・集計をするのか
出力:何を・どこに・どんな形式で保存するのか
制約:使ってほしいライブラリ、避けたい挙動など

このチェックリストを意識するだけで、LLMから返ってくるコードの精度は劇的に上がります。逆に、自分でも「やりたいこと」がぼんやりしていれば、何度LLMに頼んでも欲しい結果は出てきません。解析の半分は、コードを書くより前に「自分の意図を言葉にする」段階で決まると思ってください。

05 最初の依頼の仕方(.ipynbファイルを直接出してもらう)

ChatGPT(または Claude)を開いて、新しいチャットを始めます。現在のLLM(ChatGPT・Claudeとも)は、.ipynbファイル自体を直接出力してダウンロードできるようにしてくれます。コードを1セルずつコピペする必要はありません。最初の依頼で、明示的に「.ipynbファイルとして書き出して、ダウンロードできるようにしてください」と頼みましょう。

Web サーチを ON にすると精度が上がる:ライブラリの最新バージョンの仕様や、エラーの最新の対処法を参照したい場合は、ChatGPT 入力欄下の 「Web サーチ」アイコン(地球のマーク)を ON にして依頼すると、最新情報を踏まえた回答になります。Claude も同様の Web 検索機能があります。新しめのライブラリや、リリース直後のバージョン関連の質問では特に有効です。

Pythonでデータ解析をしたいです。

【目的】
新しい品種のバイオマスと葉面積の関係を確認したい。

【入力】
my_first_analysis/sample_data.xlsx
- 列:「個体ID」(文字列)「バイオマス」「葉面積」「窒素含有量」(数値)
- 行数:約100行
- (Step 03 で抽出した詳細な構造情報を貼る)

【処理】
- 列ごとの基本統計量を計算
- 「葉面積 vs バイオマス」の散布図を作成(回帰直線も重ね描き)
- 相関係数とp値も計算

【出力】
my_first_analysis/results/ フォルダを新たに作って、scatter.png(散布図)と statistics.csv(統計量)を保存。

【制約】
- 各セルに日本語の説明コメントをつけてください
- analysis.ipynb という名前で .ipynb ファイルとしてダウンロードできるようにしてください

LLMがファイルを生成してくれたら、画面にダウンロードリンクが表示されます。次の手順で取り回します。

  1. ダウンロードリンクから analysis.ipynb をダウンロード(通常は「ダウンロード」フォルダに保存される)
  2. エクスプローラ/Finder で、ダウンロードした analysis.ipynbPart 2 で作ったプロジェクトフォルダ(例:my_first_analysis/)の中に移動する
  3. VSCode でフォルダを開いた状態で analysis.ipynb をクリックすれば、そのまま実行できます

ダウンロードしたファイルをプロジェクトフォルダに置き忘れると、コード内の相対パス(例:"sample_data.xlsx")でデータを読めず、FileNotFoundError が出ます。必ずデータと同じフォルダ階層に置きましょう。

06 実行・部分修正・全書き直しの依頼

ダウンロードした analysis.ipynb を VSCode で開きます。上から順にセルを実行してください(Shift + Enter)。動作を確認しつつ、変更したいところがあれば、LLM に自然な日本語で頼みましょう。

部分修正の例

さっきの散布図のコードについて、以下を変更してもらえますか?修正した .ipynb を再度ダウンロードできるようにしてください。
・グラフのタイトルを「葉面積とバイオマスの関係(n=100)」にする
・点の色を緑色にする
・x軸とy軸のラベルを日本語にする

全部書き直しの例

アプローチを根本的に変えたい場合は、「コード全体を書き直してください」と頼みます。

さっきのアプローチではなく、seabornライブラリを使って散布図を描き直してもらえますか?回帰直線も重ね描きしてください。コード全体を書き直して、新しい .ipynb ファイルとしてダウンロードできるようにしてください。
07 エラーが出たときの対処

エラーは必ず出ます。むしろ初回でエラーが出ない方が珍しいです。エラーが出ても焦る必要はありません。エラーメッセージを丸ごとコピーして、ChatGPTにそのまま貼り付けるだけで対処できます。

さっきのコードを実行したら次のエラーが出ました。直してもらえますか?修正した .ipynb をダウンロードできるようにしてください。

---
FileNotFoundError: [Errno 2] No such file or directory: 'sample_data.xlsx'
---

LLM はエラー内容から原因を推測して、修正したファイルを返してくれます。修正版をダウンロードして再度実行する、というサイクルを繰り返してください。

よくあるエラーと対処の例

ModuleNotFoundError:必要なライブラリがない → ターミナルで pip install ライブラリ名
FileNotFoundError:ファイルパスが間違っている → ファイル名・場所を確認
KeyError:列名が間違っている → Excelの列名と完全に一致しているか確認
SyntaxError:コードの書き方ミス → LLMに修正依頼

08 必要に応じて:Pythonのバージョンを変える

解析を進めていくと、「このライブラリは Python 3.10 までしか対応していない」「あのライブラリは Python 3.12 以降が必要」のように、Pythonバージョンを変える必要が出てくることがあります。LLMがエラー解決の中で「Python 3.X を使ってください」と提案してくることもあります。

Pythonバージョンを変える場合の手順は次のとおりです。

  1. 古い仮想環境を削除する:プロジェクトフォルダ内の .venv フォルダをエクスプローラ/Finderで削除します(フォルダごと削除でOK)。
  2. 必要な別バージョンのPythonをインストールするpython.org/downloads から該当バージョン(例:Python 3.10)をダウンロードしてインストール。既存のPythonと共存できます。
  3. 新しい仮想環境を作る(バージョン指定):プロジェクトフォルダのターミナルで、Windows なら py -3.10 -m venv .venv、Mac/Linux なら python3.10 -m venv .venv を実行。
  4. 仮想環境に入って必要なライブラリを再インストール.venv\Scripts\Activate.ps1 でアクティベート → pip install ... でライブラリを入れ直し。
  5. VSCodeで Select Kernel から新しい .venv を選択

仮想環境は「使い捨て」できる作業部屋です。ためらわずに削除して作り直して大丈夫です。中身に大事な設定は何もありません。requirements.txt(Part 4で説明)さえ残しておけば、再現は簡単です。

09 バイブコーディングの典型的な流れ

実際の解析で繰り返されるパターンをまとめると次のようになります。

  1. データ概要を抽出してLLMに伝える(Step 03)
  2. やりたいことを自分の中で明確にし、構造化してLLMに伝える(Step 04・05)
  3. LLMが出した .ipynb をダウンロード・プロジェクトフォルダに移動・実行
  4. エラーが出る → エラーをLLMに貼って修正してもらう(Step 07)
  5. 動いたが結果が想定と違う → どう違うかをLLMに伝えて改良依頼(Step 06)
  6. 満足したら次の処理へ進む(また1に戻る)

この往復を続けていくうちに、「こう聞けばこういうコードが返ってくる」という感覚が身についてきます。Pythonの文法を覚える必要はありません。代わりに、「やりたいことをはっきり言語化する力」が鍛えられていきます。


このパートでできるようになったこと

次のPart 4では、ここまでで作った解析コード一式について、第三者が同じ環境で再現できるようにする「requirements.txt」の作り方を学びます。

Prev — Part 2 ← 環境構築 目次 Next — Part 4 再現性の確保 →