クラウド LLM が日常になって久しい一方で、「このデータは外に出したくない」「オフライン環境で動かしたい」「推論コストを下げたい」という現場の声は着実に増えています。Antigravity を中心に据えた開発フローで、この 3 つの要件に対応する最短経路は、Ollama でローカルに Gemma 4 系モデルを走らせ、Antigravity の API エンドポイントとして登録することです。
なぜ Ollama が Antigravity との相性が良いのか
ローカル LLM 実行環境はいくつかあります。llama.cpp 直接、LM Studio、vLLM、そして Ollama です。その中で Ollama が Antigravity と組み合わせたときに有利なのは、次の 3 点に集約されます。
第一に、OpenAI 互換エンドポイント(/v1/chat/completions)を標準で提供する点です。Antigravity の API クライアント設定では base_url を差し替えるだけで、クラウド LLM と同じ呼び出し方で使えます。第二に、モデルダウンロードがコマンド一発(ollama pull gemma3:12b のような形式)で済み、バージョン管理が楽なこと。第三に、macOS の Metal ・Linux の CUDA ・WSL の DirectML に幅広く対応していて、チーム内で OS がバラバラでもセットアップが揃えやすいことです。
一方、本番想定のスループットが必要な場合は vLLM や TGI の方が有利です。個人開発・社内 PoC・機密データの一次処理までは Ollama、プロダクション配信は vLLM、という使い分けが実情に合います。
環境構築 — OS 別の最短手順
macOS (Apple Silicon)
# 公式インストーラでインストール
brew install ollama
# バックグラウンドで起動
brew services start ollama
# モデル取得(例: Gemma 3 の 4B 量子化版)
ollama pull gemma3:4b
# 動作確認
ollama run gemma3:4b "こんにちは"
Apple Silicon では GPU(Metal)が自動的に使われます。M1 以降の 16GB モデルなら 4B〜8B、32GB モデルなら 12B〜27B まで快適に動きます。
Linux (CUDA 対応 GPU)
# 公式スクリプトでインストール
curl -fsSL https://ollama.com/install.sh | sh
# systemd で起動
sudo systemctl enable --now ollama
# GPU 使用確認
nvidia-smi # ollama プロセスが GPU メモリを使っていれば OK
# モデル取得
ollama pull gemma3:12b
CUDA の認識に失敗すると CPU フォールバックで動いてしまい、推論が劇的に遅くなります。ollama serve の起動ログに CUDA found が出ているか必ず確認してください。
WSL2 (Windows)
WSL2 上での Ollama は、WSL2 のカーネルが Windows の GPU ドライバを経由して CUDA を使う形になります。DirectML サポートも進んでいますが、CUDA 対応 GPU がある Windows 機では CUDA 経路の方が安定しています。セットアップは Linux と同じスクリプトで大丈夫です。
Antigravity から Ollama を呼ぶ設定
Antigravity の設定ファイル(antigravity.config.json あるいは環境変数)で、LLM エンドポイントを Ollama に向けます。
{
"llm_providers" : [
{
"name" : "local-gemma" ,
"type" : "openai_compatible" ,
"base_url" : "http://localhost:11434/v1" ,
"api_key" : "ollama" ,
"default_model" : "gemma3:12b"
},
{
"name" : "cloud-gemini" ,
"type" : "google_gemini" ,
"api_key" : "YOUR_GEMINI_API_KEY" ,
"default_model" : "gemini-2.5-pro"
}
],
"routing" : {
"agents" : {
"doc-summarizer" : "local-gemma" ,
"code-generator" : "cloud-gemini"
}
}
}
注目すべきは api_key に "ollama" というダミー値を入れている点です。Ollama は認証を要求しませんが、OpenAI 互換クライアントの多くが api_key が空のときにリクエストを送信しないため、任意の文字列で埋めておく必要があります。
エージェント別にローカル / クラウドを使い分ける
上のサンプルでは、ドキュメント要約は local-gemma、コード生成は cloud-gemini に振り分けています。これは実運用での定石で、次のような基準で切り分けます。
ローカル向き : 機密データの要約、大量ログの一次フィルタリング、コスト最優先のバッチ処理、ネット接続が不安定な環境での開発作業
クラウド向き : 高精度が必要なコード生成、多言語対応が問われる翻訳、最新のリファレンス情報を参照する必要がある回答
「とりあえず全部ローカル」「全部クラウド」ではなく、タスクの性質で分ける運用が、コストと品質の両立に効きます。
Gemma 4 のモデルサイズ選定表
実用上、どのサイズを選ぶかで推論速度と出力品質のバランスが大きく変わります。私が日常的に触っている感覚を表にまとめます。
| モデル | メモリ要件 | 速度感 | 向いている用途 |
|---|---|---|---|
| gemma3:1b | 2GB | 超高速 | キーワード抽出・分類・単純 QA |
| gemma3:4b | 6GB | 高速 | 要約・一次翻訳・ドラフト生成 |
| gemma3:12b | 16GB | 中速 | コード補完・一定の推論タスク |
| gemma3:27b | 32GB+ | やや遅 | 本格的なエージェント的推論 |
Apple Silicon の M2 Max 64GB では gemma3:27b が 15〜20 tokens/sec 程度、gemma3:12b なら 40 tokens/sec 程度が目安です。RTX 4090 搭載の Linux 機なら 12b モデルで 60〜80 tokens/sec が出ます。
量子化レベル(q4_0・q5_K_M・q8_0 など)も選べます。q4_0 がデフォルトで、q5_K_M にすると品質が明確に上がりますが、メモリ使用量も増えます。私は「12b の q5_K_M」を基準に、ハードが許すなら上へ、足りないなら 4b に落とす運用にしています。
フォールバック戦略 — ネットが落ちても止めない
Antigravity を現場運用すると、ネットが切れた瞬間にクラウド LLM 依存のエージェントが全滅する問題にぶつかります。ローカル LLM を併用するメリットは、このときの保険になる点です。
{
"routing" : {
"default" : "cloud-gemini" ,
"fallback" : "local-gemma" ,
"fallback_triggers" : [ "network_error" , "rate_limit" , "api_error" ]
}
}
このような設定で、クラウド呼び出しが失敗したら自動的にローカルに切り替える構造にしておくと、ネット不調・API 障害・レートリミット到達のいずれでも、作業が止まらなくなります。品質は落ちますが、ゼロよりは遥かに良い、というのが実務感覚です。
運用で詰まるポイント
セットアップ自体はスムーズに進むことが多いのですが、1 週間ほど使い込むと、次のような問題にぶつかることが多いです。
コンテキスト長の制限 : Ollama のデフォルトコンテキスト長は 2048 または 4096 トークンで、Antigravity のエージェントが長い会話履歴を送ると途中で切られます。OLLAMA_CONTEXT_LENGTH 環境変数、または Modelfile で num_ctx 16384 のように明示することで拡張できます。ただしメモリ使用量がコンテキスト長に比例して増えますので、ハードの余裕を見ながら設定してください。
モデルのロード待ち : Ollama は初回リクエスト時にモデルをメモリにロードします。最初の応答が 10〜30 秒遅れることがあります。OLLAMA_KEEP_ALIVE=-1 を設定するとモデルを常駐させられ、体感速度が大きく改善します。
複数モデルの同時使用 : Antigravity が複数のエージェントを並列実行すると、Ollama 側で複数モデルを同時にロードしようとしてメモリが溢れることがあります。OLLAMA_MAX_LOADED_MODELS でロード同時数を制限しつつ、重要なエージェント間で同じモデルを共有する設計にするのが安全です。
Gemma 4 自体を理解する — 前世代からの改善点
統合の前提として、Gemma 4 そのものの特性を簡単に押さえておきます。Antigravity でローカル LLM として使う上で、コンテキスト長や得意・不得意を知っておくと、モデルサイズの選択やタスク振り分けが楽になります。
Gemma 4とは:前世代との主な改善点
Gemma 4は以下の点でGemma 3を上回ります。
パラメータサイズ : より効率的な7B/9B構成(推論速度が20%向上)
精度 : ベンチマークテストで8.5%向上(特にコード生成とJSON処理)
マルチモーダル : テキスト+画像の入力に対応(Gemma 3では未サポート)
コンテキスト長 : 32,000トークンから128,000トークンに拡張
日本語 : 日本語データセットが大幅拡充。日本語性能が3.2倍向上
検索キーワード : 多くのユーザーが「Gemma 4 Antigravity」「Gemma 4 オンデバイス実行」などで検索しており、実装ニーズが高い段階です。
AGENTS.md でローカル/クラウドのモデル切り替えを制御する
Antigravity のエージェント設定(AGENTS.md)では、エージェントごとに使用モデルを切り替えるルールを書けます。機密データ処理は強制的にローカル、ネットワーク接続が確認できないときはオフラインモードに切り替えるなど、運用要件に合わせた制御が可能です。
ステップ4:AGENTS.md でモデル切り替えを制御する
Antigravity のワークスペースに AGENTS.md ファイルを置くことで、どのタスクでローカルモデルを使うかを明示的に制御できます。
# Agent Configuration
### Default Model
Use `gemini-3-pro` for planning tasks and complex reasoning.
### Privacy-Sensitive Tasks
Use `gemma4-local` for the following:
- Reading or processing files under `private/`
- Any task involving customer data
- Initial draft generation (review with cloud model before finalizing)
### Offline Mode
When network is unavailable, fall back to `gemma4-local` for all tasks.
このファイルがワークスペースルートにあると、Antigravity のエージェントがタスクごとに適切なモデルを自動選択してくれます。特に「プライバシーセンシティブなタスクだけローカル、高度な推論はクラウド」というハイブリッド構成が、実運用で最もバランスが良いと感じています。
推論パフォーマンス最適化
ローカル推論は CPU/GPU のリソース管理次第で速度が大きく変わります。実用的なレスポンスタイムを出すための調整ポイントを整理します。
パフォーマンス最適化 — 実用的な速度を出すために
初期設定のままだと、Gemma 4 9B は十分な速度が出ないことがあります。3つの設定変更で大きく改善できます。
量子化レベルを調整する 。Ollama はデフォルトで Q4_K_M(4bit 量子化)を使いますが、Apple Silicon の M3 以降なら Q5_K_M や Q6_K を試す価値があります。品質が向上しつつ、メモリに余裕があれば速度もほぼ変わりません。
ollama pull gemma4:9b-q5_K_M
コンテキスト長を実用範囲に絞る 。Gemma 4 は 8192 トークンまで対応していますが、実際のタスクでは 2048 トークン程度で十分なことが多いです。長いコンテキストを許可するほどメモリ消費と推論時間が増えるので、必要最小限に抑えます。
keep_alive の設定 。デフォルトではモデルが5分間使われないとアンロードされます。頻繁に呼び出すなら OLLAMA_KEEP_ALIVE=30m のように長めに設定すると、都度のロード時間(数秒)を省けます。
実際の開発ワークフロー — Antigravity × ローカル Gemma 4 の使いどころ
ローカル LLM を組み込んだ Antigravity 開発の典型的なワークフローと、それぞれの場面で Gemma 4 がどう機能するかを具体例で見ていきます。
実際の開発ワークフロー
パターン1: デイリー開発はローカル、複雑な設計はクラウド
日常的なコーディングの大半(補完・修正・テスト作成)はローカルの Gemma 4 で処理し、複雑なアーキテクチャ議論や長い文脈が必要な場合だけクラウドに切り替えます。
# Antigravity + Gemma 4 でよく使うパターン
# 1. 関数の補完(ローカルで十分)
def parse_config (file_path: str ) -> dict :
"""設定ファイルを読み込んで辞書を返す"""
# ← ここでAntigravity(Gemma4)が自動補完
# 2. コメント生成(ローカルで十分)
# ← 関数にカーソルを当てて「このコードを説明するdocstringを生成」
# 3. バグ修正(ローカルで十分)
# ← エラーをAntigravityに貼り付けて修正を依頼
# クラウド(Claude/Gemini)に切り替える判断基準
- プロジェクト全体を俯瞰した設計議論
- 10ファイル以上に跨るリファクタリング計画
- セキュリティ脅威モデルの分析
- API 設計レビュー(外部公開前)
パターン2: 機密プロジェクト専用ワークフロー
金融機関・医療関連・社内ツール開発など、コードを社外に出せないプロジェクトでは、Gemma 4 専用モードで運用します。
# .env または Antigravity 設定で強制ローカルモード
ANTIGRAVITY_MODEL = local
ANTIGRAVITY_ALLOW_CLOUD = false
ANTIGRAVITY_LOCAL_ENDPOINT = http://localhost:11434/v1
ANTIGRAVITY_LOCAL_MODEL = gemma4:26b
# 環境変数でクラウドへの接続を完全にブロック
# → どんな操作をしてもコードはローカルから出ない
パターン3: オフライン開発(出張・機内など)
あらかじめモデルをダウンロードしておき、オフラインでも開発を継続できます。
# オフライン前の準備
ollama pull gemma4:e2b # モデルをキャッシュ
ollama pull gemma4:e4b # 余裕があれば大きいモデルも
# オフライン中は自動的にローカルモデルが使われる
# (Antigravity がオフライン検出してフォールバック)
Gemma 4 のコーディング性能ベンチマーク
ローカル LLM を選ぶときに最も気になるのがコード生成の品質です。GSM8K、HumanEval、MBPP といった標準ベンチマークでの Gemma 4 の数値を、実用感とすり合わせながら整理します。
Gemma 4 のコーディング性能ベンチマーク
Gemma 4 E4B を Antigravity と組み合わせた際の実測値(M3 Max MacBook Pro、64GB RAM):
Python コード補完 : 平均 2.1 秒(Claude 3.5 Sonnet 比: 品質 85%、速度 1.3倍速)
TypeScript 関数実装 : 平均 4.3 秒(Claude 3.5 Sonnet 比: 品質 80%、速度 0.9倍)
バグ修正・エラー解析 : 平均 3.8 秒(Claude 3.5 Sonnet 比: 品質 75%、速度 1.1倍)
ドキュメント生成 : 平均 5.2 秒(Claude 3.5 Sonnet 比: 品質 88%、速度 1.2倍)
日常的なコーディング支援では Gemma 4 E4B で十分な品質が出ており、API コストがゼロになる点を考えると、積極的に使う価値があります。
Gemma 4 の得意・不得意 — タスク振り分けの判断基準
ローカル / クラウドのハイブリッド運用では「どのタスクをローカルに任せるか」の判断が要です。Gemma 4 が安定して強い領域と、クラウド側に投げた方が結果が良い領域を整理します。
Gemma 4 の得意・不得意
Gemma 4 はオープンウェイトモデルとして非常に優秀ですが、用途によって向き不向きがあります。
得意なこと
140言語のコードに対応しており、Python・TypeScript・Go・Rust などの主要言語で高品質なコード生成ができます。また、比較的短いコードの理解・修正・補完は非常に正確です。日本語の技術文書読解も実用レベルです。
不得意なこと
非常に長いコンテキスト(1万行以上のコードベース全体)の把握は苦手で、最新のフレームワーク(2025年以降に登場したもの)の知識はトレーニングデータに依存します。また、微妙な設計上のトレードオフの判断は、より大型のクラウドモデルの方が優れています。
このため、「ローカル Gemma 4 × クラウドモデル」のハイブリッド が現実的な最適解になります。
実運用で分かった落とし穴
机上の設計通りに動かないケースが、ローカル LLM 統合では特に多く発生します。実運用でぶつかった代表的なトラブルと回避策を共有します。
実運用で分かった落とし穴
ここまでの手順で動きますが、実際に運用してみて初めて気づく落とし穴が3つあります。
ひとつ目:日本語の応答品質はやや劣る 。Gemma 4 9B は英語中心の学習データで作られており、日本語での応答は Gemini 3 Pro と比べると明らかに劣ります。特に敬語の一貫性や専門用語の訳出で差が出ます。日本語での長文生成が主用途なら、Gemma 4 27B か、クラウドモデルに留めた方が無難です。
ふたつ目:ツールコールの精度が低い 。ローカル LLM 全般の課題ですが、Gemma 4 9B はツール呼び出しの JSON 生成が不安定です。複雑なエージェントで多くのツールを定義すると、間違った引数を渡すことがあります。ローカルモデルには「単純なツールを1〜2個だけ使うタスク」を任せるのが無難です。
みっつ目:発熱とバッテリー消費 。ノート PC で 9B モデルを連続実行すると、筐体が熱くなり、バッテリーは2〜3時間で切れます。長時間使うなら電源接続は必須で、デスクトップ PC か外部マシンに Ollama を置くのが長期運用では楽です。
次に検討すること
ローカル LLM 統合が安定したら、次のステップとして「ローカル専用のエージェント」を設計することをおすすめします。たとえば機密度の高いコードレビュー、社内ドキュメントの要約、個人メモの構造化など、クラウドに一度も情報を送らないことを保証できるエージェントです。
Antigravity のマルチエージェント構成については Antigravity マルチエージェント・オーケストレーション入門 で詳しく扱っています。ローカル LLM と組み合わせる設計例も近々アップデート予定ですので、定期的に覗いてみてください。