「クラウドのAI APIを使いたいけど、コードが社外に出るのが気になる」という状況は、特に業務アプリの開発で珍しくありません。私もその悩みを抱えていたのですが、Android StudioがローカルLLM機能を搭載してから、状況が変わりました。
OllamaでGemma 4を手元で動かし、それをAndroid Studioに繋げると、コードは自分のマシンの外に出ることなく、AIアシスタントの補完や提案が使えます。ここではMacOS環境でのセットアップ手順と、実際に使ってみてわかったことをお伝えします。
必要なもの
- MacOS(Apple Silicon推奨。MシリーズはGPU加速のメリットが大きい)
- Android Studio Narwhal以降
- Ollama(ollama.com からダウンロード)
- 空きRAM:Gemma 26Bを動かす場合は少なくとも32GB推奨
Intel MacやWindowsでも動作しますが、Gemma 26Bはモデルサイズが大きいため、スペックに余裕があるほど快適です。より軽量な gemma4:9b や gemma4:4b でも試せます。
Step 1: OllamaでGemma 4を起動する
まず、OllamaをインストールしてGemma 4モデルをダウンロードします。
# Gemma 4 26Bモデルのダウンロード(約17GB)
ollama pull gemma4:26b
# ダウンロード後、サーバーを起動
ollama serve
# 別ターミナルで動作確認
ollama run gemma4:26b "Hello, how are you?"ollama serve を実行すると、デフォルトで http://localhost:11434 でAPIが提供されます。Android Studioはこのエンドポイントにアクセスしてモデルを呼び出します。
軽量モデルで試したい場合:
# 軽量版(4Bパラメータ、約3GB)
ollama pull gemma4:4b
# または中間サイズ(9Bパラメータ、約6GB)
ollama pull gemma4:9bStep 2: Android StudioのローカルLLM設定
Android Studioを開き、設定を行います。
設定の場所: Preferences(またはSettings)> Tools > Gemini Code Assist > AI Provider
ここで「Local LLM」を選択し、エンドポイントURLを入力します:
http://localhost:11434
モデル名フィールドに gemma4:26b(またはダウンロードしたモデル名)を入力します。
接続テストボタンがあれば押してみましょう。Ollamaが起動していれば、接続成功のメッセージが出るはずです。
設定が完了すると、コードエディタ上でAIアシストが有効になります。通常のGemini APIの代わりに、ローカルのGemma 4が使われます。
実際にどのような場面で役立つか
設定後、いくつかのAndroidプロジェクトで試してみた感触をお伝えします。
良かった点:
コードの補完品質は、26Bモデルを使う限り実用的なレベルです。Kotlinの基本的な構文や、AndroidのViewModelやRepositoryパターンはきちんと認識されます。
// こういった定型パターンはスムーズに補完される
class UserRepository @Inject constructor(
private val userDao: UserDao,
private val apiService: ApiService
) {
// AIがコンテキストを理解してメソッドを提案してくれる
suspend fun getUser(id: String): Result<User> {
return try {
val localUser = userDao.findById(id)
if (localUser != null) {
Result.success(localUser)
} else {
val remoteUser = apiService.fetchUser(id)
userDao.insert(remoteUser)
Result.success(remoteUser)
}
} catch (e: Exception) {
Result.failure(e)
}
}
}制約と感じた点:
レスポンス速度はクラウドAPIより遅めです。Gemma 26BをM3 Max(96GB RAM)で動かした場合、補完のレスポンスに2〜4秒かかることがあります。軽量モデル(4B、9B)は速いですが、複雑なコードの理解度は下がります。
Jetpack Compose関連の補完は、クラウドのGeminiに比べると精度が落ちる印象がありました。新しいAPIへの追従はクラウドモデルの方が早いのは当然ですね。
OllamaをAndroid Studioと並行して常時起動する
毎回手動でOllamaを起動するのは面倒なので、Mac起動時に自動起動する設定をしておくと便利です。
# LaunchAgentとして登録(MacOS)
mkdir -p ~/Library/LaunchAgents
cat > ~/Library/LaunchAgents/com.ollama.serve.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.ollama.serve</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/ollama</string>
<string>serve</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
EOF
launchctl load ~/Library/LaunchAgents/com.ollama.serve.plistこれで、Mac起動時に自動的にOllamaが立ち上がり、Android Studioのローカル補完がすぐ使える状態になります。
機密コードを扱うプロジェクトへの導入を検討している方へ
ローカルLLMの最大のメリットは「コードがマシンから出ない」という点です。金融系・医療系・社内システムなど、コードの社外流出が許されないプロジェクトでも、AIアシストを導入できる可能性があります。
ただし、モデルの精度やレスポンス速度はクラウドAPIには及びません。「補完の品質を多少妥協してでもプライバシーを確保したい」場面に適した選択です。
より高度な活用(複数のモデルを用途別に切り替える、Gemma 4をファインチューニングしてプロジェクト特化モデルを作る)については、プレミアム記事で詳しく解説しています。