🗂

Gemini CLIを使いこなすためのツール活用ガイド

に公開

Gemini CLIを使いこなすためのツール活用ガイド

※本記事はAIによって作成されました。

はじめに

Gemini CLIは、対話形式でソフトウェア開発をサポートする強力なツールです。その真価は、ファイル操作、コード検索、コマンド実行などを可能にする「ツール」の活用にあります。

本記事では、Gemini CLIで利用可能な全ての標準ツールを網羅し、具体的な使用例とともにその使い方を分かりやすく解説します。さらに、ツールの利用可能性やカスタマイズについても触れていきます。

ツールの利用について

標準ツールはすぐに利用可能か?

はい。本記事で紹介するツールはすべてGemini CLIの標準ツールです。特別な設定をしなくても、Gemini CLIを起動したその瞬間からすぐに利用できます。これらのツールは、ローカルのファイルシステムやシェルと連携するために、あらかじめ組み込まれています。

特殊なツール(カスタムツール)は設定できるのか?

はい、可能です。GeminiはModel Context Protocol (MCP) という仕組みを通じて、外部のツールやAPIと連携する機能を備えています。これにより、ユーザーが独自のカスタムツールを定義して、Gemini CLIの能力を拡張できます。

ここでは、具体的な例としてGitHubリポジトリと連携するツールを登録する手順を解説します。

カスタムツール登録の具体的な手順

  1. 前提条件の確認

    • Node.js: node -v コマンドを実行し、バージョンが18以上であることを確認してください。
    • Gemini CLI: 未インストールの場合は、npx https://github.com/google-gemini/gemini-cli を実行してインストールします。
  2. 設定ファイルの作成
    プロジェクトのルートディレクトリ、またはホームディレクトリに設定ファイルを作成します。

    # プロジェクト内に作成する場合
    mkdir -p .gemini && touch .gemini/settings.json
    
  3. settings.json の編集
    作成した settings.json ファイルに、使用したいツール(MCPサーバー)の設定を記述します。以下は、GitHubツールを登録する設定例です。

    {
      "mcpServers": {
        "github": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-github"],
          "env": {
            "GITHUB_PERSONAL_ACCESS_TOKEN": "ここにあなたのGitHubトークン"
          }
        }
      }
    }
    

    重要: ここにあなたのGitHubトークン の部分を、ご自身のGitHub Personal Access Tokenに置き換えてください。

  4. Gemini CLIの再起動と確認

    • 設定を反映させるため、Gemini CLIを一度終了し、再起動します。
    • 起動後、プロンプトで /mcp と入力してください。次のように、登録したツールの一覧が表示されれば成功です。
    MCP Servers:
    - github
    

この設定により、例えば「@github を使って、このリポジトリの最新のIssueを3件教えて」といった指示で、GitHubリポジトリの情報を直接取得できるようになります。

このように、MCPを利用すれば、単なるローカル操作に留まらず、外部の様々なサービスと連携する強力な開発アシスタントを構築できます。


ツールの基本的な使い方:自然言語で指示するだけ

Gemini CLIのツールを使うために、ユーザーが複雑なコマンドやコードを覚える必要はありません。やりたいことを普段の言葉で指示するだけで、Geminiが最適なツールを自動で選択し、実行します。

ユーザーの指示とGeminiの動作例

  • あなたが指示する内容:

    「カレントディレクトリのファイル一覧を見せて」

  • Geminiの内部的な動作:

    list_directory ツールを選択して実行

  • あなたが指示する内容:

    package.json の中身を読んで、scriptsの部分を教えて」

  • Geminiの内部的な動作:

    read_file ツールで package.json を読み込み、内容を解析して回答

  • あなたが指示する内容:

    npm install を実行して」

  • Geminiの内部的な動作:

    run_shell_command ツールでコマンドを実行

このように、ツールの存在を意識せずとも、対話を通じて様々な操作が可能です。

以降のセクションでは、それぞれの標準ツールが「何ができるのか」を詳しく解説します。これを読むことで、あなたがGeminiにどんな指示を出せるのか、その可能性の幅を理解する手助けとなります。


標準ツール一覧と徹底解説

ファイル・ディレクトリ操作

1. list_directory

  • 機能: 指定したディレクトリに含まれるファイルやサブディレクトリの一覧を取得します。
  • 用途: プロジェクトの全体像を把握したり、特定のファイルを探す前の事前調査に使います。
  • 使用例: srcディレクトリの中身を一覧表示する。
    default_api.list_directory(path='src')
    

2. read_file

  • 機能: 指定した単一のファイルの内容を読み込みます。テキストだけでなく、画像やPDFも読み取り可能です。
  • 用途: コードの確認、設定ファイルの読み取り、バグの原因調査など、ファイルの中身を見るあらゆる場面で活躍します。
  • 使用例: 設定ファイルconfig.jsonの内容を確認する。
    # パスは絶対パスで指定する必要があります
    default_api.read_file(absolute_path='/path/to/your/project/config.json')
    

