MarkdownとBullet Journal

いわゆるプログラマーのつぶやき

WindowsでClaude CodeとGemini CLIを使う

WSLを用いたインストール

昨日(2025年6月25日)、GoogleがGemini CLIを発表した。Claude Codeの対抗馬としての位置付けであり、早速試してみたので、そのインストール方法をClaude Codeとセットで記載する。

Windows環境でClaude CodeとGemini CLIを使う場合、WSL(WSL2)の利用が最も簡単だ。合わせてOpenAI Codex CLIGitHub Copilot CLIもインストールしたので、これら4サービス全てに対応するインストール手順としている。

参考:WSL上でVSCodeを使用すると、DockerやGitHub Copilotも合わせて使用出来るので、その辺りも含めた記事も書いた(下記)。

programmingforever.hatenablog.com

手順

①WSLインストール

  • 最初にPowerShellを「管理者権限」で起動する。Windowsの検索バーに「PowerShell」と入力して一覧で表示された「Windows PowerShell」を右クリックして「管理者として実行」を選択
  • 開いたPowerShellの画面で、WSLのインストールコマンドを入力
wsl --install

実行するとWSL2とUbuntuがインストールされる。なおDockerなどをインストールしている場合は既にWSLがインストールされているので、同じコマンドでubuntuのみ追加インストールとなる。またその場合は、引き続きユーザー名(半角小文字)とパスワードを続いて入力してpowershellでの作業は終了。

ubuntuでインストール

  • Windowsのスタートメニューにubuntuが登場していると思うのでそれをクリックして起動
  • 以下画面で作業
  • ここでユーザー名とパスワードを聞かれたら登録
  • Gemini CLIがnvm20以降推奨、OpenAI Codex CLIがnvm22以降推奨なので22に合わせる
$ sudo apt update  #アップデート
$ sudo apt install -y nodejs npm  # node.jsをインストール
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash  #nvmインストール
$ source ~/.bashrc  # bash再起動
$ nvm install 22  # nvmのVer.22をインストール(Codexは要22以上、Geminiは要20以上)
$ nvm use 22  # 以降Ver.22を使用
$ nvm alias default 22  # 注意:今後Ver.22に固定したい場合

$ npm install -g @anthropic-ai/claude-code  # Claude Code をインストールしたい場合
$ npm install -g @google/gemini-cli  # Gemini CLI をインストールしたい場合
$ npm install -g @openai/codex  # OpenAI Codex CLIをインストールしたい場合

これでインストール完了。

③Gemini CLI起動

以下のコマンドでGemini CLIは起動する。

$ gemini

次に起動画面に出てくる2つの選択を行う。

(1)表示スタイルを選択(そのままエンターでもOK)

 ███            █████████  ██████████ ██████   ██████ █████ ██████   █████ █████
░░░███         ███░░░░░███░░███░░░░░█░░██████ ██████ ░░███ ░░██████ ░░███ ░░███
  ░░░███      ███     ░░░  ░███  █ ░  ░███░█████░███  ░███  ░███░███ ░███  ░███
    ░░░███   ░███          ░██████    ░███░░███ ░███  ░███  ░███░░███░███  ░███
     ███░    ░███    █████ ░███░░█    ░███ ░░░  ░███  ░███  ░███ ░░██████  ░███
   ███░      ░░███  ░░███  ░███ ░   █ ░███      ░███  ░███  ░███  ░░█████  ░███
 ███░         ░░█████████  ██████████ █████     █████ █████ █████  ░░█████ █████
░░░            ░░░░░░░░░  ░░░░░░░░░░ ░░░░░     ░░░░░ ░░░░░ ░░░░░    ░░░░░ ░░░░░

╭──────────────────────────────────────╮
│                                                                          │
│ > Select Theme                            Preview                        │
│ ○ ANSI Dark                               ┌─────────────┐ │
│ ○ Atom One Dark                           │                          │ │
│ ○ Ayu Dark                                │ 1 # function             │ │
│ ● Default Dark                            │ 2 -def fibonacci(n):     │ │
│ ○ Dracula Dark                            │ 3 -    a, b = 0, 1       │ │
│ ○ GitHub Dark                             │ 4 -    for _ in range(n):│ │
│ ○ ANSI Light Light                        │ 5 -       a, b = b, a + b│ │
│ ○ Ayu Light Light                         │ 6 -    return a          │ │
│ ○ Default Light Light                     │                          │ │
│ ○ GitHub Light Light                      │ ╭───────────╮ │ │
│ ○ Google Code Light                       │ │                    │ │ │
│ ○ Xcode Light                             │ │ No changes detected│ │ │
│                                           │ │                     │ │ │
│   Apply To                                │ ╰───────────╯  │ │
│ ● User Settings                           │                          │ │
│ ○ Workspace Settings                      └─────────────┘ │
│                                                                           │
│ (Use Enter to select, Tab to change focus)                                │
│                                                                           │
╰──────────────────────────────────────╯


