Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PacketProxyで探るGemini CLIのコンテキストエンジニアリング 〜AIエージェ...

Avatar for kakira9618 kakira9618
September 20, 2025

PacketProxyで探るGemini CLIのコンテキストエンジニアリング 〜AIエージェントを信頼できる相棒に〜

2025/9/20 (土) @ServerlessDays Tokyo 2025 の発表資料です。

イベントページ:https://serverless.connpass.com/event/362044

Avatar for kakira9618

kakira9618

September 20, 2025
Tweet

Other Decks in Technology

Transcript

  1. © DeNA Co., Ltd. 1 PacketProxyで探るGemini CLIの コンテキストエンジニアリング 〜AIエージェントを信頼できる相棒に〜 黒岩

    亮 セキュリティ技術グループ 株式会社ディー・エヌ・エー 2025/9/20 (土) @ServerlessDays Tokyo 2025
  2. © DeNA Co., Ltd. 2 目次 本日のねらい 課題感・提案 ライブデモ・Gemini CLI

    通信のまとめ なぜ通信を覗くのか 1 2 3 4 まとめ 5
  3. © DeNA Co., Ltd. 4 ✅ Gemini CLI のコンテキストエンジニアリン グを通信内容から理解する

    ✅ 通信解析手法を身近に感じ活用することで AIエージェント導入時のよくある課題を解決
  4. © DeNA Co., Ltd. 6 Gemini CLI / Claude Code

    / Codex CLI AIエージェントはとても便利! 業務でも使いたい! だけど……
  5. © DeNA Co., Ltd. 7 AIエージェントの導入にありがちな「課題」 🤔 🤔 🤔 このファイルの情報、勝手にAIに送られたりしない?

    インターネットで見つけた秘伝のタレプロンプト、 本当に効果あるの? このプロンプトだとなんか上手くいくけど、 こっちだとダメ。理由が分からない… → AIエージェントの動作は素のAIと比べると複雑。 「なんとなく」でAIエージェントを使いがち。 信頼できず、業務導入が進まない・・・
  6. © DeNA Co., Ltd. 8 AIエージェントの導入にありがちな「課題」 🤔 🤔 🤔 このファイルの情報、勝手にAIに送られたりしない?

    インターネットで見つけた秘伝のタレプロンプト、 本当に効果あるの? このプロンプトだとなんか上手くいくけど、 こっちだとダメ。理由が分からない… ↑今回はこの課題に焦点を当てます。 他の課題も同様の手法で解決できます。 → AIエージェントの動作は素のAIと比べると複雑。 「なんとなく」でAIエージェントを使いがち。 信頼できず、業務導入が進まない・・・
  7. © DeNA Co., Ltd. 9 ちゃんと理解して使いたい ツールの動作を把握するために…… • ツールをひたすら使い込む •

    公式・非公式ドキュメントを読む • ソースコードを読む • ローカルログやテレメトリを参照する などが考えられるが、それぞれメリット・デメリットがある(後述) 低コストで確実に動作を把握する方法が知りたい!
  8. © DeNA Co., Ltd. 12 提案概要: AIエージェントの通信を PacketProxy を使って覗く 提案:

    Gemini CLI のコンテキストエンジニアリングが丸見えに!
  9. © DeNA Co., Ltd. 13 • ソフトウェアテストや脆弱性診断向けの ローカルプロキシツール • DeNA

    セキュリティ技術グループが開発 ◦ 脆弱性診断業務での実績あり • 多機能で様々なプロトコルに対応 ◦ 独自プロトコルにも対応可能 • Apache 2.0 ライセンス ◦ ライセンスに基づき無料/商用利用可 PacketProxy とは https://github.com/DeNA/PacketProxy https://github.com/DeNA/PacketProxy より引用 今回の用途にピッタリ!
  10. © DeNA Co., Ltd. 16 Gemini CLI 通信のまとめ:自己紹介 Gemini CLI

    Gemini 本体 - クライアント説明・目的 - 現在日付/OS - カレントディレクトリ/ファイルツリー - 会話履歴 - user:「自己紹介してください」 - システムインストラクション(エージェントとしての振る舞い定義) - 利用可能なTools の情報(read_file などのツールの説明/引数の型や説明) (会話履歴を見る) 自己紹介してほしいのか。これは直接生成できそう。 →(自己紹介テキスト)を生成して返却 (自己紹介テキスト)が得られたので画面表示。 さて、これでやり取りは終わりにしても良いのか? Geminiに聞いてみよう。 会話履歴を以下にして送信: - user:「自己紹介してください」 - model:「(自己紹介テキスト)」 - user: 「次のターンとしてふさわしいのは user か? model か?」 (会話履歴を見る) 既に自己紹介は終わっている。次は user の判断を仰ごう。 → next_speaker: "user" next_speaker は "user" だ。セッションを終了できるな。(一連のやり取り終了)
  11. © DeNA Co., Ltd. 17 Gemini CLI 通信のまとめ:リポジトリ説明 - クライアント説明・目的

    - 現在日付/OS - カレントディレクトリ/ファイルツリー - 会話履歴 - user:「リポジトリを説明してください」 - システムインストラクション(エージェントとしての振る舞い定義) - 利用可能なTools の情報(read_file などのツールの説明/引数の型や説明) リポジトリ説明してほしいのか。ファイルツリーを見るに Readme.ja.md があるっぽいけど、内容が欲しいな… 利用可能なTools の説明を見ると、read_file を使うと良さそう! → read_file ツールを 「Readme.ja.md」に対して実行せよ read_file を「Readme.ja.md」を引数にして実行ね(ユーザに許可を取り実行) 実行結果(Readme.ja.md の内容)を「会話履歴」に付加。続きを Gemini に聞こう。 (履歴を見る)前に要求した Readme.ja.md の内容が来たようだ。 これを基に、リポジトリの要約を生成できるね。 → (リポジトリの要約) を生成して返却 (リポジトリの要約)を画面に表示。これで終わって良いのか? 「次のターンにふさわしいのは user / model」を会話履歴に追加して送信しよう 目的達成済。終わってよし。→ next_speaker: user next_speaker: user なので、一連のやり取りは終了! Gemini CLI Gemini 本体
  12. © DeNA Co., Ltd. 19 「動作を理解する他の手法」のメリット・デメリット • ツールをひたすら使い込む ◦ 「肌感」が得られるが、言語化や定量化が難しい

    • 公式・非公式ドキュメントを読む ◦ 情報がまとまっているが、正確性や鮮度は実装の把握と比べると落ちる • ソースコードを読む ◦ 実装レベルでの正確な把握が可能だが、実施コストが高くスキルが要求される • ローカルログやテレメトリを参照する ◦ 動作させての検証なので信頼性が高く、実施コストも低い ◦ ツールの対応状況や、実装により欲しいログが取れないことも
  13. © DeNA Co., Ltd. 20 ローカルで動くプログラムのデバッグで、 ブレークポイントを設置して、関数の引数 や返り値を確認する イメージ:通信解析はデバッグ手法 リモートと通信するプログラムのデバッグで、

    PacketProxy を挟み、リクエスト・レスポンスを 確認する ローカルのプログラムのデバッグ 通信プログラムのデバッグ やっていることは、ブレークポイントを設置して入出力を見る操作とほぼ同じ。 通信解析を利用することで、通信を行うプログラムの「デバッグ」ができるようになる。 関数 引数 返り値 ブレークポイントで確認 リモート API リクエスト レスポンス PacketProxyで確認
  14. © DeNA Co., Ltd. 21 通信は、AIエージェントのようなソフトウェアの動作に不可欠。 必ず実装されているし、通信内容はエージェントの動作を決定する。 意図しない情報送信の有無も直接確かめられる。 通信解析する理由①:通信は「ごまかしの効かない事実」である Gemini

    CLI Gemini 本体 ローカルログ or テレメトリ 書込/送信 ←通信とは別の実装。 他のソフトウェアでは未対応の可能性や、 欲しいログが取得できない可能性が有る 送受信 通信内容 ←動作を決定する内容。 変えたら動作に影響有。 通信解析 ≒ 動作の把握
  15. © DeNA Co., Ltd. 22 ドキュメントやブログ記事などを読んで得られた情報は、信頼性に欠ける。 ソースコード解析で把握した動作が正しいかどうかは、動かしてみないとわからない。 通信解析手法では「そのバージョンでは、確かにこのように動いた」という確証が得られる。 通信解析する理由②:自分で試すことで、確証を得られる Gemini

    CLI Gemini 本体 送受信 通信内容 通信内容 がそのまま証拠になる。 🧐 ドキュメント or ソースコード 多分、こんな感じで動くのかな(想像) 動かしてもそうなので多分合ってる。 (確証は得られない) 通信解析: 静的な方法: 通信解析は動的な手法。
  16. © DeNA Co., Ltd. 23 AI 時代はツールの入れ替わりが非常に早い。 全てのツールを使い込んだり、ドキュメントやソースコードを把握するのは難しい。 通信解析は、脆弱性診断の手法の一種。通信を行うソフトウェア全般に適用できる。 汎用性が高く、変化の早いAI時代に必須の道具である。

    通信解析する理由③:特定のツールの実装やバージョンに依存しない 「汎用的な手法」である Gemini CLI API or AI 本体 送受信 通信内容 Claude Code Codex CLI etc… 実装・バージョンによらず適用可能 (リバースエンジニアリングに抵触しないように注意が必要)
  17. © DeNA Co., Ltd. 27 ✅ Gemini CLI のコンテキストエンジニアリン グを通信内容から理解する

    ✅ 通信解析手法を身近に感じ活用することで AIエージェント導入時のよくある課題を解決
  18. © DeNA Co., Ltd. 29 更に知りたい人向けの宣伝: DeNA ENGINEERING ブログ版 https://engineering.dena.com/blog/2025/07/gemini-cli-packetproxy-context-engineering/

    PacketProxyで探るGemini CLIのコンテキストエンジニアリング 〜AIエージェントを信頼できる相棒に〜