TECH PLAY

コードリーディング

イベント

該当するコンテンツが見つかりませんでした

マガジン

該当するコンテンツが見つかりませんでした

技術ブログ

G-gen の武井です。当記事は Google Cloud Next '26 in Las Vegas のブレイクアウトセッション「 One tool to rule them all: Extending and customizing the Gemini CLI 」について、速報レポートをお届けします。 G-gen Tech Blog では、現地でイベントに参加したメンバーや、日本から情報をウォッチするメンバーが、Google Cloud Next '26 に関連する記事を発信します。 blog.g-gen.co.jp セッションの概要 AI 開発ツールが抱える 3 つの課題 Gemini CLI と拡張ポイント Gemini CLI とは 拡張ポイントの全体像 John のジャーニーで見る Gemini CLI 拡張デモ 1. 組み込みツールによるコードベースの探索 2. Agent Skills で専門知識をパッケージ化する 3. Sub-agents でコンテキストを分離する 4. Extensions でカスタマイズをチームに共有する Extensions Gallery によるコミュニティ連携 セッションの概要 本セッションでは、ターミナル上で動作する AI エージェント Gemini CLI を、開発者個人のワークフローに合わせてカスタマイズし、さらにそのカスタマイズをチームやコミュニティへ共有するための拡張ポイント(Agent Skills、Sub-agents、Hooks、Extensions)について解説していました。 登壇者は Google Cloud の Aishanee Shah 氏と Abhi Patel 氏の2名です。座学だけでなく、John という架空の開発者が Gemini CLI のコードベースをキャッチアップし、得られた知見を共有可能なパッケージにまでまとめ上げるジャーニーを題材に、ライブデモを交えて段階的に紹介する構成です。 参考 : Gemini CLI - Google Cloud Gemini CLI の詳細な解説については、以下の記事を参照してください。 blog.g-gen.co.jp AI 開発ツールが抱える 3 つの課題 近年の AI モデルはコーディング、コードベース探索、リサーチに非常に強くなった一方、その周辺ツール(Web 上の AI チャット、IDE、CLI ツールなど)が急増した結果、開発者がそれらの間を伝書鳩(messenger pigeons)のようにつないでいる現状が指摘されました。 Abhi 氏自身、Chrome チームに在籍していた頃、エラーやスタックトレースを Web の Gemini チャットへコピー&ペーストし、結果をまた IDE に戻す、という非効率な作業に多くの時間を費やしていたとのことです。 セッションでは、こうした現状から派生する課題が 3 つに整理されていました。 1つ目は テクノロジーの孤島 (tech islands)です。Web アプリ、IDE、CLI ツールが乱立しているなかで、それらをいかに効果的に組み合わせるかという問題を指します。 2つ目は 認知的過負荷 (cognitive overload)です。プロンプトの構造設計や適切なコンテキストの収集を、ユーザー側が常に意識しながら組み立てる必要があるという課題です。 3つ目は 車輪の再発明 (reinventing the wheel)です。完璧なプロンプトやワークフローを構築できたとしても、それをチームや組織全体で共有・再利用する手段がなければ、各々が同じ努力を繰り返すことになります。 これらの課題を解決する鍵として、複数のツールとコンテキストを束ねる オーケストレーター が必要であり、その役割を担うのが Gemini CLI である、というのがセッションの出発点として提示されました。 Gemini CLI と拡張ポイント Gemini CLI とは Gemini CLI は、ターミナル上で動作するオープンソースの AI エージェントです。最先端の Gemini モデルへの軽量かつ直接的なアクセスを提供し、開発者が指定したゴールに向けてコンテキストを収集・維持しながらタスクを実行します。詳細は以下を参照してください。 参考 : Gemini CLI - Google Cloud 参考 : Gemini CLIを解説 - G-gen Tech Blog 拡張ポイントの全体像 セッションでは、Gemini CLI を自分のワークフローに合わせて深くカスタマイズする手段として、以下 4 つの拡張ポイントが紹介されました。 Agent Skills (エージェントスキル) : 専門知識・手続きワークフロー・関連リソースをひとまとめにしたモジュール Sub-agents (サブエージェント) : 特定タスクに特化した独立エージェント。コンテキストとツール選択をメインエージェントから分離する Hooks (フック) : エージェントのライフサイクル上の任意のタイミングに介入するための設定可能なポイント Extensions (エクステンション) : Skills、Sub-agents、Hooks、コマンド、MCP サーバー、コンテキストファイルなどを 1 つの共有可能なパッケージにまとめる仕組み Aishanee 氏は「2026 年の開発者は、こうしたカスタマイズの作り込みとメタワークフローの構築に多くの時間を使っている」と述べ、AI 時代の開発者の作業の重心が、自らコードを書くことから、エージェントツール群の設計・編成へとシフトしていることを強調していました。 John のジャーニーで見る Gemini CLI 拡張デモ 1. 組み込みツールによるコードベースの探索 John はまず、Gemini CLI のリポジトリをクローンしたうえで、ターミナルから Gemini CLI を起動し、自然言語で「サブエージェントの委譲(sub-agent delegation)がどう動くのか理解したい」と尋ねます。 ここで Gemini CLI は 思考モード (thinking mode)に入り、組み込みツールを使って必要なファイルを段階的に読み込みます。1つ目のファイルを読んで把握、必要な情報を絞り込んで次のファイルを読む、という形で探索を進め、最終的に Markdown 形式の要約を返しました。 John は視覚的に理解したいタイプなので、続けて「フローチャートに変換して」と依頼します。すでに直前の探索で十分なコンテキストを集めているため、追加のファイル読み込みなしに、ターミナル内に ASCII アートのフローチャートが描画されました。 ここまでが、 組み込みツールだけで実現できる「単発の探索」 です。一度きりのコードリーディングや、ざっと全体像をつかみたい場面には十分強力ですが、生成された図をチームメイトと共有したい・設計ドキュメントに貼り付けたい、といった次の段階には不向きです。 2. Agent Skills で専門知識をパッケージ化する そこで登場するのが Agent Skills (エージェントスキル)です。Agent Skills は、専門知識・ワークフロー・スクリプトをまとめたモジュール式の自己完結パッケージで、エージェント向けの作業手順書のような位置づけのものです。Agent Skills の構造は単純で、以下のようなディレクトリで成り立ちます。 skill.md : 必須ファイル。YAML フロントマターでスキルの name と description を定義し、Markdown 本文にエージェントへの指示を記述する references/ : 補助的な参考資料を置く任意ディレクトリ scripts/ : 検証や変換などに使うスクリプトを置く任意ディレクトリ 特に重要なのは skill.md の description フィールドです。これは カタログ上の説明文 として機能し、メインエージェントは多数のスキルの中からこの description を読んでどれを呼び出すか判断します。 スキルが実際に呼び出されたタイミングではじめて、Markdown 本文の指示や参照ファイルの中身がコンテキストにロードされる仕組みです。これによりメインエージェントのコンテキストを過剰に汚染することなく、必要な専門知識を ジャストインタイム で投入できる点が肝になります。 デモでは、John があらかじめ用意していた Mermaid 作図用のスキルを、Gemini CLI に再ロードさせて使用します。直前の探索で集めたコンテキストはセッションに残っているので、John が「Mermaid の図を作って」と指示するだけで、エージェントはカタログから Mermaid スキルを発見・起動し、ファイルを生成しました。 ここで興味深いのが、Mermaid スキルには png ファイルへの変換スクリプトと生成されたファイルが破損していないかを検証するスクリプトまでバンドルされていた点です。スキル単体で Mermaid ソースの生成 > png ファイルへの変換 > 検証 までを完結させており、最終的には共有可能な2つのファイルを得ることができました。 Aishanee 氏はこの設計について、 自分がすでに解いた問題に毎回トークンを消費させるのではなく、一度作って・バンドルして・再利用する という思想を強調していました。 3. Sub-agents でコンテキストを分離する スキルは強力ですが、ワークフローが長く・複雑になるにつれて限界も見えてきます。スキルを呼び出すたびに、その参照ファイルや手順がメインエージェントのコンテキスト(記憶)に挿入されるため、複数のスキルをまたぐ作業では情報が断片化し、過負荷に陥ってしまうのです。たとえば「Mermaid 図の生成と検証」のような専門タスクの細部がノイズとなり、本来の目的である探索タスクの邪魔をしかねません。 そこで真価を発揮するのが Sub-agents (サブエージェント)です。 サブエージェントは、特定のタスクに専念する独立したエージェントです。メインエージェントとは明確に分離された「独自のコンテキスト」と「専用のツールセット」を持ちます。タスクが完了すると、サブエージェントは「最終結果」と「次に繋がる最も価値の高い情報」だけを抽出してメインエージェントに返却します。これにより、 メインのセッションを常にクリーンな状態に保つ ことができます。 サブエージェントを構成する中核要素は、特定の役割を与える「 ペルソナ (システムプロンプト)」と、それに最適化された「 ツールセット 」の2つです。Abhi 氏も紹介しているように、CLI には組み込みのサブエージェントとして Codebase Investigator などが用意されています。これは、新機能の調査時などに発生する「長大なコードベースの探索」という重い処理を、メインの思考プロセスから切り離し、独立したコンテキストに閉じ込めるために生まれたものです。 カスタムサブエージェントにはローカル型とリモート型の2種類があります。ローカル型は Gemini CLI の組み込みツール(read、grep、skills など)を直接利用するもので、リモート型は A2A プロトコルに対応した既存エージェントへ接続するもので、クラウド側のエージェントを呼び出す用途に有効です。 サブエージェントの定義ファイルは、設定を記述するフロントマター(YAML 形式など)と、システム指示を記述する Markdown 本文から構成されます。フロントマターには name、description、tools(許可するツールのリスト)、model(使用するLLM)などを定義します。 ここで最も重要なのが description の質 です。メインエージェントは、この説明文を頼りに「 暗黙的な呼び出し (Implicit invocation)」を行います。説明が貧弱だと、メインエージェントは「いつ、どのタスクを委譲すべきか」を正しく判断できないため、役割と発動条件を明確に記述することがサブエージェントを使いこなす最大の肝となります。 また、サブエージェントごとにツールを厳格に制限できるのも大きな利点です。例えば「Codebase Investigator」では、ファイルを意図せず書き換えないよう、許可ツールを読み取り系(Read-only)のみに絞り込んでいます。 さらに発展的な設計として、サブエージェントの定義内に MCP(Model Context Protocol)サーバーをインライン化することも可能です。たとえば、50を超える機能を持つ Google Workspace の MCP ツール群を特定のサブエージェント内に閉じ込めることで、メインエージェントのコンテキストを汚染せずに高度な外部連携を実現できます。Abhi 氏はこのアーキテクチャの利点を「メインエージェントを context rot (コンテキストの腐敗。不要な情報やツールによってコンテキストが劣化すること)から守る手段」と強調していました。 デモでは、John が Mermaid スキルとアーキテクチャ図作成を1つにまとめた architect-visualizer というサブエージェントを事前に作成しておき、 @architect-visualizer のように @ 構文で呼び出していました。 新規セッションから始めても、サブエージェントは自身のシステム指示に従って Mermaid スキルをアクティブにし、必要に応じて何度もコードベースを読み返しながら 正確性を担保するためのダブルチェック を行います。これらのファイル読み込みはサブエージェントのコンテキストに閉じ込められ、メインエージェントには ASCII の図と最終ファイルの場所だけが返却されました。 4. Extensions でカスタマイズをチームに共有する ここまでで作成した Skills と Sub-agents は、いまだ John の手元のローカルにあるだけです。チームに展開し、社内全体で再利用するためには Extensions (拡張機能)でパッケージ化します。 Extensions は、Skills、Sub-agents、Hooks、コマンド、MCP サーバー、コンテキストファイル( gemini.md 、 claude.md 、 agents.md など)を一括で 1 つの共有可能なディレクトリにまとめる仕組みです。最低限、以下が揃っていれば成立します。 gemini-extensions.json (マニフェストファイル) 共有したい Skills / Sub-agents / Hooks / コマンド / MCP サーバーの定義 エージェント側に「いつ・どう使うか」を伝えるためのコンテキストファイル なお Hooks は、エージェントのライフサイクルにおける任意の介入ポイントを設定する仕組みで、Google 社内でも独自機能を解放する目的で使用されているとのことでした。 ドキュメントを読み込んでマニフェストを手書きするのは煩雑です。そこでデモでは、Gemini CLI に同梱されている組み込みサブエージェント cli_help agent を @ 構文で呼び出し、対話的に Extension を組み立てるという画期的なアプローチが紹介されました。 cli_help agent は、ドキュメントを参照してマニフェスト構造を理解した上で、組み込みの ask user ツール(ユーザーに質問を投げかける機能)を使用します。これにより、「どんな拡張機能を作るか」「どのスキルを含めるか」「どのサブエージェントから呼び出すか」を順番に確認してくれます。 ユーザー(John)は、「Mermaid スキルとアーキテクチャ図のサブエージェントを含む architecture-visualizer 拡張を作りたい」といった自然言語で答えるだけでよく、必要な JSON やコンテキストファイルはすべて自動で生成されました。 完成した Extension の配布方法は、ユースケースに応じて使い分けられます。誰でも利用できる形で公開する場合は、パブリックな Git リポジトリで配布します。一方、機密性の高いプロンプトや MCP サーバーを社内限定で配布したい場合は、プライベートリポジトリやローカル共有フォルダを使った セキュアディストリビューション を取ります。Abhi 氏は、Google 社内では各チームが独自の Extension を作成し、それを社内に広く共有する文化が根付いていると紹介していました。 Extensions Gallery によるコミュニティ連携 最後に紹介されたのが、コミュニティ全体で Extension を発見・共有できる Extensions Gallery です。2026年4月現在、数百規模の Extension が公開されており、Googler が開発した BigQuery や Google Workspace の Extensions から、サードパーティ企業が自社製品向けに公開している Extensions まで、幅広く利用できます。 ここで強調されていたのは、ギャラリー内の各 Extensions も、本セッションで紹介された仕組みの組み合わせに過ぎないという点でした。同じ部品を組み合わせて掛け算的にスケールさせ、コミュニティ全体で共有していく、というのが Gemini CLI の Extensions の構想の本質と言えそうです。 参考 : Extensions - Gemini CLI 武井 祐介 (記事一覧) クラウドソリューション部クラウドエンジニアリング課。 Google Cloud Partner Top Engineer 2026 選出。 Follow @ggenyutakei
キャリアプロダクト開発部の森 @jiskanulo です。 私ごとですが今年で45歳、WEBサービスの開発歴は20年以上になります。世間的にはベテランエンジニアとかシニアエンジニアとかと称される類だと自認しています。 そんな私ですが2026年1月に基本情報技術者試験を受験して合格しました。 この記事は、ベテランエンジニアが基本情報技術者試験をスキル棚卸しツールとして活用した体験と、受験しなくても使えるセルフチェックの方法を紹介します。 www.ipa.go.jp 受験の動機 結果 得意と苦手が可視化された 得意だった領域 苦手だった領域 得意と苦手のコントラストが意味するもの 試験範囲でスキルを棚卸しする方法 受験のTips CBT受験の雰囲気 集中力の維持に課題 まとめ 受験の動機 受験したきっかけは昨今のAIエージェントを前提とした開発手法の変化です。 ファインディではAIエージェントの導入・検証を積極的に行っています。 私もDevin, GitHub Copilot Chat, Cline, Claude Codeなどさまざまなツールやサービスを日々の開発業務に導入すべく検証していました。 2025年6月頃からClaude Codeを本格的に使用しはじめ、2026年3月現在では私自身が手でコードを書くことは全くなくなりました。 昨今のAIエージェントが主となり開発を進める体制では、AIエージェントへ適切な指示を出す力、AIエージェントからの提案を判断し承認・修正するための力が求められます。 この力をつけるための基礎知識として、基本情報技術者試験の内容はちょうどよいと感じています。 また、2025年末に開発部で「基本情報技術者試験の合格を目指しましょう」という方針も出たこともあり、社内のメンバーが続々と受験・合格している流れに乗りました。 受験理由をもう一つ挙げると、実は基本情報技術者試験を20年ほど前に受験して不合格になっており再挑戦をしないままでした。 さらに後年に応用情報技術者試験を受験し合格しているのですが、応用情報は持っているのに基本情報は持っていないというチグハグ感を解消したかったのです。 近いうちにデータベーススペシャリスト試験を受けようと考えていたところ、2026年度からCBT(コンピュータベースの試験)方式に移行するという情報があり、CBTの雰囲気を先に体験しておきたいという思いもありました。 ただデータベーススペシャリスト試験の実施そのものが2026年中は不明瞭な状況です。動向を注視しつつ、申し込みが再開されたらすぐエントリーしたいですね。 www.ipa.go.jp 結果 科目Aは705点、科目Bは680点となんとか合格できました。もう少し余裕を持って合格したかったのですが、そこは今後の伸びしろとします。 得意と苦手が可視化された 受験して最も収穫だったのは、自分のスキルの輪郭がはっきり見えたことです。 得意だった領域 計算問題やコードリーディング、データベース正規化や稼働率計算などの問題はスムーズに解けました。 日常業務でコードを書き、レビューし、設計・運用を考えることを毎日やっているので、実務経験がそのまま得点に結びつきました。 過去問の模擬試験でもこれらの分野は正答率が高く、特別な対策をしなくても安定して解ける状態でした。 苦手だった領域 一方、会計管理や財務指標に関する問題には苦戦しました。損益分岐点、ROI、減価償却といったテーマは過去問を解いていても正答率が目に見えて低い分野でした。 振り返ってみると、日々の開発業務で財務指標を意識する場面はほとんどありませんでした。 業務で触れない領域は経験年数に関係なく穴のまま残っている。この気づきが、受験して得た最大の収穫でした。 得意と苦手のコントラストが意味するもの この経験から見えたことは、エンジニアのスキルは実務でカバーしている範囲には自然と強くなれるが、逆に触れていない範囲は何年経っても盲点のままだということです。 基本情報技術者試験の出題範囲はITエンジニアの基礎知識を広くカバーしています。 だからこそ、受験すると自分のスキルマップの中で「どこが埋まっていて、どこが空白か」が浮き彫りになります。 試験のための勉強がすぐにサービス開発に活かせるかというとそうでもないのですが、自分の基礎知識の全体像を把握するにはちょうどいい粒度だと感じました。 試験範囲でスキルを棚卸しする方法 受験するにあたり、基本情報技術者試験ドットコムに大変お世話になりました。 www.fe-siken.com 私の場合は1日30分、20日間ほどで合計600問を回答しました。無料サービスの範囲でも十分に過去問を試すことができますし、有料のメンバー登録をすると学習の記録管理がしやすくなります。 スキル棚卸しをするために、まず科目Aの過去問を解いてみてください。 分野ごとの正答率が記録されるので、自分がどの分野に強く、どの分野に穴があるかが数値で可視化されます。 参考として、基本情報技術者試験の科目A出題範囲をもとにしたセルフチェック表を載せておきます。自分が「得意」「苦手」「触れたことがない」のどれに当たるか振り返ってみてください。 分野 自己評価(筆者の例) 基礎理論(離散数学、情報理論等) 得意 アルゴリズムとプログラミング 得意 コンピュータ構成要素 得意 システム構成要素 得意 ソフトウェア 得意 ハードウェア 苦手 データベース 得意 ネットワーク 苦手 セキュリティ 得意 マネジメント(プロジェクト・サービス) 苦手 ストラテジ(経営戦略・法務) 苦手 表のとおり、実務で日常的に使う分野は得意、そうでない分野は苦手という傾向がはっきり出ました。 正答率が安定して高い分野は実務でカバーできている基礎知識。低い分野やまったく分からない分野は、業務で触れていない盲点です。「知っているつもりだったが正確には理解できていなかった」という曖昧な領域も見つかるかもしれません。 受験のTips CBT受験の雰囲気 当日午後に受験会場に着くと、試験開始時刻前でも受験を始めてよいと案内されました。 パソコンに向かう前に持ち物検査を終えて着席。 キーボードはログイン時にしか使わず、試験中はマウス操作のみ。紙とペンは貸してもらい、筆算やコードのトレースをしながら回答しました。 回答完了ボタンを押すとすぐに得点が表示され、合否をその場で確認できました。結果待ちのモヤモヤがなかったのは嬉しいポイントでした。 集中力の維持に課題 科目Bの時点で集中力が切れてしまったのが今回の反省点です。 20年前は午前問題のあとに2時間ほどの昼休みがあり、リフレッシュしてから午後問題に臨めました。現在の形式では科目Aのあと10分の休憩で科目Bが始まるため、体力的にも精神的にも消耗した状態で後半戦に入ることになります。 受験する前には十分に体調を整えて臨むことをおすすめします。 まとめ 基本情報技術者試験は、資格取得という目的だけでなく、自分のスキルの得意と苦手を可視化するツールとして活用できました。 スキルを可視化できたこともあり、今年中にデータベーススペシャリスト試験の合格を目指して準備を進めていこうと思います。 みなさんも試験を受けてみてください。受験しなくても、過去問を試すだけでスキルの棚卸しになりますよ。 ファインディでは一緒に会社を盛り上げてくれるメンバーを募集中です。興味を持っていただいた方はこちらのページからご応募お願いします。 herp.careers
はじめに 皆さんこんにちは!九州大学修士1年の羽田野武蔵です! 2025年12月に、マッチングアプリ ...

動画

該当するコンテンツが見つかりませんでした

書籍