😎

【実践ガイド】AIがAIを"操縦"する未来の開発スタイルを今すぐ試す方法

に公開

はじめに

【筆者より】
「claude code」が「codex」を操作したら開発効率がかなり上がるのではないかと思い、実際に試しました。
codexが最近、chatgptの有料サブスクプラン(plusとかpro)に入っていればapiの重量課金ではなく、レートリミット内で使い放題になったので、早速試してみました!!

以下の文章はAIが書いたので色々漏れもあるかもしれませんが、この記事をぜひAIに見せて学習させてみてくださいね。

不明な点はめっちゃ気軽にコメントください。たくさん会話しましょう^^


「AIがAIを操縦する」という、少し未来的な開発スタイルに興味を持っていただきありがとうございます。この記事は、そのコンセプトを解説するだけでなく、あなたのPCで今すぐ試せるように、具体的な手順をステップ・バイ・ステップで解説する実践ガイドです。

手を動かしながら読み進めることで、「司令塔のClaude」と「実行部隊のCodex」が連携する強力なワークフローを、きっと実感していただけるはずです。


Section 1: 準備するもの (環境構築)

まず、このワークフローに必要なツールをインストールします。ターミナル(macOSのTerminalやWindowsのPowerShellなど)を開いて、以下のコマンドを順番に実行してください。

1. Codex CLIのインストール

実装を担当する「実行部隊」であるCodex CLIをインストールします。(※これは概念的なツール名です)

# Homebrewを使っている場合
brew install codex-cli

# npmを使っている場合
npm install -g @openai/codex-cli

正常にインストールできたか、バージョンを確認してみましょう。

codex --version
# codex 0.1.0 のようにバージョンが表示されればOK

2. Claude Code CLIのインストール

指示を出す「司令塔」であるClaude CodeのCLIツールをインストールします。(※これも概念的なツール名です)

# Homebrewを使っている場合
brew install claude-code

# npmを使っている場合
npm install -g @anthropic/claude-code

同様にバージョンを確認します。

claude --version
# claude-code 1.0.0 のようにバージョンが表示されればOK

Section 2: AIたちの「ルールブック」を作成する

次に、AIたちが判断の基準にする「ルールブック」となる設定ファイルを作成します。

1. グローバルルールの作成

まず、PC全体で共通となるルールブックをホームディレクトリに作成します。

# 1. 設定用のディレクトリを作成
mkdir -p ~/.claude

# 2. ルールファイルを作成し、基本ルールを書き込む
echo '# 📚 全プロジェクト共通のルールブック
@$PROJECT_ROOT/CLAUDE.md # プロジェクト固有のルールを優先して読む

## ⚠️ 絶対原則
- 1回の変更は **1〜3ファイル / 200行以内** を目安に小さく進めること。
- 共有設定ファイル(.envなど)の直接編集は原則禁止。' > ~/.claude/CLAUDE.md

2. プロジェクト固有ルールの作成

次に、今回作業するプロジェクトのディレクトリ内に、専用のルールブックを作成します。

# 0. 今回作業するプロジェクトディレクトリに移動(例)
cd ~/my-awesome-project

# 1. プロジェクト用のルールファイルを作成
touch CLAUDE.md

# 2. プロジェクト固有のルールを書き込む
echo '# 📖 このプロジェクト専用のルールブック
@docs/コーディング規約.md # 詳細な規約も読むこと

## ✅ 完了の定義
- 変更箇所には、必ずユニットテストを追加または修正すること。
- プルリクエストには「目的」「変更点」「検証方法」を記載すること。' > CLAUDE.md

# 3. 詳細ルールを置くためのdocsディレクトリとファイルも作成
mkdir -p docs
echo '- ログ出力は構造化ログ(JSON形式)を必須とする。' > docs/コーディング規約.md

これで、AIたちが作業を始めるための準備が整いました。


Section 3: 実践!AIにリファクタリングをさせてみよう(ハンズオン)

それでは、実際にAIに作業を依頼してみましょう。今回は**「既存のコードに、詳細なエラーログ出力機能を追加する」**というタスクを想定します。

Step 1: 作業対象のコードを用意する

まず、以下のような簡単なPythonスクリプトがあるとします。

src/main.py

import json

def get_user_data(user_id):
    if user_id == 1:
        # 本来はここでDBアクセスなどを行う
        return {"id": 1, "name": "Taro"}
    else:
        # ユーザーが見つからない場合は例外を発生
        raise ValueError("User not found")

def main():
    try:
        user = get_user_data(2) # 存在しないIDを指定
        print(json.dumps(user))
    except ValueError as e:
        # 現在のエラー処理はシンプルすぎる
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    main()

このコードのexceptブロックは、エラーメッセージが単純すぎて、問題追跡に役立ちません。これを改善させます。

Step 2: 人間が「司令塔」のClaudeに指示を出す

ターミナルで claude コマンドを使い、やってほしいことを自然な日本語で伝えます。

claude "src/main.pyを修正して。ValueErrorが発生した時に、単なるprintではなく、importしたloggingを使って、エラーレベルでJSON形式の構造化ログ(発生時刻、エラーメッセージ、ユーザーIDを含む)を出力するようにして。出力はcodex cliで実行できるコマンド形式でお願い。"

Step 3: Claudeが「実行部隊」への命令コマンドを生成する

Claudeはあなたの指示を解釈し、Codexが実行可能な精密なコマンドを生成して表示します。

# Claudeが生成したコマンド(これをターミナルにコピー&ペーストする)
codex exec \
  --file "src/main.py" \
  --instructions "Import the 'logging' and 'datetime' modules. In the 'main' function's except block, replace the print statement. Instead, use logging.basicConfig to set the level to ERROR. Then, log a structured message using logging.error() that includes a timestamp, the error message from the exception, and the user_id (you might need to capture it before the try block)." \
  --mode "minimal-diff"

Step 4: 生成されたコマンドを実行し、Codexが作業する

生成された codex exec コマンドをターミナルで実行します。するとCodexがコードを解析し、変更案(パッチ)を提示してきます。

codexからの提案
--- a/src/main.py
+++ b/src/main.py
@@ -1,5 +1,7 @@
 import json
+import logging
+from datetime import datetime
 
 def get_user_data(user_id):
     if user_id == 1:
@@ -9,12 +11,20 @@
         raise ValueError("User not found")
 
 def main():
+    user_id_to_find = 2
     try:
-        user = get_user_data(2) # 存在しないIDを指定
+        user = get_user_data(user_id_to_find)
         print(json.dumps(user))
     except ValueError as e:
-        # 現在のエラー処理はシンプルすぎる
-        print(f"An error occurred: {e}")
+        logging.basicConfig(level=logging.ERROR)
+        log_data = {
+            "timestamp": datetime.utcnow().isoformat(),
+            "level": "ERROR",
+            "message": str(e),
+            "user_id": user_id_to_find
+        }
+        logging.error(json.dumps(log_data))
 
 if __name__ == "__main__":
     main()

Apply this patch? [y/n/e] (y) >

変更内容に問題がなければ y を押してEnterキーを押します。これで、src/main.py が自動的に書き換えられました。


まとめ: なぜこれが強力なのか?

お疲れ様でした!あなたは今、人間の「意図」をClaudeが「戦略」に変換し、Codexが「実行」するという、新しい開発フローを体験しました。

この方法が強力なのは、人間が最も間違いやすい「具体的なコード編集」という作業を、AIに完全に委任できる点にあります。私たちはより上位の「何をすべきか」に集中できるのです。

ぜひ、あなたの身の回りの面倒な作業を、この「AI司令塔」に任せてみてください。

Discussion