╭──────────────────────────────────────╮
│                                                                          │
│ > Select Theme                            Preview                        │
│ ○ ANSI Dark                               ┌─────────────┐ │
│ ○ Atom One Dark                           │                          │ │
│ ○ Ayu Dark                                │ 1 # function             │ │
│ ● Default Dark                            │ 2 -def fibonacci(n):     │ │
│ ○ Dracula Dark                            │ 3 -    a, b = 0, 1       │ │
│ ○ GitHub Dark                             │ 4 -    for _ in range(n):│ │
│ ○ ANSI Light Light                        │ 5 -       a, b = b, a + b│ │
│ ○ Ayu Light Light                         │ 6 -    return a          │ │
│ ○ Default Light Light                     │                          │ │
│ ○ GitHub Light Light                      │ ╭───────────╮ │ │
│ ○ Google Code Light                       │ │                    │ │ │
│ ○ Xcode Light                             │ │ No changes detected│ │ │
│                                           │ │                     │ │ │
│   Apply To                                │ ╰───────────╯  │ │
│ ● User Settings                           │                          │ │
│ ○ Workspace Settings                      └─────────────┘ │
│                                                                           │
│ (Use Enter to select, Tab to change focus)                                │
│                                                                           │
╰──────────────────────────────────────╯

~           no sandbox (see /docs)      gemini-2.5-pro (100% context left)

(2)次にログイン(個人ユーザーの選択が無難)

 ███            █████████  ██████████ ██████   ██████ █████ ██████   █████ █████
░░░███         ███░░░░░███░░███░░░░░█░░██████ ██████ ░░███ ░░██████ ░░███ ░░███
  ░░░███      ███     ░░░  ░███  █ ░  ░███░█████░███  ░███  ░███░███ ░███  ░███
    ░░░███   ░███          ░██████    ░███░░███ ░███  ░███  ░███░░███░███  ░███
     ███░    ░███    █████ ░███░░█    ░███ ░░░  ░███  ░███  ░███ ░░██████  ░███
   ███░      ░░███  ░░███  ░███ ░   █ ░███      ░███  ░███  ░███  ░░█████  ░███
 ███░         ░░█████████  ██████████ █████     █████ █████ █████  ░░█████ █████
░░░            ░░░░░░░░░  ░░░░░░░░░░ ░░░░░     ░░░░░ ░░░░░ ░░░░░    ░░░░░ ░░░░░


Tips for getting started:
1. Ask questions, edit files, or run commands.
2. Be specific for the best results.
3. Create GEMINI.md files to customize your interactions with Gemini.
4. /help for more information.

╭──────────────────────────────────────╮
│                                                                           │
│ Select Auth Method                                                        │
│ ● Login with Google                                                      │
│ ○ Gemini API Key                                                         │
│ ○ More...                                                                │
│                                                                           │
│                                                                           │
│ (Use Enter to select)                                                     │
│                                                                           │
╰──────────────────────────────────────╯

これで「>」カーソルが現れるので、自由に日本語を用いて指示を与える事ができる。例えばToDoアプリを作ってと伝えると、数分で完成する(ローカル)。

④Cluade Code起動

(1)APIキーを設定

※最新ではAPIキーの入力は不要になった模様。以下あくまで参考

~/.bashrcにAPIキーを設定する(Ubuntu環境)。Claudeの有料会員登録で取得したAPIキー(sk-***)を環境変数として設定。~/.bashrcの末尾等に1行追記する。

export CLAUDE_API_KEY="sk-***"

(2)起動

  • 上のAPIキーを入れた場合はshellを再起動するか、source ~/.bashrcを実行してリセット(初回のみ)
  • claudeを起動
$ claude

起動したらGemini CLK同様にテキストの表示を好みに合わせて、ブラウザでログインし、双方の吐き出すコードで認証すればOK(初回のみ)。

       ___   ___         ___     _   _     ___      _____
      / __| | |         / _ \   | | | |   |   \    | ____|
     | |    | |        | |_| |  | | | |   | |) |   | |_
     | |    | |        |  _  |  | | | |   |  _ <    |  _|
     | |__  | |____    | | | |  | |_| |   | |_) |   | |___
      \___| |______|   |_| |_|   \___/    |____/    |_____|

  Claude Code - Anthropic's official CLI for Claude

  Welcome to Claude Code! I'm here to help you with software engineering tasks.
