3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code × Gemini CLI連携でApacheログ解析スクリプトを作成した話

Last updated at Posted at 2025-06-27

はじめに

株式会社MAKE A CHANGEのCEO・OkamuraさんがFacebookに書かれた記事で、Claude CodeとGemini CLIの連携手法を知り、実際に試してみました。

具体的には、AIエージェント同士の協業です。Apacheログ解析スクリプトの開発を通じて、その実用性と威力を検証します。実際に取り組んでみて感じたのは、複数のAIエージェントを協力させて動く環境が手軽に作れることの面白さでした。技術的なハードルが低く、設定も比較的簡単で、すぐに試行錯誤を始められる点がとても印象的でした。

環境とセットアップ

使用環境

以下の環境で検証を行いました

  • Amazon Linux 2023 (AL2023)
  • Node.js 18+
  • Python 3.11 (conda環境)
  • Claude Code (事前にインストール済み)

Gemini CLIのセットアップ

まず、Gemini CLIを使用可能な状態にするため、以下の手順でセットアップを行います

# 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

(以下スクショです)

image.png

Claude Code連携の設定

Okamuraさんの記事を参考に、プロジェクトルートにCLAUDE.mdを作成し、連携ルールを定義します(参考までに。正しくは2つ目のEOFの後にバッククォートが3つ続きます。エスケープ方法がわからず、すみません)

## 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の知見を融合した開発計画を策定

以下、スクショです。お互いに連携できていますね。

image.png

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. 期間フィルタリング

期間を指定してログを絞り込み、必要な期間のデータのみを解析できます

# 過去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つの出力形式から選択できます

# 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

実際のテスト結果

開発したスクリプトの動作確認を行いました。具体的に記載いたします。

テストログでの実行結果

conda環境をアクティベートして、実際にスクリプトを実行してみます

$ 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範囲別)

GitHubのREADMEにイメージを貼っています。ご参考にしていただければ。

連携開発のコツ

実際に連携開発を行ってみて分かった、効果的な協業のためのポイントをまとめます。

1. 明確なトリガー設定

連携を開始するための明確なトリガーワードを設定することが重要です

「Geminiと相談しながら進めて」
「この件、Geminiと議論しつつやりましょう」

2. 役割分担の意識

それぞれのAIの得意分野を理解して、適切な役割分担を行うことが効果的だと思います。人間世界と同じですね。

  • 設計・アーキテクチャ: 両AIで議論
  • 実装・コーディング: 主にClaude
  • 最新動向・ベストプラクティス: 主にGemini

3. 段階的な開発

複雑なプロジェクトでも、段階的にアプローチすることで効率的に進められます

  1. 要件定義での協議
  2. 設計方針の合意
  3. 実装とテスト
  4. 改善とブラッシュアップ

まとめ

株式会社MAKE A CHANGEのOkamuraさんの記事をきっかけに試したClaude CodeとGemini CLIの連携により、以下のような気づきを得られました

技術的成果:

  • ログ解析スクリプト(1発でエラーなく動作しました)
  • 解析項目と複数の出力形式(1ページにずらーっと書かれてましたが、冒頭の1行要件はちゃんと達成)
  • けっこうちゃんとした品質

今後の可能性:

  • 他のAIツールとの連携拡大(ほかのCLIやMCPも連携させたい!)
  • より複雑なプロジェクトでの協業(長文の要件書を提示して、「お互いに得意なところを分担してやって」などやると面白いかも)
  • AI同士の専門性を活かした開発チーム構築(1年以内には、もっとしっかりしたものができてるでしょうね)

今回の取り組みで、システムは見事に完成することが確認できました。ただし、今回のようにとりあえず協業させただけで品質が向上するかというと、そこには疑問も残ります。前述したように、それぞれが異なる得意分野を持ち、独自の情報やアプローチを有していて、しかも上手にそれらを考慮して互いにアサインをされるるのであれば、AIエージェント協業の真の威力が発揮されるのだと思います。もっと多様なAIエージェントが出てくることで、更に可能性は広がるでしょう。

別件ですが、CLIベースで動作するため、tmuxを活用することにより、オフィスでもスマートフォンからでも継続してAIエージェントと会話ができる点が非常に楽しいです。場所を選ばずに開発を継続できるこの環境は、本当に面白い時代の到来を感じさせます。

この貴重な知見を共有していただいたOkamuraさんに、改めて深く感謝申し上げます。

なお、今回のClaude Code × Gemini CLI協業によって開発されたApache Log Analyzerを、参考のためにGitHubリポジトリで公開します。ご興味ある方はアクセスされてください。

参考リンク

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?