はじめに
今まで高価なサーバーやグラフィックカードがないとLLMは使えないことも障壁でしたが、十分なメモリさえあれば、なんと一般的なMacBookやゲーミングノートブックでも扱えるようになりました!
今月発表されたGemma 4の12Bモデルを嬉々として試しましたが、莫大なパラメタ数を誇る高性能モデルには劣るものの、出力は問題ないものでした。ただ・・・メモリが足りなくて重い!
返答が返ってこない場合や、フリーズしたと感じるほど遅い回答になるため、16GBのメモリでの使用はあまり現実的ではありませんでした。32GB以上ならより性能の良いLLMを余裕をもって動かせると思いますし、128GBの統合メモリをもつMacともなれば、ネックだった性能面の課題も高性能LLMで解消できると思います。
試行錯誤を繰り返した末に「16GBでは厳しいか」と諦めかけたとき、Gemma 4 E4B と Qwen3.5 4B-MLX という選択肢があることを知りました。性能は劣りますが、Macbookでギリ使えるAIエージェントがサクサク動くのを見てみたい。
そして気づいたことがひとつあります。
「モデルのダウンロードサイズ ≠ 実際に使われるメモリ量」 という事実です。Gemma 4 E4Bは9.6GBのファイルですが、推論時に実際に活性化するパラメータは4.5B分だけです。12Bモデルと似たサイズでも、実行時の負荷は大きく異なります。
この記事では、M5 16GBのマシンで試行錯誤した末にたどり着いた、実際に動くローカルLLM環境の構築手順を紹介します。
CursorではなくVS Code + Clineを選んだ理由:
CursorはAI機能を内蔵した高機能エディタですが、その分メモリ消費が大きくなります。
16GBという限られたメモリ環境では、エディタ自体のフットプリントをできる限り小さくし、空きメモリをモデルに残したい——そのため、軽量なVS CodeにCline拡張機能を追加する構成を選びました。
この構成のメリット:
- APIコスト不要
- プライベートなコードを外部に送らない
- オフラインでも動作
- レート制限なし
動作確認環境:
- MacBook Pro M5 / 16GB統合メモリ
- macOS
- Ollama 0.30.4
- VS Code + Cline拡張機能
Apple Siliconの統合メモリについて
Windowsマシンでよく見る「CPUメモリ + GPUメモリ」の構成と違い、Apple Siliconは CPU・GPU・Neural Engineがメモリを共有する統合メモリアーキテクチャです。
これがLLM実行において重要な意味を持ちます。GPU専用メモリが別途あるPCなら「RAMはOSに使わせて、GPUメモリにモデルをロード」できますが、M5ではOS・ブラウザ・VS Code・モデル——すべてが同じ16GBを奪い合います。
つまり、16GBのメモリで強力なLLMを動かすことは現実的ではありません。
ChromeとSlackとVSコードを開いた状態では10GB以上が使用済みになることも珍しくなく、10GB超のモデルをロードする余裕はほぼありません。
ただ、小さめのモデルを正しく選べば、実用的に動きます。そしてAIの進歩は目覚ましく——一昔前に見られたような明らかなハルシネーションは影を潜め、応答速度も含めて十分に実用的な体験ができました。
モデル選択ガイド(16GB RAM向け)
| モデル | Ollama ファイルサイズ | 有効パラメータ | 特徴 |
|---|---|---|---|
gemma4:e4b |
9.6GB | 4.5B | マルチモーダル(画像・音声)対応、汎用 |
gemma4:e4b-mlx |
9.6GB | 4.5B | MacのNeural Engine最適化で高速、テキストのみ |
qwen3.5:4b-mlx |
〜4GB | 4B | 軽量・高速、Chrome/Slackを開いたまま快適に使いたい場合 |
-
gemma4:12b(7.4GB)はDocker・Chrome・Slack・VS Code等を同時に開いた状態で使うとスワップが6-7GB超まで膨らみ、応答がハングしました。ファイルサイズが7.4GBでも推論時は12B全パラメータが活性化するため、メモリ負荷はE4B(4.5B活性化)より大幅に高くなります。
ローカルLLMは何に使えるの? Webの高性能モデルで良くない?
「わざわざローカルで動かす必要あるの?」という疑問は当然だと思います。ClaudeやChatGPTのようなWebサービスの方が、品質は圧倒的に上です。
ただ、「クラウドに送れない・送りたくない」場面では、ローカルLLMが唯一の選択肢になります。
🔒 プライバシー・機密情報
| 用途 | 具体例 |
|---|---|
| 社内の機密コード | 外部APIに送れないソースコードの補助・レビュー |
| 個人情報・機密を含むデータ | 顧客データの分析・加工 |
| 機密メール・文書 | 要約・翻訳・下書き作成 |
クラウドLLMにコードや文書を送るとき、それがどのようにサーバーに保存・学習利用されるか、完全には把握できません。LLMを正しく使えば、データは一切外に漏れません。
💰 APIコストの削減
単純な繰り返しタスク——コードや文書の大量フォーマット、コメント追加、ログ解析、ファイルの一括変換など——を毎回クラウドAPIに投げると、意外とコストがかさみます。ローカルならコストゼロ、レート制限もありません。
📷 音声・画像認識アプリ・IoT
顔認識・音声認識・監視カメラ・医療画像など、プライバシーや規制の観点からクラウド送信が困難なデータを扱うアプリケーションでは、エッジでのLLM推論が有効です。スマートホームや工場のIoTデバイスなど、ネットワーク遅延を許容できない場面でも同様です。
🌐 インターネットが繋がらない環境
飛行機の中、電波の届かない現場、セキュリティポリシーでインターネットアクセスが制限された環境——そういった場所でも、ローカルLLMはオフラインで動作します。
📚 学習用途
LLMの仕組みを学びたい、英会話アプリなど学習用途にLLMを活用したい——そういった用途では、APIコストや、個人情報を気にせず好き放題試せるローカル環境は最適です。
🎮 ゲーム内リアルタイムAI会話
ゲームでNPC(ノンプレイヤーキャラクター)とリアルタイムに会話を生成する場合、クラウドAPIの遅延やコストが問題になります。ローカル推論なら低遅延で、しかもプレイヤーの会話履歴をクラウドに送る必要もありません。
まとめると
「クラウドで良くないか?」ではなく、当然ですが用途によって使い分けるのが正解です。
1. Ollamaのインストール
Homebrewではなく、公式Macアプリをインストールします。
Homebrew版は llama-server バイナリが欠落するケースが報告されており、HTTP APIが正常に動作しないことがあります。
- https://ollama.com/download からMac版をダウンロード
-
.dmgファイルを開き、アプリケーションフォルダへドラッグ - Ollamaを起動(メニューバーにアイコンが表示される)
インストール確認:
curl http://localhost:11434
# => Ollama is running
2. モデルのダウンロード
Gemma 4 E4B(Google製、軽量マルチモーダルモデル)
Gemma 4 E4BはGoogleが2026年4月にリリースしたエッジ向けモデルです。エッジとは、スマートフォンやPCなどのデバイス上で直接処理することを指します。
「E4B」の EはEdge(エッジ)、4Bは有効パラメータ数を指します。総パラメータは8Bですが、推論時に活性化するのは4.5B分だけ——これが12Bと近いファイルサイズでも実行時のメモリ負荷が低い理由です。
ollama pull gemma4:e4b
| 項目 | 値 |
|---|---|
| ファイルサイズ | 9.6GB |
| 推論時の有効パラメータ | 4.5B |
| コンテキスト長 | 128K |
| 対応モダリティ | テキスト・画像・音声 |
MLX版について:
gemma4:e4b-mlxはApple Neural Engine最適化で推論速度が向上しますが、画像・音声入力に非対応になります。コーディング専用用途ならMLX版でも問題ありません。ファイルサイズはどちらも9.6GBです。
Qwen3.5 4B-MLX(Alibaba製、Apple Silicon最適化)
より軽量に動かしたい場合の選択肢です。ファイルサイズが小さいため、ChromeやSlackを開いたままでも比較的安定して動作します。
ollama pull qwen3.5:4b-mlx
| 項目 | 値 |
|---|---|
| ファイルサイズ | 約3〜4GB |
| コンテキスト長 | 262K |
| 特徴 | 軽量・高速、Apple Silicon最適化 |
モデルが正しくダウンロードされたか確認:
ollama list
3. HTTP APIの動作確認(オプション)
この手順は必須ではありませんが、Clineに接続する前にOllamaが正常に動作しているか確認したい場合に実行してください。
※最初のプロンプトは、立ち上がる時間があるので遅めです!
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gemma4:e4b",
"messages": [{"role": "user", "content": "hello"}],
"stream": false
}'
正常であれば、以下のようなJSONレスポンスが返ります:
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"model": "gemma4:e4b",
"choices": [{
"message": {
"role": "assistant",
"content": "Hello! How can I help you today?"
}
}]
}
4. VS CodeにClineをインストール
4-1. 拡張機能マーケットプレイスから検索
Cmd+Shift+X で拡張機能パネルを開き、「Cline」を検索します。
「Cline」を選択し、「インストール」をクリックします。
インストール後に「拡張機能の再起動」が表示された場合はクリックしてください。
4-2. Clineパネルをサイドバーに表示
インストール後、アクティビティバーにClineのアイコン(ロボットのマーク)が表示されます。

