Gemini CLI を使い倒すためにドキュメントを読む
はじめに
主に cline を使い、gemini cli と gemini code assist をたまに使っていました。
cline はVSCode拡張なので、画面が狭いよなー。って思ってました。(windowはfloatingできるので、それでもいいのですが)
最近 gemini cli が一番いい感じがして統一したくなってきたので、よく調べてみようと思います。
ちなみに Gemini Code Assist はなんか相性が悪い感じがしてあまり使っていません。
個人的に知れてよかったこと
- プロジェクト設定のたたき台が作れて
/init便利 -
web_fetchとかread_fileとか 許可無しで行けて"autoAccept": true便利 -
!でシェルモードに入れてlsとかできて便利 - Geminiの出力をコピーできる
/copy便利 -
/settingsがsettings.jsonの編集に便利(一部設定だけしか対応してない) - カスタムコマンド便利そう(まだ使ったことない)
- IDE連携する場合、今のところVSCodeの組み込みターミナルからは逃れられなくて残念
Geminiとは
2025/08/22現在の内容です
オープンソースのAIエージェントであり、ターミナルで動作します。

なぜ Gemini を選ぶのか。
- 無料枠が多い:googleの個人アカウントで、1分辺り60リクエスト、位置インチあたり1000リクエストできる。
- 1Mトークンを扱える強い
Gemini 2.5 Proが使える。 - ビルドインツールが豊富
- Google Search grounding
- file 操作
- シェルコマンド
- web フェッチ
- MCP機能拡張もできる
- オープンソースです
インストール
ここは割愛します
リリースについて
- Preview
UTCで毎週火曜日の23:59に新しいプレビューリリースがあります。問題があるかもしれませんが、tagをつけることでインストールできます。
npm install -g @google/gemini-cli@preview
- Stable
UTCで毎週火曜日の20:00にリリースされます。先週のpreviewリリースにバグフィックスが入ったものです。
npm install -g @google/gemini-cli@latest
- Nightly
UTCで毎日00:00にリリースされます。mainブランチのコードを使っていて未検証の問題等を含みます。
npm install -g @google/gemini-cli@nightly
📋️ キーとなる機能
コードの理解と生成
- 大規模なコードに対する問い合わせと変更をする
- マルチモーダルな力でPDFやスケッチなどの画像から新しいアプリを作ります
- 自然言語で問題を解決します
自動化と統合
- プルリクエストを出したr複雑なリベースをしたりなどのタスクを自動化できます
- imagen等のようにMCPサーバーで新しい力を追加できます
- ワークフローのためにスクリプトで非対話的に動作できます
高度な機能
- リアルタイムの情報を得るために、Google 検索を組み込んで検索します
- 複雑なセッションを保存して再開するための会話チェックポイント
- プロジェクトの動作をカスタマイズするためのカスタムコンテキストファイル(GEMINI.md)
Github統合
Gemini CLI GitHub ActionでGemini CLIをGitHubワークフロー見組み込みます
- プルリクエストのレビュー:コンテキスト情報を加味した自動コードレビュー
- イシューの選別:コンテンツの内容を解析して優先度ラベルを自動付与
- 好きな時にアシスタント: イシューやプルリクエストで
@gemini-cliでメンションするとデバッグ、説明、タスクの委譲などができる - カスタムワークフロー:チームニーズ居合わせたスケジュール及びオンデマンドのワークフロー実行
🔐 認証オプション
ニーズに合った認証方法を選択します。
こちらに詳細な情報があります。
1. OAuthログイン(Google Accountを使う)
個人開発及びGemini Code Assistライセンスを持っている方に最適。
- メリット
- 1分間あたり60、一日あたり1000回のリクエストが無料
- Gemini 2.5 Proは1Mトークンのコンテキストウィンドウを持てる
- API keyの管理が不要。Googleでログインするだけで良い。
- いつでも最新のモデルに更新される
2.Gemini API Keyを使う
モデルを指定したり、有料アクセスができる方に最適。
- メリット
- 一日あたり100回は Gemini 2.5 Proが使える
- モデル選択:Geminiの任意のモデルを選択できる
- 使った分だけ課金される
Vertex AI
企業チームや製品ワークロードに最適。
メリット
- 高度なセキュリティとコンプライアンス
- スケーラブル
- GCPと連携できる
📚️ ドキュメント
いっぱいあります!
Getting Started
コア機能
ルールと拡張
高度なトピック
設定とカスタマイズ
気になるところだけ読み込みます
コマンドリファレンス
/ @ ! で始まる特別なコマンドが組み込まれています。
スラッシュコマンド
組み込みコマンド
CLI自体のメタレベルなコントロールを提供します。
-
/bug- GeminiのGitHubにバグ報告をします。
-
/chat- 会話の記録や再開ができます。
- サブコマンド
-
save:会話を記録します。<tag>を付ける必要があります。-
/chat save <tag>のように使用します -
/chat saveでマニュアル保存した記録と自動で保存されるチェックポイントは異なります。- チェックポイントは
.gemini/settings.jsonを使って設定するかgemini --checkpointingで有効化できます(デフォルトは無効です)。saveは会話ログを戻る。チェックポイントはファイルを戻す。という違いがあります。
- チェックポイントは
-
-
list:で保存された記録の一覧を見られます-
/chat save listのように使用します
-
-
resume:会話の状態を戻します。-
/chat resume <tag>のように使用します
-
-
delete:会話の状態を削除します。-
/chat delete <tag>のように使用します
-
-
-
/clear- ターミナル上の表示がクリアになります。セッション情報については設定に応じて残ります。
-
/compress- チャットのコンテキストをサマライズします。これによりコンテキストを圧縮しトークンを節約します。
-
/copy- Gemini CLIの出力をクリップボードにコピーする
-
/directory(or/dir)- 複数ディレクトリをサポートするワークスペースディレクトリを管理する
-
/add- ワークスペースにディレクトリを追加する。パスは絶対パスでも相対パスでもあるいはホームディレクトリからのパスでも可。
-
/directory add <path1>, <path2>のように使用します - サンドボックスプロファイルを使う場合は無効なコマンドとなります。サンドボックスを使う時は
--include-directoriesを使ってセッションを開始する必要があります。
-
show-
/directoryによって追加された、あるいは--include-directoriesで指定された全てのディレクトリが表示されます。 -
/directory showのように使用します
-
-
- 複数ディレクトリをサポートするワークスペースディレクトリを管理する
-
/editor- エディタを選択するダイアログを表示できます
-
/extensions- 全ての拡張機能のリストを表示します
-
/help(or/?)- コマンドヘルプを表示します
-
/mcp- 設定済みの MCPサーバの一覧を表示します
-
descordescriptions- MCPサーバ及びツールの詳細を表示します
-
nodescornodescriptions- ツールの説明を表示せず名前だけ表示します
-
schema- ツールの設定パラメータのためのJSONスキーマを表示します。
-
- 設定済みの MCPサーバの一覧を表示します
-
/memory- AIの指導コンテキスト(
GEMINI.mdから読み込まれた階層的メモリ)を管理します。-
add- AIに覚えておいてほしいことを伝えます
-
/memory add <覚えておいてほしいこと>のように使用します
-
show- メモリの内容を表示できます。これによりコンテキストのチェックができます。
-
refresh- 最新の
GEMINI.mdからデータを再読込します。
- 最新の
-
- AIの指導コンテキスト(
-
/restore- ツール実行前に戻します。
-
/restore [tool_call_id]のように使用します。tool call id がない場合は利用可能なチェックポイントを表示します。
-
/settings- Gemini CLIの設定を表示/変更するためのエディタを表示します。
.gemini/setting.jsonを設定するのと同様ですが、検証とガイダンスを含みエラーを回避できます。
- Gemini CLIの設定を表示/変更するためのエディタを表示します。
-
/stats- 現在のセッションの統計情報が觀られます。トークンの利用状況やキャッシュによるトークンの節約、セッションにかかった時間などです。
-
/theme- Gemini CLIのテーマを変更できます
-
/auth- 認証方法を変更するダイアログを開きます
-
/about- Gemini CLIの実行情報を表示します。issueを登録するときなどに使います。
-
/tools- 現在使用できるツールを表示します。
descで詳細な説明付きnodescで説明無しの名前だけ、を指定できます。
- 現在使用できるツールを表示します。
-
/privacy- プライバシ規約を表示し、サービス向上のためのデータ収集に同意するかどうか選択ができます
-
/quit(or/exit)- Gemini CLIを終了します。
-
/vim- Gemini CLIでvimのような操作ができるようになります。トグルでON/OFFできます。
-
/init- 現在のディレクトリを解析して
GEMINI.mdファイルを生成します。
- 現在のディレクトリを解析して
カスタムコマンド
好みのプロンプトを保存して再利用できる仕組み。~/.gemini/commands/ と <project>/.gemini/commands/ のコマンドを利用できます。同じ名前のコマンドがある場合はプロジェクトのコマンドが使われます。
コマンドはディレクトリをネームスペースファイル名をコマンド名として定義されます。
- ~/.gemini/commands/test.toml は
/testコマンドになる - <project>/.gemini/commands/git/commit.toml は
/git:commitコマンドになる
特徴
-
.tomlファイルフォーマットである必要がある -
promptの記載が必要 - オプションで
descriptionを追加すると/helpで表示できる - 引数をつけられるる
- デフォルト引数も設定できる
- シェルコマンドを実行できる
アットマークコマンド
ファイルやディレクトリ及びgitの情報をGeminiとのプロンプトのコンテキストに含められます。
例
- @path/to/your/file.txt 何が書かれてる?
- @src/my_project/ ディレクトリのコードをサマって
- @README.md って何?
シェルモードとパスするーコマンド
! プレフィクスをつければGemini CLIで直接システムのシェルに触ることができます。
! だけを実行するとシェルモードに入れます。
シェルモードでは環境変数 GEMINI_CLI=1 が設定されます。
メモリ管理
save_memory で fact を記録できます。
save_memory(fact="Your fact here.")
のように使います。
重要な事実を保存するだけに使用され、会話履歴などを残すものではありません。
IDE統合
VSCodeのターミナルでgeminiコマンドを叩くか、Cmd+Shift+P or Ctrl+Shift+P でコマンドパレットを開いた後に Gemini CLI: Run をすると組み込みターミナルでGemini CLIが起動します。
/ide enable でide統合を有効化
/ide disable でide統合を無効化
/ide status でide統合の状態を確認
できます。
設定ガイド
設定層と順番
小さい数字は大きな数字に上書きされます。(数字が大きいほうが優先度が高い)
- アプリにハードコードされた設定
- 現在のユーザ向けのグローバル設定(~/.gemini/settings.json)
- プロジェクトごとの設定(<project>/.gemini/settings.json)
- システム全体の設定(情シスが全社員の設定を管理するなどに役立つ)
- 環境変数
.envで設定されるなど - コマンドラインで渡された設定
システム設定ファイルの場所は以下。GEMINI_CLI_SYSTEM_SETTINGS_PATH で上書きできます。
-
/etc/gemini-cli/settings.json(Linux) -
C:\ProgramData\gemini-cli\settings.json(Windows) -
/Library/Application Support/GeminiCli/settings.json(macOS).
設定項目
-
contextFileName(文字列及び文字列配列)-
GEMINI.mdやAGENTS.mdなどのコンテキストファイルの名前を指定します。 - デフォルトは
GEMINI.mdです。
-
-
bugCommand(オブジェクト)-
/bugコマンド実行時のデフォルトURLを指定します
-
-
fileFiltering(オブジェクト)- git連携できるファイルを検索機能のフィルタ
- デフォルトは
"respectGitIgnore": true,"enableRecursiveFileSearch": true -
"respectGitIgnore": trueで.gitignoreに記載のディレクトリは検索しない -
"enableRecursiveFileSearch": falseで@でファイル検索を再帰的に行わない
-
coreTools(文字列配列)-
"ReadFileTool"等のコアツールの利用を明示的に指定し、それ以外を制限するホワイトリスト。デフォルト全許可。
-
-
excludeTools(文字列配列)- こっちはブラックリスト。デフォルト全許可(指定なし)。
-
allowMCPServers(文字列配列)- 同じく
MCPServerのホワイトリスト
- 同じく
-
excludeMCPServers(文字列配列)- こっちはブラックリスト。デフォルト全許可(指定なし)。
-
autoAccept(ブール値)- 安全だと思われるツールを自動実行するかどうか
- 例)
"autoAccept": true
-
theme(文字列)- 例:
"theme": "GitHub"
- 例:
-
vimMode(ブール値)- 例:
"vimMode": true
- 例:
-
sandbox(ブール値あるいは文字列)-
trueあるいは"docker"の時にgemini-cli-sandboxを使います。
-
-
toolDiscoveryCommand(文字列)- ツールを検索するシェルクスクリプトを追加します。
- 例:
"toolDiscoveryCommand": "bin/get_tools"bin/get_toolsはツールのパスを返すスクリプトのパスを書くようです
-
toolCallCommand(文字列)-
toolDiscoveryCommandで見つかったツールを使うためのスクリプトのパスを指定
-
-
mcpServer(オブジェクト)- MCPサーバへの接続設定
設定例)
"mcpServers": { "myPythonServer": { "command": "python", "args": ["mcp_server.py", "--port", "8080"], "cwd": "./mcp_tools/python", "timeout": 5000, "includeTools": ["safe_tool", "file_reader"], }, "myNodeServer": { "command": "node", "args": ["mcp_server.js"], "cwd": "./mcp_tools/node", "excludeTools": ["dangerous_tool", "file_deleter"] }, "myDockerServer": { "command": "docker", "args": ["run", "-i", "--rm", "-e", "API_KEY", "ghcr.io/foo/bar"], "env": { "API_KEY": "$MY_API_TOKEN" } }, "mySseServer": { "url": "http://localhost:8081/events", "headers": { "Authorization": "Bearer $MY_SSE_TOKEN" }, "description": "An example SSE-based MCP server." }, "myStreamableHttpServer": { "httpUrl": "http://localhost:8082/stream", "headers": { "X-API-Key": "$MY_HTTP_API_KEY" }, "description": "An example Streamable HTTP-based MCP server." } } - MCPサーバへの接続設定
-
checkpointing(オブジェクト)- checkpointを有効/無効化し会話のリストアを可能にする
- デフォルト:
{"enabled": false}
-
preferredEditor(文字列)- diffを見る時のエディタを設定します
-
telemetry(オブジェクト)- ログとメトリクスの送信先を設定します
-
usageStatisticsEnabled(オブジェクト)-
Googleで開発用途に使うデータのアップロードの設定
-
-
hideTips(ブール値)- CLIに表示されるTipsの表示を隠す
-
hideBanner(ブール値)- 起動時に表示される
GEMINIの表示を隠す
- 起動時に表示される
-
maxSessionTurns(数字)- この数字を超えるとチャットは止まります。デフォルトは
-1で無限
- この数字を超えるとチャットは止まります。デフォルトは
-
summarizeToolOutput(オブジェクト)- Gemini CLIがツールを実行した際に出力される結果を、自動的に要約するかどう
かを設定するためのオプションです。便利そうですが、現在はrun_shell_commandの出力のみサポートしているそうです
- Gemini CLIがツールを実行した際に出力される結果を、自動的に要約するかどう
-
excludedProjectEnvVars(文字列配列)- 特定の環境変数をプロジェクトの
.envファイルからロードされる対象外にします。 - 例)
"excludedProjectEnvVars": ["DEBUG", "DEBUG_MODE", "NODE_ENV"]
- 特定の環境変数をプロジェクトの
-
includeDirectories(文字列の配列)- ワークスペースのコンテキストに含めたいパスを指定します。
- 例)
"includeDirectories": [ "/path/to/another/project", "../shared-library", "~/common-utils" ]
-
loadMemoryFromIncludeDirectories(ブール値)-
/memory refreshコマンドの動作を制御します。trueの場合は上記で追加された全てのディレクトリのGEMINI.mdが読み込まれ、falseの場合は現在のディレクトリのGEMINI.mdのみが読み込まれます
-
-
chatCompression(オブジェクト)- 自動あるいはマニュアルでチャット履歴の圧縮がされた時の設定
- 会話履歴が
contextPercentageThresholdを超えたら圧縮が実行されます
-
showLineNumbers(ブール値)- コードブロックに行番号を表示するかどうかを設定します
-
accessibility(オブジェクト)-
screenReaderとかのアクセシビリティに関する設定
-
環境変数と .env ファイル
Gemini CLIは自動的に .env ファイルを読み込みます。読み込む順番は以下。
- 現在のディレクトリの
.env - 1がない場合は rootまで
.envファイルを見つけるまで親を遡ります。rootは.gitフォルダあるいはホームフォルダです - 2もない場合は
~/.envを探します
さいごに
ひととおりドキュメントを読んでみました。
いくつか便利な使い方がわかりました。
徐々にclineからgemini cliに移行していきたいと思います。
Discussion