おはようございます!マネジメントオフィスいまむらの今村です。
GeminiもCLIベースのエージェントをリリースしたことが、この1週間ほどAI界隈を騒がせていますね。ぼくもGemini CLIを入れてみたのですが、Claude CodeとGemin CLIを連携させたいな~と思って、いろいろ調べてみたところ、うまく連携ができました!失敗経験も含めて共有します。
※この記事は2025/7/3に書いたものです。すぐに状況が変わり、記事の内容が過去のものになるかもしれません。
スポンサーリンク
Claude Codeが、Geminiに相談しながらコーディングを自動ですることを目指す
計画はシンプルです。Claude Codeを司令塔にして、バディであるGemini CLIにコードレビューを依頼する、というものです。そのための連携方法は、X(旧ツイッター)のこの方の投稿を参考にしました。(感謝)
最初の計画:ヒアドキュメントという「正攻法」の罠
この方のやり方は、UNIX/Linuxの標準的な機能である「ヒアドキュメント(Here Document)」を使うというものでした。具体的には、以下のコードをCLAUDE.mdに記述するというものでした。
CLAUDE.md
## Gemini CLI 連携ガイド
### 目的
ユーザーが **「Geminiと相談しながら進めて」** (または同義語)と指示した場合、Claude は以降のタスクを **Gemini CLI** と協調しながら進める。
Gemini から得た回答はそのまま提示し、Claude 自身の解説・統合も付け加えることで、両エージェントの知見を融合する。
---
### トリガー
- 正規表現: `/Gemini.*相談しながら/`
- 例:
- 「Geminiと相談しながら進めて」
- 「この件、Geminiと話しつつやりましょう」
---
### 基本フロー
1. **PROMPT 生成**
Claude はユーザーの要件を 1 つのテキストにまとめ、環境変数 `$PROMPT` に格納する。
2. **Gemini CLI 呼び出し**
```bash
gemini <<EOF
$PROMPT
EOF
これで連携するんなら簡単だな!とキラッキランランでコピペをしたのですが、予期せぬ警告が表示されます。
/bin/bash: line 51: warning: here-document at line 49 delimited by end-of-file (wanted `EOF`)
これは、「ヒアドキュメントの終了を示すEOF
が見つからないまま、ファイルの終端に達してしまった」というBashからの警告ですね。当初、「コピペをミスったかな?」と思っていましたが、原因はもうちょっと根深いところにありました。
問題の本質:コマンドの「仕様」という壁
といっても自分で原因分析ができるスキルなど到底ないので、当のClaude Code自身に原因調査を丸投げしただけですが、Claudeは自身の失敗を分析し、次のような結論を導き出しました。
- 構文エラーの可能性: ヒアドキュメントの終端処理に問題がある。
- 仕様の誤解: そもそも
gemini
コマンドは、ヒアドキュメントからの標準入力を受け付けず、-p
オプションでプロンプトを渡す必要がある。
つまりヒアドキュメントを使わないやり方じゃないとダメ、というシンプルなものでした。えっ?そうなの?と思いながら、言われるがまま、コードを修正しました。(なんで元の投稿主さんは、あれでできたんだろう?)
修正後のコードはこちら。
CLAUDE.md
## Gemini CLI 連携ガイド
### 目的
ユーザーが **「Geminiと相談しながら進めて」** (または同義語)と指示した場合、Claude は以降のタスクを **Gemini CLI** と協調しながら進める。
Gemini から得た回答はそのまま提示し、Claude 自身の解説・統合も付け加えることで、両エージェントの知見を融合する。
---
### トリガー
- 正規表現: `/Gemini.*相談しながら/`
- 例:
- 「Geminiと相談しながら進めて」
- 「この件、Geminiと話しつつやりましょう」
---
### 基本フロー
1. **PROMPT 生成**
Claude はユーザーの要件を 1 つのテキストにまとめる。
2. **Gemini CLI 呼び出し**
```bash
\ No newline at end of file
gemini -p "質問内容をここに記載"
\ No newline at end of file
方向の連携は可能か? アーキテクチャの違いという現実
ClaudeからGeminiを呼び出すことに成功したので「逆は可能なのか?」という疑問が湧きました。つまり、Gemini CLIにタスクを依頼し、その過程でClaude Codeに相談させることはできるか、ということですね。
早速試してみましたが、答えは明確な「ノー」でした。そして、その理由をGemini自身が非常に的確に説明してくれました。それは、両者のアーキテクチャの根本的な違いに起因するものだったのです。
- Claudeの連携方法:「外部の職人を呼ぶ」 ClaudeはMCPサーバーを通じて、OSのシェル機能を使い、自分とは独立した外部プログラム(今回の場合
gemini
コマンド)を呼び出すことができます。これは人間がターミナルでコマンドを打つのと同じで、非常に柔軟な連携方法です。 - Geminiの連携方法:「自分の道具箱を使う」 一方、Geminiは外部コマンドを自由に実行する能力を持ちません。その代わり、
playwright
(ブラウザ操作)やzen
(複数AIへの相談)といった、あらかじめシステムに深く統合された**「内部ツール」**だけを呼び出すことができます。Geminiが「相談する」と言うとき、それは外部のAIを呼ぶのではなく、この内蔵された専用ツールを使っているのです。
AIエージェント間の連携方法は、必ずしも技術的に対称的な関係ではないということですね(そりゃそうだろう)。片方向はできても、逆方向はできない。それは、それぞれのAIが持つ設計思想やセキュリティ思想の違いなんでしょうね。