
Google Antigravity CLI を Windows に導入し、日本語で Todo アプリを作らせてみた
はじめに
Antigravity CLI 1.0.6 を Windows に導入し、Gemini 3.5 Flash (Medium) を使って日本語で README 作成と PowerShell 製 Todo アプリの実装を依頼しました。
基本的な日本語指示には十分追従し、小規模な実装であればスムーズに進められました。一方、筆者の Windows 環境では --sandbox 利用時にシェルコマンドが停止する事象が確認されました。
普段 Claude Code を常用している立場から見ると、プロンプトを入力し、必要に応じてツール実行を許可しながら進める体験はかなり近いです。今回のような簡単なタスクでは、体感差は大きくありませんでした。
Antigravity とは
Antigravity は、Google が提供するエージェント型の開発プラットフォームです。Antigravity CLI を使うと、ターミナルから自然言語でコードの調査、編集、コマンド実行などを依頼できます。Antigravity CLI は、Antigravity の機能をターミナルから利用するためのインターフェースで、サブエージェント、スラッシュコマンド、MCP、Skills などにも対応しています。
検証環境
- Windows 11
- PowerShell 7.4.14
- Antigravity CLI 1.0.6
- Gemini 3.5 Flash (Medium)
- 検証用 Google アカウント
対象読者
- Antigravity CLI を Windows で試してみたい方
- 日本語の指示でどの程度コーディングタスクを進められるか知りたい方
- Claude Code など、ほかのコーディングエージェントを利用している方
参考
- Antigravity CLI Getting Started
- Antigravity CLI Install
- An important update: Transitioning Gemini CLI to Antigravity CLI
インストールと起動
公式ドキュメントでは、Windows PowerShell 向けに次のインストール方法が案内されています。
irm https://antigravity.google/cli/install.ps1 | iex
実行したインストール・確認コマンド
Invoke-WebRequest `
-Uri https://antigravity.google/cli/install.ps1 `
-OutFile .\install-antigravity.ps1
Get-Content .\install-antigravity.ps1
Get-FileHash .\install-antigravity.ps1 -Algorithm SHA256
& .\install-antigravity.ps1
& "$env:LOCALAPPDATA\agy\bin\agy.exe" --version
インストール先は %LOCALAPPDATA%\agy\bin\agy.exe で、バージョン 1.0.6 が導入されました。
初回起動時には Google アカウントでの認証が要求され、ブラウザでログインする必要がありました。認証後、現在のプロジェクトパスとモデル、プロンプト入力欄が表示されます。

日本語で簡単なタスクを試す
最初に、プロジェクトの絶対パス、ファイルの有無、使用モデル、サンドボックスの状態を日本語で報告するよう依頼しました。

回答は日本語で返り、モデル名などを確認できました。

