Ship Logo
Tech Blog Logo
2025/09/12

Claude CodeとGemini CLIを協業させてKinstaアクセスログの解析スクリプトを作成してみた

author picture

黒田達海

/

エンジニア

こんにちは!株式会社SHIPの黒田です!

最近はClaude Codeを実務で使うことが多くなっております!

今回は,Claude CodeとGemini CLIを協業させて作業効率化ツールの作成に挑戦してみたので,どんなことをやったのかご紹介したいと思います!

目次

はじめに

背景・きっかけ

愛聴しているRebuild.fmを聞いていたら、AI同士を協業させる話が出てきて「へぇ〜」と思ったのがきっかけです!

気になって調べてみたら、Claude Code × Gemini CLI連携でApacheログ解析スクリプトを作成した話という記事を見つけました。

Claude Codeの実装力とGemini CLIのレビュー・検索能力を組み合わせる手法が紹介されていて、参考にして「何か作れないかな?」と考えていました。

そこでふと思ったのが、普段の業務でよく扱うKinstaホスティングサービスのアクセスログのことです。

これまで解析するたびにClaude Codeにプロンプトを投げていたのですが、めんどうだなと思っていたのでこの機会に作ってみることにしました!

対象読者

今回Claude CodeとGemini CLIの環境構築については割愛しています。

この記事ではプロンプトを投げるような簡単なことしかやっていないので,息抜き程度に読んでもらえるとうれしいです!

Claude Code × Gemini CLI協業戦略の設計

それぞれの役割

今回Claude Codeには実装のメインを,Gemini CLIには実装のフォローやレビュワーを担当してもらいます。

Claude Codeはコードベース全体をちゃんと理解してくれるし、要求から実装への落とし込みがとても得意です。

Gemini CLIはWeb検索機能が強く外部知識との連携が得意な点を活かしてもらえそうです。

協業の進め方

参考記事を元に、このような感じの流れで進めることにしました:

  1. Claude Desktopで要件定義と設計(CLAUDE.mdの作成)をしてもらう
  2. その要件と設計に基づいてGeminiに設計・実装アプローチの提案をしてもらう
  3. 基本実装をClaude Codeに担当してもらう
  4. Claude CodeとGemini CLIにコードレビューをしてもらう

実装プロセス

1. 要件定義・設計フェーズ

まずはClaude Desktopで実装の要件を詰めていきます。

作成する解析ツールに求める機能として、以下を設定します。

  • HTTPエラー(4xx, 5xx)の自動検知と分類
  • リクエスト元ユーザーエージェントの分析(クローラー判定、攻撃パターン検知)
  • 統計情報の生成(エラー率、頻出IPアドレス等)
  • 人間が読みやすい形でのレポート出力

やりたいことをざっと書いてClaudeさんと対話しながら仕様書であるCLAUDE.mdを作成してもらいます。

Goによる高速処理でローカル実行し,ログファイルを人間が読みやすいマークダウン形式でレポートを出力する仕様のようです。

screenshot_1757430158.png

やりとりを何度か繰り返して生成されたCLAUDE.mdをプロジェクトフォルダに配置します。

2. 協業環境の構築

Geminiと相談して進めるようにする

実装を進める前に今回のネタであるClaude CodeとGeminiの協業設定をします。

記事を参考に以下のように,連携ルールをCLAUDE.mdの先頭に追記しました。

プロンプトを「Geminiと相談しながら...」とすると発動するトリガーを定義してプロンプトをgeminiコマンドに渡しています。

screenshot_1757603913.png

3. 実装フェーズ

実装スタート

Claude Desktopが生成してくれたCLAUDE.mdを基に、Go製のコマンドラインツールとして実装をスタートします。

Claude Codeを起動して,「Geminiと相談しながら,Kinstaの...」というプロンプトを実行してみます。

screenshot 2025-09-08 23.12.10.png

screenshot 2025-09-08 23.12.24.png

screenshot 2025-09-08 23.14.01.png

ふむふむ...ちゃんとGeminiと相談して仲良く実装を進めているように見えますね...!

途中で何度かエラーが発生していたようですが,それもClaude Codeが自動で解消させて,ものの10分くらいで完成してしまいました。

screenshot_1757651270.png

