【非エンジニア向け】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の設定は、いくつかの場所で管理されています。優先順位は以下の通りです。
- デフォルト値: 最初から決まっている基本的な設定。
-
ユーザー設定: あなたのホームフォルダにある設定ファイル(
~/.gemini/settings.json
)。 -
ワークスペース設定: 今作業しているプロジェクトのフォルダにある設定ファイル(
./.gemini/settings.json
)。 - 環境変数: システム全体で使われる設定。
- コマンドライン引数: コマンドを実行するときに直接指定する設定。
これらの設定は、「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