3. read_many_files

  • 機能: 複数のファイルやディレクトリの内容を一度にまとめて読み込みます。
  • 用途: プロジェクト全体のコードを俯瞰したり、複数の設定ファイルの内容を一度に比較・分析したりする際に便利です。
  • 使用例: srcディレクトリ内のすべての.tsファイルの内容を一度に読み込む。
    default_api.read_many_files(paths=['src/**/*.ts'])
    

4. write_file

  • 機能: 新しいファイルを作成したり、既存のファイルの内容を完全に上書きしたりします。
  • 用途: 新しいソースコードファイルの作成、設定ファイルの生成、テストデータの作成などに使用します。
  • 使用例: 新しいコンポーネントファイルButton.tsxを作成する。
    # パスは絶対パスで指定する必要があります
    default_api.write_file(
        file_path='/path/to/your/project/src/components/Button.tsx',
        content='''
        import React from 'react';
    
        const Button = () => {
          return <button>Click Me</button>;
        };
    
        export default Button;
        '''
    )
    

5. replace

  • 機能: ファイル内の一部分(特定の文字列)を、別の文字列に置換します。
  • 用途: リファクタリング、変数名の一括変更、APIエンドポイントの更新など、既存のコードを部分的に修正する際に最もよく使われるツールの一つです。
  • 重要: このツールを成功させるには、old_string(置換前の文字列)に、変更したい箇所を正確に特定できるだけの十分なコンテキスト(前後の行やインデント)を含める必要があります。
  • 使用例: config.js内の古い定数を新しいものに更新する。
    default_api.replace(
        file_path='/path/to/your/project/config.js',
        old_string="const TIMEOUT = 5000;",
        new_string="const TIMEOUT = 10000;"
    )
    

検索・情報収集

6. search_file_content

  • 機能: プロジェクト内の複数のファイルを横断して、指定した文字列や正規表現に一致する箇所を検索します。
  • 用途: 特定の関数や変数がどこで使われているかの影響範囲調査、あるいは特定のエラーメッセージがどのファイルに起因するかの特定に絶大な効果を発揮します。
  • 使用例: プロジェクト全体からfetchWithAuthという関数が呼び出されている箇所を探す。
    default_api.search_file_content(pattern='fetchWithAuth')
    

7. glob

  • 機能: *.ts**/*.mdのようなglobパターンに一致するファイルパスのリストを効率的に検索します。
  • 用途: 特定の拡張子を持つファイルだけをリストアップしたり、テストファイルだけを抽出したりするのに便利です。
  • 使用例: testsディレクトリ配下にある、_spec.pyで終わるテストファイルの一覧を取得する。
    default_api.glob(pattern='tests/**/*_spec.py')
    
  • 機能: Google検索を実行し、ウェブ上の情報を収集します。
  • 用途: ライブラリの公式ドキュメントを探したり、特定のエラーメッセージの解決策をウェブで検索したり、最新の技術トレンドを調査したりする際に使用します。
  • 使用例: 「React 19 new hooks」について検索する。
    default_api.google_web_search(query='React 19 new hooks')
    

9. web_fetch

  • 機能: 指定したURLのコンテンツ(ウェブページの内容)を取得します。
  • 用途: google_web_searchで見つけた記事やドキュメントの具体的な内容を読み込み、その情報を元にコードを生成・修正する場合などに使います。
  • 使用例: Reactの公式サイトからフックに関するドキュメントを取得する。
    default_api.web_fetch(prompt='Summarize the main points from https://react.dev/reference/react/hooks')
    

コマンド実行

10. run_shell_command

  • 機能: npm, git, pytest, lsなど、普段ターミナルで使うシェルコマンドをそのまま実行できます。
  • 用途: 依存関係のインストール (npm install)、テストの実行 (npm run test)、ビルド (npm run build)、Git操作 (git status) など、開発におけるあらゆる自動化タスクに利用できます。
  • 使用例: 依存関係をインストールし、プロジェクトをビルドする。
    default_api.run_shell_command(command='npm install && npm run build')
    

その他

11. save_memory

  • 機能: Geminiが対話の中で記憶しておくべき特定の情報(事実)を保存させます。
  • 用途: 「僕の好きなフレームワークはVue.jsだよ、覚えておいて」のように、ユーザーの好みやプロジェクトのルールを記憶させることで、以降の対話でよりパーソナライズされた回答を得られるようになります。
  • 使用例: プロジェクトで使うNode.jsのバージョンを記憶させる。
    default_api.save_memory(fact='This project uses Node.js version 20.x')
    

まとめ

Gemini CLIの標準ツールは、単体でも強力ですが、これらを組み合わせることで真価を発揮します。

  • 現状把握: list_directory, glob, read_file
  • 調査・分析: search_file_content, google_web_search, web_fetch
  • 実装・修正: write_file, replace
  • 検証・実行: run_shell_command
  • パーソナライズ: save_memory

という一連の流れは、多くの開発タスクに応用可能です。ぜひこれらのツールを積極的に活用し、Gemini CLIとの対話を通じて、これまでにないほど効率的で快適な開発体験を実現してください。

Discussion