最初の調査で入力したプロンプトと AI 回答原文
入力したプロンプトです。
現在のプロジェクトディレクトリを、ファイルを変更せずに調査してください。次の内容を日本語で報告してください。
1. プロジェクトの絶対パス
2. 現在ファイルが存在するか
3. 使用しているモデル
4. ターミナルのサンドボックスが有効か
ファイルの作成や編集は行わず、現在のプロジェクトディレクトリ外を対象とするコマンドも実行しないでください。
AI 回答原文です。絶対パスとユーザー名は公開用にマスクしています。
調査結果を以下に報告いたします。
### 1. プロジェクトの絶対パス
* ターゲットディレクトリ: [検証用ディレクトリ]
* プロジェクトルート: [プロジェクトルート]
### 2. 現在ファイルが存在するか
* 現在のターゲットディレクトリ内は空(ファイルやフォルダが存在しない状態)です。
* プロジェクトルートには、AGENTS.md などのドキュメント、.git、**** などの管理・ドキュメントフォルダが存在しています。
### 3. 使用しているモデル
* Gemini 3.5 Flash (Gemini 3.5 Flash (Medium))
### 4. ターミナルのサンドボックスが有効か
* 無効(ホスト上で直接実行)です。
* ターミナルコマンドがホストマシンのユーザーアカウントで直接実行されることを確認しました。
作業要約:
現在のプロジェクトディレクトリをファイルを変更せずに調査し、プロジェクトの絶対パス、ファイルの存在有無、使用しているモデル名、およびターミナルサンドボックスが無効であることを確認して報告しました。
続いて、指定した見出しと3項目の箇条書きを持つ README.md を作成するよう依頼しました。見出し、箇条書き数、項目の順番を正確に守り、他のファイルも作成していませんでした。
README 作成で入力したプロンプトと AI 回答原文
入力したプロンプトです。
現在のプロジェクトディレクトリに README.md を作成してください。
要件:
- 1 行目は正確に「# Antigravity CLI スモークテスト」とする
- 箇条書きは正確に 3 項目だけ追加する
- 3 項目では、順番に「ファイル作成」「指示への追従」「Markdown 出力」について日本語で説明する
- 他のファイルは作成も変更もしない
- 編集後、README.md の全内容を表示し、変更内容を日本語で要約する
AI 回答原文です。ファイルリンクのみプレーンテキストへ変更しています。
現在のプロジェクトディレクトリに README.md を作成しました。作成したファイルの全内容を表示し、変更内容を要約します。
### 作成した README.md の全内容
# Antigravity CLI スモークテスト
- ファイル作成: Antigravity CLIが指定されたディレクトリに新しくファイルを生成できるかを確認します。
- 指示への追従: ユーザーから与えられた具体的な要件や指示に対して、正確に従ってタスクを実行できるかを検証します。
- Markdown 出力: 指定された見出しや箇条書きのフォーマットに従い、適切なMarkdownおよび日本語で出力ができるかをテストします。
### 変更内容の要約
* ファイルの新規作成: 検証用ディレクトリの直下に、新しく README.md を作成しました。
* 要件の適用:
* 1行目のタイトルを正確に「# Antigravity CLI スモークテスト」としました。
* 箇条書きを正確に3項目とし、順番に「ファイル作成」「指示への追従」「Markdown 出力」についての日本語の説明を記載しました。
* 影響範囲: 要件に基づき、他のいかなるファイルも作成・変更していません。
もう少し実装らしいタスクとして、PowerShell 7 製の Todo アプリを依頼しました。
Todo アプリの実装で入力したプロンプトと AI 回答原文
入力したプロンプトです。
このプロジェクトに、小規模な PowerShell 7 製コマンドライン Todo アプリケーションを作成してください。
要件:
- todo.ps1 と TODO_APP.md を作成する
- Todo 項目は現在のプロジェクトディレクトリにある todo-data.json に保存する
- 次のコマンドに対応する
- pwsh ./todo.ps1 add "task text"
- pwsh ./todo.ps1 list
- pwsh ./todo.ps1 done 1
- list では各項目の数値 ID、完了状態、本文を表示する
- データファイルが存在しない場合や無効な ID が指定された場合も、クラッシュせず適切な日本語メッセージを表示する
- TODO_APP.md に簡潔な日本語の使用例を記載する
- README.md は変更しない
- 実装後に短い手動スモークテストを実行し、実行したコマンドと結果を日本語で報告する
AI 回答原文です。ファイルリンクのみプレーンテキストへ変更しています。
現在のプロジェクトディレクトリに、PowerShell 7 製の Todo アプリケーション todo.ps1 および使用ドキュメント TODO_APP.md を作成し、動作検証(手動スモークテスト)を行いました。
### 1. 作成したファイル
* アプリケーション本体: todo.ps1
* ドキュメント: TODO_APP.md
* データ保存ファイル(自動生成): todo-data.json
### 2. 手動スモークテストの実行結果報告
#### テスト 1: データファイルが存在しない状態でのリスト表示
* 実行コマンド: pwsh ./todo.ps1 list
* 結果: Todo項目はありません。
#### テスト 2: データファイルが存在しない状態でのタスク完了操作
* 実行コマンド: pwsh ./todo.ps1 done 1
* 結果: エラー: タスクが登録されていません。
#### テスト 3: タスクの新規追加
* 実行コマンド:
* pwsh ./todo.ps1 add "買い物に行く"
* pwsh ./todo.ps1 add "ブログを書く"
* 結果:
* タスクを追加しました: [ID: 1] 買い物に行く
* タスクを追加しました: [ID: 2] ブログを書く
#### テスト 4: タスクの登録リスト表示
* 実行コマンド: pwsh ./todo.ps1 list
* 結果:
* ID: 1 | [未完了] | 買い物に行く
* ID: 2 | [未完了] | ブログを書く
#### テスト 5: 存在しないIDまたは無効なIDの指定テスト
* pwsh ./todo.ps1 done 99
* エラー: 指定されたID (99) のタスクが見つかりません。
* pwsh ./todo.ps1 done abc
* エラー: 無効なIDが指定されました。数値で指定してください。
#### テスト 6: タスクの完了処理と再確認
* 実行コマンド:
* pwsh ./todo.ps1 done 1
* pwsh ./todo.ps1 list
* 結果:
* タスクを完了にしました: [ID: 1]
* ID: 1 | [完了] | 買い物に行く
* ID: 2 | [未完了] | ブログを書く
作業要約:
PowerShell 7 に対応した Todo CLI アプリ todo.ps1 と説明ドキュメント TODO_APP.md を作成しました。テストによって、データなしや無効ID時にもクラッシュしない堅牢なエラーハンドリングが動作していることを確認し、README.md に影響を与えることなく完了しました。
生成されたアプリは、タスクの追加、一覧表示、完了、無効な ID の処理まで動作しました。日本語のエラーメッセージと使用方法のドキュメントも作成されています。

