Claude CodeとDockerでPythonのVibe Coding
従来、Pythonコードはすべての行を自分で入力して書く必要がありました。しかし、欲しいものを自然な言葉で説明するだけでコードが生成されたらどうでしょう?Vibe Codingは、コンピュータとの対話によってプログラミングを行う新しい手法です。あなたが実現したい結果を説明すれば、Claude Codeがコードを構築し、テストし、改良します。これは魔法ではなく、あなたがビジョンを示し、AIが実装を担う新しい作業方法です。このチュートリアルでは、自然言語による指示だけで古典的なIrisデータセットを分析する方法を紹介します。
主要な概念
- Vibe Coding - コードを1行ずつ書く代わりに、自然言語で実現したい内容を説明し、結果を見ながら改良を重ねるプログラミング手法
- Claude Code - 自然言語の指示に基づいてコードを生成、デバッグ、リファクタリングするAIコーディングアシスタント
- Irisデータセット - 3種類150個のアイリスの花の測定値を含む機械学習の古典的なデータセット
- 反復的改良 - Vibe Codingの中核パターン:説明 → テスト → 改良 → 動作版をコミット
必要なもの
ステップ1:新しいGitHubリポジトリを作成
- GitHub Desktopを開く
- File > New Repositoryをクリック
- 詳細を記入:
- Name:
iris-analysis - Description:
vibe codingで構築したIrisデータ分析 - Local Path: 場所を選択(例:ドキュメントまたは作業フォルダ)
- Initialize this repository with a READMEにチェック
- Name:
- Create Repositoryをクリック
- 上部のPublish repositoryをクリック
- 公開したい場合はKeep this code privateのチェックを外す(オプション)
- Publish Repositoryをクリック
ローカルGitリポジトリとGitHub上のバックアップができました。
ステップ2:Docker設定をコピー
Docker環境をセットアップするために、vibeプロジェクトの.devcontainerフォルダが必要です。
- エクスプローラー(Windows)またはFinder(Mac)を開く
- vibeプロジェクトフォルダに移動(例:
Documents/vibe) .devcontainerフォルダを見つける- フォルダ全体をコピー(
Dockerfileとdevcontainer.jsonが含まれています) - 新しい
iris-analysisフォルダに移動 .devcontainerフォルダを貼り付け
iris-analysisフォルダには以下が含まれるはずです:
.devcontainer/(コピーしたフォルダ)README.md(GitHub Desktopが作成).git/(バージョン管理用の隠しフォルダ)
ステップ3:コンテナでプロジェクトを開く
- VS Codeを開く
- ファイル > フォルダーを開くをクリック
iris-analysisフォルダに移動- フォルダーの選択をクリック
- 右下に通知が表示されます:Folder contains a Dev Container configuration file
- Reopen in Containerをクリック
- 通知が表示されない場合は、左下隅の緑色のアイコンをクリックしてReopen in Containerを選択
- VS CodeがDockerコンテナをビルドします(初回は3〜5分かかります)
- ビルドステップを示す進行通知を見る
- 完了すると、緑色のアイコンにDev Container: Python in Dockerと表示されます
ステップ4:Claude Codeを起動
- VS Codeでターミナル > 新しいターミナルをクリック
- これでDockerコンテナ内にいます
- このコマンドを入力してClaude Codeを起動:
claude
- 認証用のブラウザウィンドウが開きます
- Continue with GoogleまたはContinue with Emailをクリック
- Claudeアカウントでログイン(または作成)
- 認証が成功したら、VS Codeターミナルに戻る
- Claudeのウェルカムメッセージが表示されます
Claude Codeが実行中で、リクエストの準備ができました。
ステップ5:最初のVibe - データを読み込む
ここからが本番です。ドキュメントを調べる代わりに、実現したいことを説明するだけです。
Claude Codeで以下のように入力します:
scikit-learnからirisデータセットを読み込んで。適切な列名でpandas DataFrameに変換して。種名を列として追加して(数字だけではなく)。最初の10行を表示して。コードをiris_exploration.pyというファイルに保存して。
Enterを押すと、Claudeが以下の作業を自動で行います:
- データを読み込むPythonコードを生成
- 必要なインポート文を含むスクリプトを作成
- コードを実行して結果を表示
花の測定値と種名が表示される出力を確認してください。
これがVibe Codingです。ドキュメント検索も試行錯誤も不要で、説明してテストするだけです。
進捗を保存するには、Claudeに以下のように依頼するか、GitHub Desktopから手動でコミットします:
これらの変更をコミットして。
ステップ6:2番目のVibe - 要約統計
可視化を作成する前に、データの内容を把握しましょう。
Claude Codeで以下のように入力します:
irisデータの種ごとにグループ化した要約統計を見せて。各種について各測定値(がく片の長さ、がく片の幅、花びらの長さ、花びらの幅)の平均、最小、最大を見たい。これをiris_exploration.pyに追加して。
Enterを押すと、Claudeがスクリプトを更新して統計を表示します。 種によって測定値の範囲が異なることに注目してください。 例えば、SetosaはVirginicaよりもはるかに小さい花びらを持っています。
この探索により、データのパターンを理解できます。
変更をコミットするには、Claudeに依頼するか、GitHub Desktopから手動で行います。
ステップ7:3番目のVibe - ヒストグラムを作成
データを可視化しましょう。
Claude Codeで以下のように入力します:
全ての花の花びらの長さの分布を示すヒストグラムを作成して。20ビンを使用して。タイトルと軸ラベルを追加して。プロットをpetal_length_histogram.pngとして保存して。このコードをiris_exploration.pyに追加して。
Enterを押すと、Claudeが可視化コードを生成します。
プロジェクトフォルダにPNGファイルが作成されるので、petal_length_histogram.pngを開いて確認してください。
グラフに2つのピークがあることに注目してください。これは種によって花びらの長さが異なることを示しています。
ステップ8:4番目のVibe - 散布図
散布図で2つの変数の関係を見てみましょう。
Claude Codeで以下のように入力します:
x軸に花びらの長さ、y軸に花びらの幅を持つ散布図を作成して。各点を種ごとに異なる色で色付けして。どの色がどの種かを示す凡例を追加して。petal_scatter.pngとして保存して。これをiris_exploration.pyに追加して。
Enterを押すと、Claudeが散布図を作成します。
petal_scatter.pngを開いて結果を確認してください。
3つの種が明確なクラスターを形成していることがわかります。
特にSetosa(小さい花びら)は他の種から明確に分離されています。
これがVibe Codingの実践です。可視化を説明し、テストし、改良を重ねます。
ステップ9:5番目のVibe - 箱ひげ図
箱ひげ図でグループ間の分布を比較しましょう。
Claude Codeで以下のように入力します:
3つの種間で花びらの長さを比較する箱ひげ図を作成して。x軸に種、y軸に花びらの長さを配置して。各種に異なる色を使用して。タイトルを追加して。species_boxplot.pngとして保存して。これをiris_exploration.pyに追加して。
Enterを押すと、Claudeが箱ひげ図のコードを追加します。
species_boxplot.pngを開いて比較を確認してください。
箱が各種の中央値と四分位数を表しており、Virginicaが最も長い花びらを持つことが明確にわかります。
ステップ10:確認してコミット
コミットする前に、Claudeが構築したものを確認しましょう。
- VS Codeエクスプローラーで
iris_exploration.pyをクリックして開く - コードをざっと見る—インポート、データ読み込み、プロッティングセクションに注目
- 全ての行を理解する必要はありませんが、構造の感覚をつかむ
- すべてのPNGファイルが作成されたことを確認:
petal_length_histogram.png、petal_scatter.png、species_boxplot.png - GitHub Desktopを開く
- すべての新しいファイルがリストされている(PythonスクリプトとPNG画像)
- 左下のSummaryフィールドに入力:
ヒストグラム、散布図、箱ひげ図付きのIrisデータ分析
- Commit to mainをクリック
- Push originをクリックしてGitHubにバックアップ
最初の動作する分析を保存しました!
ステップ11:反復して改善
Vibe Codingは反復によって真価を発揮します。説明するだけで機能を追加してみましょう。
Claudeへのリクエスト例:
- 「4つの測定すべての相関関係を示すヒートマップを追加して」
- 「種間でがく片の幅を比較するバイオリンプロットを作成して」
- 「花びらの長さと幅の相関係数を計算して表示して」
- 「種を比較する統計検定の結果を追加して(ANOVAまたはt検定)」
- 「種ごとに色分けしたすべての変数の関係を示すペアプロットを作成して」
各機能を追加した後の流れ:
- スクリプトを実行してテスト
- うまくいったら、GitHub Desktopでコミット
- エラーが出たら、エラーメッセージをClaudeに伝えて修正を依頼
- 修正されたら、動作するバージョンをコミット
重要な原則:
- 実装ではなく結果を説明する - 「相関ヒートマップを表示して」と言い、「seaborn.heatmap()をdf.corr()で使って」とは言わない
- 素早く反復する - テスト → 改良 → テスト → 改良
- 動作するバージョンをコミットする - 新しい機能を試す前に各成功を保存
- 失敗を受け入れる - Claudeのコードが動かなくても、エラーを説明して修正を依頼するだけ
- 主導権を維持する - 何の機能を追加するか、優先順位、完成の判断はあなたが決める
毎回、説明 → テスト → 改良 → コミットのパターンに従いましょう。
次のステップ
- 異なるデータセットを試す - wineデータセット、digitsデータセット、またはCSVファイルの読み込みをClaudeに依頼
- より多くの可視化を探索する - ヒートマップ、ペアプロット、バイオリンプロットを試す
- 質問して学ぶ - Claudeがコードを生成したら、「この行は何をしているか説明して」と聞いてPythonを学ぶ
- 自分のデータに適用する - Vibe Codingを使って研究や業務のデータを分析
- Vibe Codingについて詳しく学ぶ - IBMのガイドでこの手法について深く理解する
トラブルシューティング
- プロットが表示されない - コードはプロットをPNGファイルとして保存します。プロジェクトフォルダで画像ファイルを探し、VS Codeで直接開いてください。
- インポートエラー - Dockerコンテナにはpandas、matplotlib、scikit-learnがプリインストールされています。エラーが出る場合は、Claudeにpipでのインストールを依頼してください。
- Claudeが間違える - 問題ありません。エラーメッセージをコピーしてClaudeに貼り付け、「このエラーを修正して」と依頼してください。Vibe Codingには反復とデバッグが含まれます。
- GitHubにプッシュできない - GitHub Desktopにログインし、リポジトリを公開済みであることを確認してください(ステップ1)。インターネット接続も確認してください。
- コンテナが起動しない - Docker Desktopが実行中であることを確認してください(緑色のステータス表示)。VS Codeの緑色のアイコンをクリックしてRebuild Containerを試してください。
ワークフロー概要
このチュートリアルでは、複数の技術を統合したワークフローを構築しました:
- GitHub Desktop - 視覚的なインターフェースでのバージョン管理(リポジトリ作成、コミット、プッシュ)
- Dockerコンテナ - すべての依存関係がプリインストールされた独立したPython環境
- VS Code - Dockerコンテナに接続するコードエディター
- Claude Code - 自然言語の説明からPythonコードを生成するAIアシスタント
- scikit-learn - Irisデータセットと機械学習ツールを提供するライブラリ
- pandas - データ操作と分析のためのライブラリ
- matplotlib - グラフ可視化のためのライブラリ
魔法は単一のツールにあるのではなく、Vibe Codingによって実現したいことを説明し、素早く反復できる点にあります。空のプロジェクトから複数の可視化を含む完全なデータ分析まで、手動で1行もコードを書かずに20分で完成させました。
Steven Geが2025年12月11日に作成。