完成したツール

完成したプロジェクトがこんな感じです!

プロジェクト構造

tree kinsta_log_analysis/
kinsta_log_analysis/
├── CLAUDE.md
├── cmd
│   └── log-analyzer
│       └── main.go
├── config.yaml
├── docker-compose.yml
├── Dockerfile
├── go.mod
├── go.sum
├── log-analyzer
├── logs
│   └── sample-access.log
├── output
│   ├── analysis_report_20250908_142444.md
│   ├── analysis_report_20250908_232341.md
│   ├── analysis_report_20250909_141919.md
│   ├── analysis_report_20250909_230323.md
│   ├── analysis_report_20250909_231751.md
│   ├── analysis_report_20250909_232210.md
│   ├── analysis_report_20250909_232232.md
│   └── analysis_report_20250909_232509.md
├── pkg
│   ├── analyzer
│   │   ├── analyzer.go
│   │   └── stats.go
│   ├── config
│   │   └── config.go
│   ├── parser
│   │   ├── parser_test.go
│   │   └── parser.go
│   └── report
│       └── markdown.go
└── README.md

10 directories, 24 files

ログの読み込みから正規表現でのパース、統計情報の集計まで、一気通貫で実装してくれて感動しました...!

↓コードはGithubリポジトリに置いておきます。 https://github.com/tatsumi403/kinsta-log-analyzer

動作確認

Claude Codeがサンプルログでテスト実行までやってくれて,ちゃんと動作するものができたようなので自分でもローカルで実行してみます。

screenshot_1757607065.png

シンプルなコマンドで簡単にログの解析ができています!

主要機能

実装された主要コンポーネント:

  • ログパーサー(Kinsta Nginxログ形式・13フィールド対応)
  • HTTPエラー分類エンジン(4xx/5xxエラー検知・分類)
  • セキュリティ攻撃検知エンジン(SQLインジェクション・XSS攻撃パターン検知)
  • ユーザーエージェント解析器(クローラー・攻撃ツール識別)
  • 統計情報生成エンジン(時間別アクセス・IP分析・レスポンスタイム解析)
  • レポート生成器(Markdown形式・詳細分析レポート出力)
  • 設定管理システム(YAML設定ファイル・パターンカスタマイズ対応)

品質向上プロセス

AI協業でコードレビュー

せっかくなので,コードレビューもClaude CodeとGemini CLIに協力してやってもらうことができるか試してみました。

screenshot_1757607963.png

screenshot_1757608283.png

きちんとGemini CLIと相談してレビューができているようです!

(自分で実装したコードを「優秀」だと言えて偉い)

効果と振り返り

どれくらい楽になったか

まだ実際に運用してみないと正確な数字は出せませんが、従来の手動確認と比較して作業時間を80%くらいは短縮できそうです。

しかも、人間だと見落としがちな異常パターンも自動で検知してくれるので、サイトの安全性向上にも役立ちそうです!

協業してみて感じたメリット

今回の開発を通じて、AI同士の協業って本当にいいなと感じました!

  • 品質がめっちゃ上がった:一人(一AI?)では見落としがちな観点を、レビューで補ってもらえた
  • 新しいことを学べた:異なるアプローチや最新手法を教えてもらえて勉強になった
  • 開発スピードも向上:得意分野をしっかり分担できたので、全体的に早く進められた

課題もありました

もちろん良いことばかりではなくて、こんな課題もありました:

  • コンテキストの引き継ぎが大変:AI間で「前回の話」を共有するのに工夫が必要でした
  • 提案の取捨選択が難しい:たくさんの改善提案から「どれが重要?」を判断するのが大変
  • 人間のチェックは必須:最終的には人間による品質チェックと調整がやっぱり重要でした

引き続きこの手法を改良して、もっと効率的な開発ワークフローを作っていきたいと思います!

まとめ

Claude CodeとGemini CLIを協業させることで、一人では作りにくい高品質なツールを効率的に開発することができました!

AI同士の協業はまだまだ新しいアプローチですが、適切な役割分担をすることで大きな可能性を秘めていると感じています。

皆さんもぜひ試してみてください!この記事が誰かの役に立てたら嬉しいです!


参考資料

SHARE ON ❤️

関連記事