GoogleのGemini CLIが公開されたので、試しがてら Claude Code にも同じ指示を出し実際のプロジェクトの技術調査というタスクで比較検証してみました。
わたしが趣味で作った既存のRemixプロジェクトを題材に、それぞれのAIエージェントに技術スタックの分析と改善点の提案を依頼します。
その過程と結果から見えてきた両者の特性と、将来的な共存の可能性について考察してみます。
本記事は Gemini が生成した文章が混ざっています
筆者の意見が反映されている箇所は「共存の可能性」に記載されている内容が主となります
時短希望の方は上記セクションまで飛ばして御覧ください
- このプロジェクトの技術スタックについて説明をして。さらに技術的な改善点を調査して調査結果を説明してください
- 以下の内容を盛り込んだ報告資料をマークダウン形式で作成してください
- 調査観点とその調査方法
- 調査結果とその説明
- 課題の内容と優先度を踏まえた改善計画
- あなたに調査報告してももらったのと同様に[other-command]を使って調査及び報告を記載した、`技術調査報告書X.md`があります。あなた自身の`技術調査報告書Y.md`と比較し、同意できる点と指摘が必要な点をあげてください
まず、Gemini CLIにプロジェクトの技術スタックの説明と改善点の調査を依頼しました。
実行過程の抜粋
✦ Gemini CLIは、まずプロジェクトの概要を把握するためにREADME.mdを読み込みました。
╭────────────────────────╮
│ ✔ ReadFile README.md │
╰────────────────────────╯
✦ 次に、package.jsonを読み込み、依存関係の状況を確認しました。
╭───────────────────────────╮
│ ✔ ReadFile package.json │
╰───────────────────────────╯
✦ さらに、npm outdatedコマンドを実行して、古いパッケージを特定しました。
│ ✔ Shell npm outdated (Check for outdated npm packages.)
│
│ Package Current Wanted Latest Location Depended by
│ @radix-ui/react-dialog 1.1.11 1.1.14 1.1.14 node_modules/@radix-ui/react-dialog poke-quiz-for-sons
│ @radix-ui/react-slot 1.2.0 1.2.3 1.2.3 node_modules/@radix-ui/react-slot poke-quiz-for-sons
│ (省略)
✦ 最後に、app/utils/pokemon-api.tsの内容を確認し、axiosの使用状況を把握しました。
╭───────────────────────────────────────╮
│ ✔ ReadFile app/utils/pokemon-api.ts │
╰───────────────────────────────────────╯
✦ これらの情報から、Gemini CLIは技術スタックの概要を説明し、
- 依存関係の更新
- axiosからfetchへの移行
- 態管理ライブラリの導入検討
という3つの改善点を提案しました。
※ 生成されたマークダウンファイルは割愛します
次に、Claude Codeに同様の技術調査を依頼しました。Claude Codeは、より広範な調査観点と詳細な分析を行いました。
タスクを実行するためのTODOを計画し、Gemini CLI が確認をした以上の内容を調査しました。
実行過程の抜粋
Claude Codeは、npm audit
やnpm outdated
といったコマンドの実行結果を基に、セキュリティ脆弱性や依存関係の状況を詳細に分析しました。
また、コード品質、テスト体制、アクセシビリティ、SEOといった多岐にわたる観点から調査を進めました。
✦ その工程を詳述するのは大変なのでスクリーンショットで示します(AIエージェントにサボられると自分が大変になります)
これまでの内容をもって、以下の考察をしました。
両者の調査結果と実行過程を比較すると、それぞれのAIエージェントの特性が浮き彫りになります。
その内容と活用について検討します。
Gemini CLI の特性:大きなコンテキストを扱う優位性とその抑制
Gemini CLIは、ユーザーから与えられた情報(今回の場合はREADME.mdやpackage.jsonの内容)を基に、関連性の高い情報を効率的に収集し、分析する能力に長けています。npm outdated
の実行結果から依存関係の古さを的確に指摘し、axios の使用状況からRemixのベストプラクティスへの準拠を提案するなど、与えられたコンテキスト内で論理的に思考し、課題を特定する能力は非常に高いです。
しかし、Gemini CLIは無闇にコンテキストを広げようとはしません。
ユーザーが明示的に指示しない限り、例えば npm audit
のような追加の調査コマンドを自発的に実行することはありませんでした。
これは、ユーザーの意図を尊重し、不要な情報収集を避けるという設計思想の現れかもしれません。
大きなコンテキストを扱える優位性がありながらも、それを無闇に広げずユーザーの指示に忠実に従うことで、効率的な対話を実現しようとしているように見受けられます。
Claude Code の特性:開発者のUXに寄り添ったアプローチ
一方、Claude Codeは、開発者のUXに深く寄り添ったアプローチを見せました。
技術スタックの分析だけでなく、コード品質、セキュリティ、テスト体制、アクセシビリティ、SEOといった多岐にわたる観点から自律的に調査範囲を広げ、詳細な分析を行いました。
特に注目すべきは、npm audit
の実行結果を基にした具体的なセキュリティ脆弱性の指摘や、Reactの最適化不足、テストコードの完全な不在といった、開発者が実際に直面するであろう具体的な課題を明確に提示した点です。
さらに、それらの課題に対して、緊急度と影響度を考慮した優先順位付けを行い、対応期間の見積もりも含めた具体的な改善計画(フェーズ分け、週ごとのタスク、リスク管理)まで提示しました。
これは、単なる情報提供に留まらず開発者が次のアクションに移りやすいように、コンテキストを広げながらも具体的な解決策まで踏み込んでアプローチしていると言えます。
上記を踏まえた本記事の重要ポイントは下記です
今回の比較を通じて、Gemini CLIとClaude Codeは異なる強みを持っていることが明らかになりました。この特性を活かすことで、以下のような共存の仕方が考えられます。
Gemini CLI をオーケストレータ的な立ち位置に据える
Gemini CLIは、ユーザーの指示を正確に解釈し、全体的なタスクの進行を管理する「司令塔」としての役割に適しています。
大きなコンテキストを扱う能力を活かし、プロジェクト全体の状況を俯瞰し、適切なタイミングで各AIエージェントに指示を出すことができます。
Claude Code に一定の自由さを与え、遊撃手的にコンテキストを拡げながらタスクの実行計画を検討する
Claude Codeは、開発者の視点に立ち、自律的に調査範囲を広げ、具体的な課題と解決策を提示する「遊撃手」としての役割に適しています。
Gemini CLIからの大まかな指示を受け、その中で自身の判断で必要な情報を収集し、詳細な実行計画を立案する役割を担うことができます。
Gemini CLI が Claude Code から集まってくる大きなコンテキストをWeb検索できる優位性との相乗効果で判断を行う
Gemini CLIはWeb検索能力も持っているため、Claude Codeが収集したコードベース内の情報と、Web上の最新情報やベストプラクティスを組み合わせることで、より高度な判断を下すことが可能になります。
各タスクの実行部隊はコーディング性能が高いと言われる Claude Code に任せる
Claude Codeは、具体的なコードの改善提案や実装計画の立案に長けているため、実際のコーディングやリファクタリングといったタスクの実行部隊として適しています。
受入試験は試験結果とそのエビデンスを Gemini CLI が担うとかも面白そう
Gemini CLIの正確性と論理的思考能力を活かし、Claude Codeが実装した機能の受入試験を行い、その結果とエビデンスを生成する役割を担うことも考えられます。これにより、開発プロセス全体の品質保証を強化できます。
Gemini CLIとClaude Codeは、それぞれ異なる強みを持つAIエージェントです。
Gemini CLIは広範なコンテキストを効率的に扱い、ユーザーの指示に忠実に従うオーケストレータとしての可能性を秘めています。
一方、Claude Codeは開発者の視点に立ち、自律的に詳細な調査と具体的な改善計画を提示する遊撃手としての能力を発揮します。
これら2つのAIエージェントを適切に組み合わせることで、開発プロセス全体をより効率的かつ高品質に進めることができるでしょう。
AIエージェントの進化は目覚ましく、今後の開発現場での活用がますます楽しみです。
AIエージェントの各特性に応じた活用については、アーキテクチャ設計や組織設計に通じたアプローチをできる練度によって精度を高める可能性があると感じています。
- 最終的に記事の叩き作成を Gemini CLI に任せたが無課金なのでレートリミットに遭遇してもどかしかった
- その過程の中で
touch ./article.md
とか指示しても応答が長く不可解だった
- その過程の中で
- 記事に盛り込みたい内容粒度の調整が難しく、最終的に結構な手数で自身での編集判断が必要だった
- 結果的に、AIに記事を書かせようと楽をしようとしたものの、労力は必要だった(まあでもコンテキストの大きさを考えれば省エネなのだろう)
- 共存をさせるための挙動を実行してみたかったものの、現時点では盛り込めなかったのはごめんなさい
- 近い内に同様のケースを実行する方が絶対出てくるはずなので期待しつつ今回はここまで
Views: 0