Gemini 3.5 Flash (Medium) は比較的軽量なモデルという印象がありましたが、今回の規模では十分な出力が得られました。厳密な性能比較や大規模開発の検証ではありませんが、簡単なタスクを進める範囲では問題なさそうという所感です。
指示入力、ツール実行の許可、成果物の確認という基本的な流れは Claude Code とほぼ同じであり、Claude Code 常用者でも戸惑いにくいと感じました。
試して分かった注意点
Windows 環境で --sandbox 利用時にコマンドが停止する事象があった
最初はターミナルの制限を有効にするため、次のように --sandbox を付けて起動しました。
agy --sandbox
ところが、許可後の Get-Location や git status が Running のまま停止しました。隠しディレクトリ配下を避け、通常ディレクトリで起動し直しても再現します。--sandbox を外すと、同じ読み取りタスクは完了しました。
ログを確認すると、モデルはプロンプト送信から2〜3秒で応答を開始し、数秒でツールの許可要求まで進んでいました。遅かったのはモデルの推論ではなく、Windows のサンドボックスとシェル実行の連携部分と考えられます。
本記事では原因の特定までは行っておらず、Windows 11 / PowerShell 7.4.14 / Antigravity CLI 1.0.6 の筆者環境で確認した事象として扱います。今後のバージョンや異なる環境では挙動が変わる可能性があります。
権限表示はよく確認する
読み取り確認の実行後、ログ上の権限表示には read_file(/) write_file(/) が記録されていました。これが実際のファイルアクセスを意味するとは限りませんが、許可した操作とログ上の権限表示に差が出る場合があるため、確認しておくのがよさそうです。
また、今回はサンドボックス状態の確認を依頼していたため、実行ユーザー確認として whoami が選ばれた可能性があります。読み取り中心の依頼でも環境確認コマンドが提案されることはあるため、画面に表示される対象コマンドとパスは実行前に確認した方がよさそうです。
実行予定のコマンドは次のように表示され、許可方法を選択肢の中から選ぶ形です。

