3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【無料配布】Gemini CLIをWindowsでポータブル実行するバッチファイルを作った話【Node.js不要】

Posted at

Gemini_CLI_Portable(qiita).png

はじめに:完成品(お急ぎの方へ)

この記事で解説する、「ダブルクリックするだけで、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つだけになりました。

node.exe (Node.jsの実行エンジン本体)
https://nodejs.org/download/release/latest/win-x64/node.exe
gemini.js (Gemini CLIのスクリプト本体)
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.exegemini.jsを取得します。古いファイルは実行前に自動で削除されるため、不完全なダウンロードによるトラブルを防ぎます。

  • 堅牢なダウンロード処理:
    PowerShellのWebClientを利用し、ダウンロードに失敗した場合は自動で最大3回リトライします。また、サーバー側でアクセスを拒否されないよう、User-Agentヘッダーを設定するなどの工夫も凝らしています。

  • ショートカット自動作成:
    利便性のために、同じフォルダ内に起動用のショートカットを自動で作成します。この処理は、複雑なエスケープ問題を回避するため、一時的なPowerShellスクリプトファイルを生成・実行・削除する、最も確実な方法を採用しています。

  • 初回起動の完全ガイド:
    初めてツールを使うユーザーが戸惑わないよう、初回認証の手順などをテキストで分かりやすく案内します。

バッチファイル全コード

以下が、そのバッチファイルの全コードです。セキュリティフィルタによってGitHubにアクセスできない環境の方は、メモ帳に貼り付けて拡張子.batとして保存し、実行してください。

Gemini_CLI_Portable.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

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?