😺

【非エンジニア向け】Gemini CLIの概要

に公開

うぇっす!ノウチーニョです!

今回は、GoogleのAIモデル「Gemini」を活用して、あなたの開発ワークフローをぐっと楽にするコマンドラインツール「Gemini CLI」について、非エンジニアの方にも分かりやすく解説していきます!

Gemini CLIって何?

Gemini CLIは、簡単に言うと「AIと連携して、開発作業をスムーズに進めるためのツール」です。コマンドライン(黒い画面に文字を打ち込む場所)からGemini AIモデルとやり取りできるようになります。

どんなことができるの?

  • コードの理解を助ける: 大量のコードの中から必要な情報を見つけたり、コードの意図を理解するのを手伝ってくれます。
  • アプリの自動生成: アイデアを伝えるだけで、AIがアプリのひな形を作ってくれることも!
  • 面倒な作業を自動化: 定型的な運用作業をAIに任せて、時間と手間を省けます。
  • 機能を拡張できる: 「Model Context Protocol (MCP)」という仕組みや、他のツールと連携することで、Gemini CLIの機能をどんどん増やせます。

より詳しい使い方は、「Getting Started」を、システムの中身については「Core Systems」を見てみてくださいね。

システムの目的と仕組み

Gemini CLIは、「Inkフレームワーク」というReact(ウェブサイトを作るための技術)ベースの技術を使って作られた、対話型のターミナルアプリケーションです。AIと会話するように開発を進められるのが特徴です。

ユーザーが入力した内容は、Geminiモデルにリアルタイム(すぐに)で送られ、返答が返ってきます。また、セキュリティのために、ツールを実行する際は「サンドボックス環境」という隔離された場所で行われます。

システムのざっくりとした全体像

各部分の簡単な説明

  • App.tsx: アプリケーション全体の中心です。
  • InputPrompt: あなたが入力したコマンドを受け取るところ。
  • Message Display Components: Geminiからのメッセージを表示するところ。
  • useGeminiStream Hook: AIとの会話の流れをコントロールする司令塔です。
  • GeminiClient: Gemini APIと通信する役割を担います。
  • GeminiChat: 会話の内容を管理します。
  • Tool Scheduler: ツールを実行する順番や方法を決めるところ。
  • loadCliConfig(): 設定ファイルを読み込みます。
  • Config Class: 読み込んだ設定をまとめて管理する入れ物です。
  • settings.json: Gemini CLIの設定ファイルです。
  • Gemini API: GoogleのGeminiモデルと繋がるための入り口。
  • MCP Servers: 他のツール(例えば、データベースや特定のサービスなど)と連携するための特別なサーバー。
  • Sandbox Environments: ツールが安全に動くように隔離された場所(DockerやPodmanなど)。

ファイルとフォルダの構成

Gemini CLIは、たくさんの機能を持つ大きなシステムですが、整理されていて分かりやすい構造になっています。

  • packages/core: アプリケーションの「頭脳」となる、主要な処理(ビジネスロジック)が入っています。
  • packages/cli: ユーザーインターフェース(画面表示など)に関する部分が入っています。
  • ルートパッケージ: システム全体の設定や、起動に必要なファイル(package.jsonなど)があります。

主要な機能

AI連携とストリーミング

「useGeminiStream hook」という機能が、AIとのやり取りの中心です。AIからの返答をリアルタイムで受け取ったり、ツールを実行したり、状況を管理したりする、とても重要な役割を果たします。

ツール実行の仕組み

Gemini CLIには、様々なツールを実行できる仕組みがあります。

  • 組み込みツール: ファイルを読み書きしたり、コマンドを実行したり、テキストを検索したりする基本的なツールです。
  • MCPサーバー連携: 「Model Context Protocol」という仕組みを使って、外部のツールプロバイダーと連携できます。これにより、様々な専門ツールをGemini CLIから使えるようになります。
  • サンドボックス実行: セキュリティのために、DockerやPodman、macOSのSeatbeltといった、隔離された環境でツールを実行します。

設定の管理

Gemini CLIの設定は、いくつかの場所で管理されています。優先順位は以下の通りです。

  1. デフォルト値: 最初から決まっている基本的な設定。
  2. ユーザー設定: あなたのホームフォルダにある設定ファイル(~/.gemini/settings.json)。
  3. ワークスペース設定: 今作業しているプロジェクトのフォルダにある設定ファイル(./.gemini/settings.json)。
  4. 環境変数: システム全体で使われる設定。
  5. コマンドライン引数: コマンドを実行するときに直接指定する設定。

これらの設定は、「loadCliConfig()」という機能で読み込まれ、「Configクラス」という入れ物にまとめられます。

主要な連携機能

認証システム

Gemini CLIを使うには、いくつかの方法でログインできます。

  • OAuth: Googleアカウントを使ってログインする方法。
  • APIキー: Gemini APIの特別なキーを使って直接ログインする方法。
  • Vertex AI: Google CloudのVertex AIプロジェクトと連携して、さらに高度な機能を使う方法。

Model Context Protocol (MCP)

MCPサーバーは、Gemini CLIの機能を拡張するためのものです。設定ファイル(settings.json)で設定すると、CLIが起動するときに自動的に立ち上がります。

サンドボックス環境

セキュリティを確保するために、ツールは隔離された環境で実行されます。

  • Docker: コンテナ技術を使った隔離。
  • Podman: Dockerに似たコンテナ技術。
  • Native: MacのSeatbelt(セキュリティ機能)などの制限をかけながら直接実行。

ビルドシステムと配布方法

このプロジェクトは、「esbuild」というツールを使って、コードをまとめたり、配布できる形にしたりしています。開発中に変更をすぐに確認できる「ホットリロード」機能や、様々な環境でのテスト、自動化された開発・運用プロセス(CI/CD)もサポートされています。

Gemini CLIは、「npm」というツールを使って配布されており、「@google/gemini-cli」という名前で公開されています。npxコマンドで直接実行したり、グローバルにインストールしていつでも使えるようにしたりできます。

Have a nice day!

Discussion