╭───────────────────────────────────────────────────╮
│ ✻ Welcome to Claude Code!                         │
│                                                   │
│   /help for help, /status for your current setup  │
│                                                   │
│   cwd: /home/t-wada/todo-app                      │
╰───────────────────────────────────────────────────╯

 Tips for getting started:

 1. Run /init to create a CLAUDE.md file with instructions for Claude
 2. Use Claude to help with file analysis, editing, bash commands and git
 3. Be as specific as you would with another engineer for the best results

あとはGemini CLI同様に使える

⑤Gemini CLI/Claude Codeの利用例:

(1)シェルを用いた対話

シェル操作を行う範囲なら、なんでも依頼出来る。

  • シェル操作(フォルダ削除や移動)
  • Git操作(コミット、リセット、プルリクなど)
  • リファクタリング
  • コード/関数の解説
  • 未使用変数の削除
  • テスト実行、エラー修正

(2)プロジェクトへの理解

Claude Codeのプロンプトで/initと入力すると、指定プロジェクトのディレクトリ構成や、package.jsonyamlなど設定ファイルを解析し、プロジェクト概要(ビルド方法、主要な技術スタック、ディレクトリ構成など)を記述した「CLAUDE.md」を生成する。この利用で人と生成AI(Claude Code)の両者共に指定プロジェクトの中身を可視化できるため、AI生成の精度向上が期待できる。

Gemini CLIには同等のコマンドはないが、「**プロジェクトの概要(ビルド方法、主要な技術スタック、ディレクトリ構成など)を記述した「Gemini.md」を作って」と言えばよい。

⑥OpenAI Codex CLIのインストール(WSL上)

※インストール自体は、上のオールインストールで完了する。以下は個別でインストールする方法を記載

WSL (Ubuntu) で OpenAI Codex CLI を入れる最短ルート

ステップ コマンド 補足
1. Node 22 以上を準備 bash nvm install 22 # 初回だけ nvm use 22 # セッション用 nvm alias default 22 # 任意、常用なら Codex CLI の公式要件は Node 22+github.com(Node 20 でも動く場合がありますが、将来のアップデートで外れる可能性あり)
2. グローバルにインストール bash npm install -g @openai/codex nvm 管理下なので sudo 不要。EACCES エラーも起きません。help.openai.com
3. API キーを渡す bash export OPENAI_API_KEY="sk-..." (恒久化するなら echo 'export OPENAI_API_KEY="sk-..."' >> ~/.bashrc .env ファイルを置いても自動で読み込まれます。github.com
4. 起動テスト bash codex "explain this repo to me" codex だけで対話モード、--auto-edit / --full-auto でより自律的に実行できます。

使い始めに役立つオプション

目的 説明
モデルを指定 codex -m gpt-4o --model で任意の Chat Completions API モデルを利用
承認モード codex --auto-edit SuggestAuto EditFull Auto の順に権限が広がる
サンドボックスを Docker 化 ./scripts/run_in_container.sh Linux ではデフォルトで OS サンドボックス無し。公式スクリプトで隔離実行可github.com
他プロバイダーを使う codex --provider gemini export GEMINI_API_KEY=... のようにキーを追加

WSL 固有のチェックポイント

項目 内容
Node の衝突 which node/home/…/.nvm/versions/node/v22…/bin/node を指すか確認。Windows 側の node.exe が先に拾われるとエラーになります。
ブラウザー連携 Codex CLI は基本的に API キー認証なのでブラウザーは不要。ただし、別ツール同梱の xdg-open でリンクが開かない場合は wslu を入れて export BROWSER=wslview が便利(先ほどの gh と同様)。
権限エラー もし EACCES が出る場合は npm config get prefix/usr 配下になっていないか確認し、nvmnpm config set prefix ~/.npm-global で解決します。

GitHub Copilot CLIのインストール(WSL上)

GitHub有料サービスアカウントが必要

(1) CLI をインストール済みか確認

gh --version

(2)インストールされていない場合:

# Ubuntu / Debian系 (WSL) での gh CLI インストール
# 以下5つのコマンドを実行
type -p curl >/dev/null || sudo apt install curl -y
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | \
  sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg

sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] \
https://cli.github.com/packages stable main" | \
  sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null

sudo apt update

sudo apt install gh -y

(3)GitHub にログイン(まだの場合)

gh auth login
# ブラウザで GitHub に認証 → WSL に戻って完了

(4)Copilot CLI 拡張をインストール

gh extension install github/gh-copilot

成功すれば以下のようなコマンドが使えるようになる。

gh copilot suggest "curl で HTML をダウンロードする方法は?"
gh copilot explain 'tar -czvf archive.tar.gz ./src'

正直、日本語での使い勝手はいまいち。