自己レビューだけでは見逃しが残った
Todo アプリの実装後、Antigravity CLI 自身へ厳格なコードレビューと修正を依頼しました。壊れた JSON を空データとして扱い、後から上書きするデータ消失リスクは発見して修正できました。
自己レビューで入力したプロンプトと AI 回答原文
入力したプロンプトです。
先ほど作成した Todo アプリケーションを、厳格なコードレビュアーとしてレビューしてください。
次の観点を確認してください。
- 正しくない動作
- データ破損のリスク
- 不十分な入力検証
- 分かりにくいドキュメント
関連する検証を実行してください。具体的な問題が見つかった場合は修正し、検証を再実行してください。無関係な機能は追加しないでください。最後に、発見事項、修正内容、残っているリスクを日本語で簡潔に一覧化してください。
AI 回答原文です。ファイルリンクのみプレーンテキストへ変更しています。
厳格なコードレビュアーとして、作成した Todo アプリケーションのコード todo.ps1 とドキュメント TODO_APP.md をレビュー・検証し、見つかった問題点を修正しました。
以下に「発見事項」「修正内容」「残っているリスク」を報告します。
### 1. 発見事項 (Issues Found)
* データ消失/破損のリスク (高)
* 現象: todo-data.json の JSON 構文が何らかの原因で破損している場合、Get-TodoData は警告を出すだけで処理を続行し、空のリストを返していました。この状態でユーザーが add や done を行うと、既存のデータが空リストベースの新規 JSON で上書きされ、完全に消滅する仕様になっていました。
* 不十分な入力検証/ユーザビリティ (低)
* 現象: pwsh ./todo.ps1 add 本を 読む のように、タスクをダブルクォーテーションで囲まずに実行した場合、第2引数だけが登録され、以降の引数が警告なしで無視される状態でした。
* 分かりにくいドキュメント (低)
* 現象: データ破損が発生した際の保護動作や、クォーテーションを省略した場合の引数の扱いについて TODO_APP.md に説明がありませんでした。
### 2. 修正内容 (Fixes Implemented)
* データ消失防止のための即時中断
* todo.ps1 の Get-TodoData での例外処理において、Write-Error によるエラー報告および exit 1 による実行即時中断を行うように修正しました。
* 複数引数の自動結合対応
* add アクションにて、第2引数以降のすべての要素をスペースで自動結合するよう修正しました。
* ドキュメントの明確化
* TODO_APP.md を更新し、クォーテーションの省略方法および、データ破損時に上書きを防ぐための安全なエラー終了挙動に関する説明を追加しました。
#### 修正後の動作検証結果
* 破損ファイル保護検証: 壊れた JSON ファイルを用意して add を実行した際、期待通りエラー終了し、元のファイル内容が上書きされず保護されることを検証しました。
* クォーテーション省略検証: pwsh ./todo.ps1 add 本を 読む で実行し、list コマンドで「本を 読む」という全体が正常に1件のタスクとして保存されていることを確認しました。
### 3. 残っているリスク (Remaining Risks)
* 同時実行時のファイルロック競合 (中)
* 2つのターミナルからほぼ同時にタスクの追加や完了コマンドを実行した場合、排他ロック制御や変更の自動マージが行われないため、直前の変更が反映されない可能性があります。
作業要約:
データ破損時にファイルが誤って上書きされる致命的なバグの修正と、クォーテーション省略入力を可能にする改善を行い、それぞれの検証を実行・確認しました。これらに合わせて TODO_APP.md の更新も完了しています。
一方、保存失敗後も成功メッセージを表示して終了コード 0 を返す問題や、保存処理が原子的ではない点、2件目以降の ID が JSON 上で 2.0 になる点は見逃しました。最終的な品質確認には人間や別のモデルの AI エージェントによるレビューが必要と考えられます。
まとめ
Antigravity CLI を Windows へ導入し、日本語によるアプリの小規模実装を試しました。Gemini 3.5 Flash (Medium) でも簡単なタスクには十分で、今回のような小規模タスクに限れば Claude Code に近い操作感で進められました。注意点として、筆者環境では --sandbox 利用時にシェルコマンドが停止する事象がありました。Antigravity CLI を Windows や日本語環境で試す際の参考になれば幸いです。
付録
Antigravity CLI が最終的に生成・更新したファイルを掲載します。
README.md
# Antigravity CLI スモークテスト
- ファイル作成: Antigravity CLIが指定されたディレクトリに新しくファイルを生成できるかを確認します。
- 指示への追従: ユーザーから与えられた具体的な要件や指示に対して、正確に従ってタスクを実行できるかを検証します。
- Markdown 出力: 指定された見出しや箇条書きのフォーマットに従い、適切なMarkdownおよび日本語で出力ができるかをテストします。
todo.ps1
$OutputEncoding = [System.Text.Encoding]::UTF8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$dataPath = Join-Path $PSScriptRoot "todo-data.json"
# ヘルパー関数: データの読み込み
function Get-TodoData {
if (-not (Test-Path $dataPath)) {
return @()
}
try {
$content = Get-Content -Path $dataPath -Raw -ErrorAction Stop
if ([string]::IsNullOrWhiteSpace($content)) {
return @()
}
$data = ConvertFrom-Json $content -ErrorAction Stop
# 配列であることを保証する(カンマで配列の自動アンロールを防ぐ)
if ($data -isnot [array]) {
return ,@($data)
}
return ,$data
}
catch {
Write-Error "エラー: データファイル(todo-data.json)の読み込みまたは解析中にエラーが発生しました。データの破損を防ぐため処理を中断します。詳細: $_"
exit 1
}
}
# ヘルパー関数: データの保存
function Save-TodoData ($data) {
try {
$json = ConvertTo-Json $data -Depth 3
Set-Content -Path $dataPath -Value $json -Encoding utf8 -ErrorAction Stop
}
catch {
Write-Error "データの保存に失敗しました: $_"
}
}
if ($args.Count -lt 1) {
Write-Host "使用方法:"
Write-Host " pwsh ./todo.ps1 add `"タスク内容`""
Write-Host " pwsh ./todo.ps1 list"
Write-Host " pwsh ./todo.ps1 done <ID>"
exit 1
}
$action = $args[0].ToLower()
switch ($action) {
"add" {
$taskArgs = $args[1..($args.Count - 1)]
$taskText = $taskArgs -join " "
if ($args.Count -lt 2 -or [string]::IsNullOrWhiteSpace($taskText)) {
Write-Host "エラー: 追加するタスクの内容を指定してください。"
exit 1
}
$todos = Get-TodoData
$newId = 1
if ($todos.Count -gt 0) {
$newId = ($todos | Measure-Object -Property id -Maximum).Maximum + 1
}
$newTodo = [PSCustomObject]@{
id = $newId
text = $taskText
done = $false
}
$todos += $newTodo
Save-TodoData $todos
Write-Host "タスクを追加しました: [ID: $newId] $taskText"
}
"list" {
$todos = Get-TodoData
if ($todos.Count -eq 0) {
Write-Host "Todo項目はありません。"
exit 0
}
Write-Host "--- Todoリスト ---"
foreach ($todo in $todos) {
$status = if ($todo.done) { "[完了]" } else { "[未完了]" }
Write-Host "ID: $($todo.id) | $status | $($todo.text)"
}
}
"done" {
if ($args.Count -lt 2) {
Write-Host "エラー: 完了にするタスクの数値IDを指定してください。"
exit 1
}
$idStr = $args[1]
$targetId = 0
if (-not [int]::TryParse($idStr, [ref]$targetId)) {
Write-Host "エラー: 無効なIDが指定されました。数値で指定してください。"
exit 1
}
$todos = Get-TodoData
if ($todos.Count -eq 0) {
Write-Host "エラー: タスクが登録されていません。"
exit 1
}
$found = $false
foreach ($todo in $todos) {
if ($todo.id -eq $targetId) {
$todo.done = $true
$found = $true
break
}
}
if (-not $found) {
Write-Host "エラー: 指定されたID ($targetId) のタスクが見つかりません。"
exit 1
}
Save-TodoData $todos
Write-Host "タスクを完了にしました: [ID: $targetId]"
}
default {
Write-Host "エラー: 不明なコマンドです。add, list, done のいずれかを指定してください。"
exit 1
}
}
TODO_APP.md
# Todo アプリケーション使用方法
PowerShell 7 (`pwsh`) で動作するシンプルなコマンドライン Todo アプリケーションです。
## 使用例
### 1. タスクの追加
新しいタスクを追加するには `add` コマンドを使用します。
タスク内容はダブルクォーテーション `""` で囲むことも、省略することも可能です。
```powershell
# ダブルクォーテーションで囲む場合
pwsh ./todo.ps1 add "買い物に行く"
# ダブルクォーテーションを省略する場合(引数が自動で結合されます)
pwsh ./todo.ps1 add ブログを 書く
```
### 2. タスクの一覧表示
登録されているタスクを一覧表示するには `list` コマンドを使用します。
```powershell
pwsh ./todo.ps1 list
```
### 3. タスクの完了
タスクを完了状態にするには `done` コマンドにタスクの数値 ID を指定します。
```powershell
pwsh ./todo.ps1 done 1
```
### 4. 安全性とエラーハンドリング
データファイルが破損している場合は、既存データを誤って上書きしないよう処理を中断します。
todo-data.json
{
"id": 1,
"text": "本を 読む",
"done": false
}






