はじめに:完成品(お急ぎの方へ)
この記事で解説する、「ダブルクリックするだけで、Windows上でGemini CLIの環境を自動構築し、すぐに使えるようにするバッチファイル」は、以下のGitHubリポジトリで公開しています。
👉 GitHubリポジトリで最新版を今すぐダウンロードする (2.22KB)
- Node.jsなどのインストール不要
- 管理者権限不要
- USBメモリからでも実行可能
この記事では、このバッチファイルが生まれた背景と、その技術的な詳細について解説します。
なぜこのバッチファイルを作ったのか? ~従来の導入方法の課題~
Googleの強力なAIモデル「Gemini」をCUIから直接操作できる「Gemini CLI」は非常に便利なツールですが、従来の導入方法は、特にWindowsユーザーにとって多くの障壁がありました。
-
Node.js
の事前インストールが必須- 多くの導入記事では「Node.jsはインストール済み」が前提で、初心者には最初のハードルでした。
-
npm install -g
と管理者権限- グローバルインストールには管理者権限が必須。学校や会社のPCなど、権限が制限された環境ではこの時点で詰んでしまいます。
-
環境依存のトラブル
-
Path
環境変数の問題や、PowerShellの実行ポリシー制限など、解決には専門知識が必要なトラブルが多くありました。
-
これらの手順は、「ただGemini CLIを使ってみたいだけ」という目的のユーザーにとっては、あまりにも高く、面倒なハードルでした。
革命的変化:gemini.jsの単独配布開始
この状況は、2025年7月10日頃、GoogleがGemini CLIの公式GitHubリリースページで、gemini.js
という単一のJavaScriptファイルを直接配布し始めたことで、劇的に変わりました。
これは、従来の「npmパッケージ」という開発者向けの形式から、「独立したスクリプトファイル」として配布されるようになった、大きな変化です。
これにより、Gemini CLIの実行に必要なファイルは、以下のわずか2つだけになりました。
https://nodejs.org/download/release/latest/win-x64/node.exe
https://github.com/google-gemini/gemini-cli/releases/latest/download/gemini.js
この変化により、複雑なインストール作業、それに伴う大量の依存ファイル群(node_modules
)、そして管理者権限の要求が完全に不要になったのです。
「完全ポータブル化」の実現
この「2ファイルだけで動く」という特性は、私たちに完全な自由をもたらしました。
- ✅ インストール不要: PCのレジストリやシステムフォルダを一切汚しません。
- ✅ 管理者権限不要: ファイルをダウンロードしてコマンド実行するだけです。
- ✅ 完全ポータブル: USBメモリやネットワークドライブに置くだけで、どのWindows PCでもGemini CLIを即座に再現できます。
これにより、これまで導入が難しかった企業や教育機関のPCでも、あるいは出張先のPCでも、誰でも気軽に、そして安全にGemini CLIを試してみることができるようになりました。
Note
もちろん、従来のインストール方法の上位互換というわけではありません。管理者権限なしの環境では、管理者権限が必要な操作(例:C:\Program Files
への書き込みなど)はできませんので、ご注意ください。
バッチファイルの実装と技術解説
このポータブル化の恩恵を、ダブルクリック一つで誰でも受けられるようにしたのが、今回作成したバッチファイルです。
設計思想と主要機能
このバッチファイルは「ミニマル実装」と「ユーザー体験の最大化」を両立させることを目指しました。
-
自動クリーンダウンロード:
実行のたびに、常に公式サイトから最新版のnode.exe
とgemini.js
を取得します。古いファイルは実行前に自動で削除されるため、不完全なダウンロードによるトラブルを防ぎます。 -
堅牢なダウンロード処理:
PowerShellのWebClient
を利用し、ダウンロードに失敗した場合は自動で最大3回リトライします。また、サーバー側でアクセスを拒否されないよう、User-Agent
ヘッダーを設定するなどの工夫も凝らしています。 -
ショートカット自動作成:
利便性のために、同じフォルダ内に起動用のショートカットを自動で作成します。この処理は、複雑なエスケープ問題を回避するため、一時的なPowerShellスクリプトファイルを生成・実行・削除する、最も確実な方法を採用しています。 -
初回起動の完全ガイド:
初めてツールを使うユーザーが戸惑わないよう、初回認証の手順などをテキストで分かりやすく案内します。
バッチファイル全コード
以下が、そのバッチファイルの全コードです。セキュリティフィルタによってGitHubにアクセスできない環境の方は、メモ帳に貼り付けて拡張子.bat
として保存し、実行してください。
@echo off
setlocal enabledelayedexpansion
:: =================================================================
:: Windows用 Gemini CLI ポータブルバッチファイル (20250713版)
:: =================================================================
::
:: このバッチファイルは、Gemini CLIの実行に必要なコンポーネント
:: (node.exe, gemini.js)を自動でダウンロードし、起動します。
:: --- 初期設定 ---
set "NODE_URL=https://nodejs.org/download/release/latest/win-x64/node.exe"
set "GEMINI_URL=https://github.com/google-gemini/gemini-cli/releases/latest/download/gemini.js"
set "SHORTCUT_NAME=Gemini CLI.lnk"
cd /d "%~dp0"
echo セットアップを開始します...
echo.
echo --- [1/2] node.exe のダウンロード ---
del "node.exe" >nul 2>&1
if not errorlevel 1 echo 既存の node.exe を削除しました。
echo 最新版をダウンロードしています...
call :DownloadFile "%NODE_URL%" "node.exe"
if errorlevel 1 (
echo.
echo [エラー] node.exe のダウンロードに失敗しました。
goto :ErrorExit
)
for /f "tokens=*" %%v in ('node.exe --version 2^>nul') do set "NODE_VER=%%v"
if defined NODE_VER (
echo -^> 最新版 !NODE_VER! のダウンロードが完了しました。
) else (
echo -^> 最新版のダウンロードが完了しました。
)
echo.
echo --- [2/2] gemini.js のダウンロード ---
del "gemini.js" >nul 2>&1
if not errorlevel 1 echo 既存の gemini.js を削除しました。
echo 最新版をダウンロードしています...
call :DownloadFile "%GEMINI_URL%" "gemini.js"
if errorlevel 1 (
echo.
echo [エラー] gemini.js のダウンロードに失敗しました。
goto :ErrorExit
)
for %%f in (gemini.js) do set "GEMINI_SIZE=%%~zf"
echo -^> 最新版のダウンロードが完了しました (サイズ: !GEMINI_SIZE! バイト)。
echo.
echo --- ショートカットの作成 ---
del "%SHORTCUT_NAME%" >nul 2>&1
if not errorlevel 1 echo 既存のショートカットを削除しました。
echo ショートカットを作成しています...
call :CreateShortcut
if errorlevel 1 (
echo [警告] ショートカットの作成に失敗しました。手動で作成してください。
) else (
echo -^> ショートカットが作成されました。
)
echo.
echo ======================================================================
echo ★ セットアップが完了しました! ★
echo ======================================================================
echo.
echo ■ 今後の使い方
echo ----------------------------------------------------------------
echo [推奨] 同階層にある「%SHORTCUT_NAME%」をダブルクリックして起動
echo [手動] コマンドプロンプト等で「node.exe gemini.js」を実行
echo.
echo 定期的にこのバッチファイルを実行して、最新版に更新することを
echo おすすめします。
echo.
echo ■ 重要:初回起動時の手順
echo ----------------------------------------------------------------
echo この後、起動するPowerShellで、初回のみGoogleアカウントでの
echo 認証が必要です。
echo.
echo (1) ブラウザが自動で起動します。
echo.
echo (2) 画面の指示に従い、Googleアカウントでログインしてください。
echo.
echo ======================================================================
echo.
echo 何かキーを押すと、新しいウィンドウ(PowerShell)で Gemini CLI を起動します...
pause >nul
start "Gemini CLI" powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"$env:NODE_NO_WARNINGS = '1'; " ^
"Write-Host 'Gemini CLI を起動しました。終了するにはウィンドウを閉じるか /quit を入力してください。' -ForegroundColor Green; " ^
"Write-Host ''; " ^
"& { Set-Location '%~dp0'; .\node.exe .\gemini.js %* }"
goto :End
:: =================================================================
:: サブルーチン
:: =================================================================
:CreateShortcut
setlocal
set "CURRENT_DIR=%CD%"
powershell -ExecutionPolicy Bypass -NoProfile -Command ^
"$WshShell = New-Object -ComObject WScript.Shell; " ^
"$Shortcut = $WshShell.CreateShortcut('%CURRENT_DIR%\%SHORTCUT_NAME%'); " ^
"$Shortcut.TargetPath = 'powershell.exe'; " ^
"$Shortcut.Arguments = '-ExecutionPolicy Bypass -NoExit -Command \"$env:NODE_NO_WARNINGS = ''1''; Set-Location ''%CURRENT_DIR%''; ./node.exe ./gemini.js\"'; " ^
"$Shortcut.WorkingDirectory = '%CURRENT_DIR%'; " ^
"$Shortcut.IconLocation = 'powershell.exe,0'; " ^
"$Shortcut.Description = 'Gemini CLIを起動します'; " ^
"$Shortcut.Save()" >nul 2>&1
endlocal
exit /b %ERRORLEVEL%
:DownloadFile
setlocal
set "URL=%~1"
set "OUTFILE=%~2"
set "MAX_RETRIES=3"
for /L %%i in (1,1,%MAX_RETRIES%) do (
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"try { " ^
" $wc = New-Object System.Net.WebClient; " ^
" $wc.Headers.Add('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'); " ^
" $wc.DownloadFile('%URL%', '%OUTFILE%'); " ^
" exit 0; " ^
"} catch { " ^
" exit 1; " ^
"}" >nul 2>&1
if not errorlevel 1 (
for %%f in ("%OUTFILE%") do if %%~zf gtr 0 exit /b 0
)
if %%i neq %MAX_RETRIES% (
echo ...ダウンロードに失敗、2秒後に再試行します ^(%%i/%MAX_RETRIES%^).
timeout /t 2 /nobreak >nul
)
)
endlocal
exit /b 1
:ErrorExit
echo ネットワーク接続などを確認して、再度実行してください。
pause
:End
endlocal
おわりに:創造的な作業に集中しよう
技術的な設定に時間を奪われることなく、誰もがAIの恩恵を受けられるべきです。このバッチファイルが、あなたの創造的な作業に集中するための、ささやかな一助となれば幸いです。
Gemini CLIはプレビュー期間中、1分間60リクエスト、1日1,000リクエストまで、Gemini 2.5 Proを無料で利用できます。
ぜひGitHubリポジトリからこのツールをダウンロードして、新しいAI活用の世界を体験してください。
👇インストール型の方が良いという方向けに、自動インストールバッチも作成しています。
https://qiita.com/km170/items/fb70736dd2ba5464e54e