おすすめ: チャットウィンドウをエディタの右側に表示したい場合は、ClineアイコンをVS Codeの右側サイドバー(Secondary Side Bar)へドラッグ&ドロップします。Option+Cmd+B でトグルできます。

5. Clineの初期設定
Clineアイコンをクリックして初期設定画面を開きます。
5-1. 使用方法の選択
「Bring my own API key」を選択して「Continue」をクリックします。
5-2. APIプロバイダーの選択
プロバイダー一覧から「Ollama」を選択します。
5-3. モデルの設定
Model欄にモデル名を入力します。ollama list で表示される名前を入力してください。
Gemma 4 E4Bの場合:
Qwen3.5 4B-MLXの場合:
推奨設定:
| 項目 | 値 | 理由 |
|---|---|---|
| API Provider | Ollama |
ローカル実行のため |
| Model |
gemma4:e4b または qwen3.5:4b-mlx
|
ollama list の表示と一致させる |
| Model Context Window | 32768 |
16GB RAMでは大きすぎると不安定になるので、エラーが出たら調整 |
| Request Timeout (ms) | 30000 |
モデルのロード時間を考慮してタイムアウトを設定 |
| Use compact prompt | ✅ オン | 16GB環境では必須(後述) |
Compact Promptについて: 有効にすると各リクエストで送信されるコンテキスト量が削減されます。出力時にエラーが出る場合、試してみると良いです(※MCPとFocus Chainは非対応になります)。
Base URLについて: デフォルトの
http://localhost:11434のままで問題ありません。
6. 動作確認
Clineのチャット欄に以下を入力してテストします:
Hello、あなたは何ができますか?
正常に応答が返れば設定完了です。
実際にコードレビューを依頼した様子がこちらです。
Gemma 4 E4Bによるコードレビュー:
app/Console/Commands ディレクトリ内の3つのコマンドファイルを対象に、コードレビューを依頼した結果です。各ファイルの評価・改善提案を日本語で的確に返してくれています。
Qwen3.5 4B-MLXによるコードレビュー:
同じディレクトリに対してQwen3.5 4B-MLXで実行した結果です。タイポや論理的な問題、効率的なコード書法まで、行番号付きで具体的に指摘しています。
どちらのモデルも、ある程度の精度・スピードでコードレビューを出力し、目立ったハルシネーションや、間違った指摘がありません。
体感速度について: GPTやClaudeなどのクラウドLLMと比べると、1レスポンスあたり体感で 5秒程度遅い印象ですが、こちらはマシンの性能と使用可能なVRAMメモリに依存します。待てないほどではなく、用途にもよりますが、ローカル実行であることを考えると、十分実用的なスピードだと感じています。
最初のプロンプトは遅い: モデルは初回リクエスト時にメモリへロードされます。この「ウォームアップ」に数秒〜十数秒かかるのは正常です。2回目以降はモデルがメモリに乗った状態になるため、応答が速くなります。
モデルを切り替えた直後は不安定なことがある: Clineの設定でモデルを別のものに変更した場合、最初のリクエストが正常に動作しないことがあります。その場合はウォームアップするのを待つ・新しいチャットを開く・Compact Promptを試すと解消されるかもしれません。
7. メモリの状態を確認する(アクティビティモニタ)
動作が不安定な場合は、アクティビティモニタでメモリの状況を確認しましょう。アクティビティモニタはMacのタスクマネージャーに相当するツールです。
起動方法: Spotlight(Cmd+Space)で「アクティビティモニタ」と入力して開き、「メモリ」タブをクリック。列ヘッダーをクリックするとメモリ使用量の降順に並び替えられます。
確認すべき項目:
| 項目 | 状態 | 対処 |
|---|---|---|
| メモリプレッシャー | 🟢 緑 | 問題なし |
| スワップ使用領域 | 🟡 黄 + 2〜3GB超 | Chromeなど重いアプリを終了 |
| メモリプレッシャー | 🔴 赤 | Chromeなど重いアプリを全て終了 |
メモリプレッシャーが黄〜赤、またはスワップが2〜3GBを超えている場合は、VS CodeとOllama(llama-server)以外のメモリ消費の大きいアプリ——特に ChromeやSlack——を終了してから再度試してください。
Qwen3.5 4B-MLXはメモリが軽い: ファイルサイズが約3〜4GBと小さいため、Gemma 4 E4B(9.6GB)と比べてメモリプレッシャーが緑になりやすいです。Gemma 4 E4Bで不安定な場合はQwen3.5に切り替えるのも有効です。
トラブルシューティング
モデルが応答しない・ハングする
メモリ不足が原因の場合がほとんどです。
# モデルを手動でストップ
ollama stop gemma4:e4b
アクティビティモニタで、不要なアプリやChromeなどの重たいアプリを終了してから再度試してください。
llama-server binary not found エラー
Homebrew版Ollamaのバグです。公式Macアプリに切り替えてください:
brew uninstall ollama
その後、https://ollama.com/download から再インストール。
Qwen3.5が無限ループに入る
新しいチャットに切り替えてモデルがあったまるのを待つ、Clineの設定でCompact Promptを有効にするか、Gemma 4 E4Bに切り替えてください。
404エラー(/chat/completions not found)
ClineのOllamaプロバイダーはBase URLに /v1 を付けません。http://localhost:11434 のみで設定されているか確認してください。
おわりに
「16GBでは厳しいかも」という不安を持ちながら始めた検証でしたが、適切なモデルを選べば実用的に動くことがわかりました。
正直、驚いたのは応答の質です。一昔前のローカルLLMでよく見られた明らかなハルシネーションや支離滅裂な回答はほとんどなく、簡単なコーディング補助として十分に機能します。AIの進歩をリアルに体感できる体験でした。
クラウドAPIと比べると品質は劣りますが、用途によってはコストゼロ・完全ローカル・レート制限なしという強みは明確です。
社内の機密データやソースコードを外部に送りたくない場合、AIを使用したアプリ、APIコストを気にせず気軽に試したい場面では、ローカルLLMは有力な選択肢になります。
また、強力なVRAM搭載のマシンを用意できればネックだった性能面でもかなり期待できます。
ぜひ試してみてください。ここまでお読みいただきありがとうございました。








