株式会社MAKE A CHANGEのCEO・OkamuraさんがFacebookに書かれた記事で、Claude CodeとGemini CLIの連携手法を知り、実際に試してみました。
AIエージェント同士の協業という新しいアプローチに興味を持ち、Apacheログ解析スクリプトの開発を通じて、その実用性と威力を検証してみました。この記事では、2つのAIエージェントが協力してコード開発を行う過程と、得られた成果を共有します。
実際に取り組んでみて感じたのは、複数のAIエージェントを協力させて動く環境が手軽に作れることの面白さでした。技術的なハードルが低く、設定も比較的簡単で、すぐに試行錯誤を始められる点がとても印象的でした。
## 環境とセットアップ
### 使用環境
以下の環境で検証を行いました
- Amazon Linux 2023 (AL2023)
- Node.js 18+
- Python 3.11 (conda環境)
- Claude Code (事前にインストール済み)
### Gemini CLIのセットアップ
まず、Gemini CLIを使用可能な状態にするため、以下の手順でセットアップを行います
```bash
# Node.js 18のインストール
sudo yum update -y
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs
# Gemini CLIのグローバルインストール
sudo npm install -g @google/gemini-cli
# 初期設定(Googleアカウント認証)
gemini
```
(以下スクショです)

### Claude Code連携の設定
Okamuraさんの記事を参考に、プロジェクトルートに`CLAUDE.md`を作成し、連携ルールを定義します(参考までに。実際は2つ目のEOFの後にバッククォートが3つ続きます)
```markdown
## Gemini CLI 連携ガイド
### 目的
ユーザーが **「Geminiと相談しながら進めて」** と指示した場合、
Claude は以降のタスクを **Gemini CLI** と協調しながら進める。
### トリガー
- 正規表現: `/Gemini.*相談しながら/`
### 基本フロー
1. **PROMPT 生成**
Claude はユーザーの要件を1つのテキストにまとめ、環境変数 `$PROMPT` に格納
2. **Gemini CLI 呼び出し**
```bash
gemini <<EOF
$PROMPT
EOF
3. **結果の統合**
- Gemini の回答を提示
- Claude の追加分析・コメントを付加
```
この設定により、Claude Codeが特定のトリガーワードを認識して、自動的にGemini CLIと連携するようになります。
## 実際の連携開発プロセス
### Step 1: 要件定義の協議
最初に、連携のトリガーとなる指示を与えました
**私の指示:**
```
Geminiと相談しながら、効率的なApacheのアクセスログ解析スクリプト(python)を作成して
```
この指示により、以下のような連携フローが自動的に開始されました
**Claude Code の動作:**
1. 要件をまとめてGemini CLIに送信
2. Geminiから詳細な設計提案を受領
3. 両AIの知見を融合した開発計画を策定
以下、スクショです。

### Step 2: 追加要件の検討
初期要件に加えて、より実用的な機能を追加したいと考え、以下の追加指示を与えました
**追加指示:**
```
ディレクトリを引数で指定するだけでよいとの要件をお願い。
解析の切り口も様々加えて、期間は過去1日、過去1週間、過去1か月、すべてを選べるように
```
この指示に対して、Geminiから非常に詳細で実用的な設計提案が返ってきました
**Geminiからの提案(一部抜粋):**
```
効率的なApacheアクセスログ解析Pythonスクリプトの設計方針と、
具体的な実装案を提案します。
### 設計方針
1. ディレクトリパス指定による自動ログファイル検出
2. 並列処理による大容量ログファイルの高速処理
3. 豊富な解析項目とフィルタリング機能
4. 複数の出力形式対応(HTML/JSON/CSV)
```
### Step 3: 実装とテスト
Geminiの設計提案を基に、Claude Codeが実際のコード実装を行いました。最終的に以下のファイル構成で完成しました
**生成されたファイル構成:**
```
├── main.py # メインスクリプト(506行)
├── requirements.txt # 依存関係
├── README.md # 使用方法
├── test_logs/ # テスト用ログ
└── output/ # 出力ディレクトリ
```
## 開発されたスクリプトの特徴
Geminiの設計提案とClaude Codeの実装力が組み合わさって、以下のような高機能なスクリプトが完成しました。
### 1. 豊富な解析機能
以下のような多角的な分析が可能です
- **アクセス統計**: PV、UU、時間帯分析
- **リソース分析**: 人気ページ、ファイル種別統計
- **エラー分析**: ステータスコード別集計
- **ボット検出**: 検索エンジンボットの識別
- **地理的分析**: IP地域情報(GeoIP対応)
### 2. 柔軟な期間フィルタリング
期間を指定してログを絞り込み、必要な期間のデータのみを解析できます
```bash
# 過去1日
python main.py /path/to/logs --period day
# 過去1週間
python main.py /path/to/logs --period week
# 過去1か月
python main.py /path/to/logs --period month
# 全期間
python main.py /path/to/logs --period all
```
### 3. 複数の出力形式
用途に応じて3つの出力形式から選択できます
```bash
# HTML レポート(デフォルト)
python main.py /path/to/logs
# JSON形式(API連携向け)
python main.py /path/to/logs --output-format json
# CSV形式(Excel分析向け)
python main.py /path/to/logs --output-format csv
```
### 4. 高速処理
大容量のログファイルにも対応できるよう、以下の最適化が施されていました
- 並列処理による大容量ログファイル対応
- メモリ効率を考慮した逐次読み込み
- 正規表現の最適化
## 実際のテスト結果
開発したスクリプトの動作確認を行いました。
### テストログでの実行結果
conda環境をアクティベートして、実際にスクリプトを実行してみます
```bash
$ conda activate test
$ python main.py test_logs --output-format html
Apache Log Analyzer
Log directory: test_logs
Period: all
Found 1 log files
Processing test_logs/access.log...
Analyzed 15 log entries
Results saved to: output/
├── report.html # メインレポート
├── hourly_stats.html # 時間帯統計
├── top_pages.html # 人気ページ
└── error_analysis.html # エラー分析
```
### 生成されたHTMLレポートの内容
スクリプトが生成するHTMLレポートには、以下のような包括的な情報が含まれています
- アクセス概要(総PV、UU、期間)
- 時間帯別アクセス推移(グラフ)
- 人気ページランキング
- ステータスコード分布
- ボット・クローラー検出結果
- 地理的分布(IP範囲別)
## AI協業の威力と気づき
実際に2つのAIエージェントが協力して開発を進める過程で、以下のような価値を実感できました。
### 1. 知識の相互補完
それぞれのAIが持つ異なる強みが組み合わさることで、単体では得られない成果を得ることができました
- **Claude**: 実装の詳細とコード構造に強み
- **Gemini**: 最新のベストプラクティスと業界動向に精通
- **結果**: 両者の強みを活かした高品質なコード
### 2. 設計段階での多角的検討
設計フェーズで両AIが議論することで、より包括的で実用的な設計が生まれました
```
Claude: 「実装可能性とパフォーマンスを重視した設計を考えます」
Gemini: 「最新のライブラリ動向と効率的なアルゴリズムを提案します」
→ 理論と実践のバランスが取れた設計
```
### 3. エラー対応での協力
開発過程で発生した問題に対して、両AIが協力して解決策を見つけることができました
- NumPy互換性問題 → Claude が実装修正
- 依存関係の最適化 → Gemini が最新情報提供
- テスト方法の提案 → 両AIで分担
### 4. ドキュメント品質の向上
最終的なドキュメントも、両AIの知見を活かしてより充実したものになりました
- 技術的詳細(Claude担当)
- 使用例と応用方法(Gemini担当)
- 結果初心者からエキスパートまで対応
## 連携開発のコツ
実際に連携開発を行ってみて分かった、効果的な協業のためのポイントをまとめます。
### 1. 明確なトリガー設定
連携を開始するための明確なトリガーワードを設定することが重要です
```
「Geminiと相談しながら進めて」
「この件、Geminiと議論しつつやりましょう」
```
### 2. 役割分担の意識
それぞれのAIの得意分野を理解して、適切な役割分担を行うことが効果的です
- **設計・アーキテクチャ**: 両AIで議論
- **実装・コーディング**: 主にClaude
- **最新動向・ベストプラクティス**: 主にGemini
### 3. 段階的な開発
複雑なプロジェクトでも、段階的にアプローチすることで効率的に進められます
1. 要件定義での協議
2. 設計方針の合意
3. 実装とテスト
4. 改善とブラッシュアップ
## まとめ
株式会社MAKE A CHANGEのOkamuraさんの記事をきっかけに試したClaude CodeとGemini CLIの連携により、以下のような価値を得られました
**技術的成果:**
- 506行の高機能ログ解析スクリプト(1発でエラーなく動作しました)
- 豊富な解析項目と柔軟な出力形式(1ページにずらーっと書かれてましたが、冒頭の1行要件はちゃんと達成)
- 本番環境で使用可能な品質(・・・になるように改修していけるなーという手応え感)
**今後の可能性:**
- 他のAIツールとの連携拡大(ほかのCLIやMCPも連携させたい!)
- より複雑なプロジェクトでの協業(長文の要件書を提示して、「お互いに得意なところを分担してやって」などやると面白いかも)
- AI同士の専門性を活かした開発チーム構築(1年以内には、堅いものができてるでしょうね)
今回の取り組みを通じて、システムは見事に完成することが確認できました。ただし、今回のように協業させただけで品質が向上するかというと、そこには疑問も残ります。実質的には、人間が複数のエンジニアに作業を分担するのと同様に、複数のAIエージェントでコストの負荷分散を行っている状況なのではないかと感じています。
しかし、記述したように、それぞれが異なる得意分野を持ち、独自の情報やアプローチを有している場合には、AIエージェント協業の真の威力が発揮されるのだと思います。今回の事例では、(おそらく)Claudeの実装力とGeminiの最新情報・設計力という異なる強みが組み合わさったからこそ、単体では得られない成果を生み出すことができたように感じました。
また、CLIベースで動作するため、tmuxを活用することにより、オフィスでもスマートフォンからでも継続してAIエージェントと会話ができる点が非常に楽しいです。場所を選ばずに開発を継続できるこの環境は、本当に面白い時代の到来を感じさせます。
Okamuraさんが提唱されたこの手法は、AIを活用した開発の新しい可能性を示すものであり、多くのAIエージェントに触れられている方々にとって参考になると思います。今後のAIエージェントの将来性と発展がとても楽しみです。
この貴重な知見を共有していただいたOkamuraさんに、改めて深く感謝申し上げます。
なお、今回のClaude Code × Gemini CLI協業によって開発されたApache Log Analyzerを、参考のためにGitHubリポジトリで公開します。
## 参考リンク
- [Gemini CLI公式リポジトリ](https://github.com/google-gemini/gemini-cli)
- [Claude Code公式ドキュメント](https://docs.anthropic.com)
- [本記事で開発したApache Log Analyzer(GitHub)](https://github.com/daishir0/apache-log-analyzer)