Xでシェア

Writing / 生成AI

N° 18

【2026年版・実践】OllamaでローカルLLMを始める:インストールからモデル実行・管理・API利用まで

OllamaをmacOS・Windows・Linuxへインストールし、小型モデルの実行、モデル管理、コンテキスト長の変更、Modelfile、REST API、Claude Code・Codex連携、トラブルシューティングまで順番に試す実践ガイドです。

はじめに:数コマンドでローカルLLMを動かす

ローカルLLMを始めようとすると、モデル形式、量子化、推論エンジン、GPU設定など、覚えることが多いように見えます。Ollamaは、こうした準備の多くをまとめ、モデルの取得・実行・管理をCLIから行えるランタイムです。

この記事では、macOS、Windows、Linuxへのインストールから、ターミナルでの対話、モデル管理、Modelfile、REST API、Claude Code・Codexとの連携までを順番に試します。最初の目標は、次の2コマンドを動かすことです。

bash
ollama pull qwen3.5:4b
ollama run qwen3.5:4b

起動したら、次のように質問できます。

plaintext
>>> 日本語でOllamaについて簡単に説明してください

本記事では、2026年7月の公開時点でOllamaライブラリに掲載されている比較的小さなモデル、qwen3.5:4bを例にします。モデルの公開状況、サイズ、タグは変わるため、実行前にモデルページを確認してください。量子化やハードウェア別のモデル選定は別のテーマとし、ここではOllamaの操作に集中します。

1. Ollamaとは何か

1-1. Ollamaはモデルではなくランタイム

OllamaはLLMそのものではありません。qwen3.5gemma4がモデルであり、Ollamaはそれらを取得、実行、更新、削除するためのランタイムです。

Dockerに例えるなら、Ollamaが実行環境、モデルがコンテナイメージに近い関係です。モデルはqwen3.5:4bのような「名前:タグ」で指定します。ただし、タグの意味はモデルごとに異なり、パラメータ規模、量子化方式、用途などを表す場合があります。

Ollamaを起動するとバックグラウンドでサーバーが動きます。ollama runなどのCLIと、curlや自作アプリから使うAPIは、どちらもこのサーバーを経由します。

flowchart TD
    accTitle: OllamaのCLI、API、サーバー、モデル、ハードウェアの関係
    accDescr: ターミナル、curl、自作アプリからの要求がOllamaサーバーへ届き、保存済みモデルをCPUまたはGPUへロードして推論する流れを示します。
    A[ターミナルのCLI] --> D[Ollama Server]
    B[curl] --> D
    C[自作アプリ] --> D
    D --> E[保存済みモデル]
    E --> F[CPUまたはGPU]

Ollamaの内部構成

1-2. 主な機能

Ollamaでは、次の操作を一つのCLIにまとめられます。

  • モデルのダウンロード、更新、実行、削除
  • ディスク上のモデルとメモリ上のモデルの確認
  • Modelfileによるシステムプロンプトやパラメータの固定
  • localhostで動くREST APIの利用
  • OpenAI APIと互換性のある一部エンドポイントの利用
  • ollama launchによるClaude Code、Codex、VS Codeなどの設定・起動

重要なのは、「Ollamaサーバー」「ディスク上のモデル」「メモリへロードされたモデル」が別々の状態を持つことです。この違いは、停止やトラブルシューティングで役立ちます。

2. 実行前に確認すること

2-1. メモリとディスク容量

Ollamaがインストールできても、すべてのモデルが快適に動くわけではありません。モデルのロードにはRAMまたはVRAMが必要です。コンテキスト長を増やした場合や、複数のリクエストを並列処理した場合も必要メモリが増えます。

初回は小さなモデルを選び、ほかの大きなアプリを閉じて試すのが安全です。本記事で使うqwen3.5:4bは、公開時点のライブラリでは約3.4GBのモデルファイルとして掲載されています。ただし、実行時の総メモリ使用量がファイルサイズと一致するとは限りません。

モデルは継続的にディスクへ保存されます。複数モデルを試す予定なら、数GBではなく、余裕を持った空き容量を用意してください。

2-2. ローカル実行の範囲

ローカルモデルをローカルAPIから呼ぶ限り、プロンプトを外部のモデルAPIへ送らずに推論できます。ただし、クラウドモデルを選んだ場合、連携ツールが独自に通信する場合、Web検索などの外部ツールを有効にした場合は別です。「Ollamaを使っているから常に完全オフライン」とは考えず、使用モデルと連携先を確認してください。

3. Ollamaをインストールする

3-1. macOS

公式macOSページからDMGを取得し、Ollama.appをApplicationsへ移動して起動します。初回起動時、CLIがPATHに見つからなければ、/usr/local/binへリンクを作る許可を求められます。

現在の公式要件はmacOS Sonoma 14以降です。Apple MシリーズではCPUとGPU、Intel MacではCPUでの実行が案内されています。インストール後に確認します。

bash
ollama -v

3-2. Windows

公式インストーラーを使うか、PowerShellで次を実行します。

plaintext
irm https://ollama.com/install.ps1 | iex

通常のインストールはユーザー領域に行われ、原則として管理者権限は不要です。完了するとOllamaがバックグラウンドで動き、PowerShellやコマンドプロンプトからollamaを実行できます。現在の詳細な公式要件はWindows 10 22H2以降です。

plaintext
ollama -v

3-3. Linux

公式インストールスクリプトを実行します。

bash
curl -fsSL https://ollama.com/install.sh | sh

確認コマンドは次のとおりです。

bash
ollama -v

systemdサービスとして導入された環境では、状態も確認します。

bash
sudo systemctl status ollama

手動インストールやsystemdを使わない環境では、別のターミナルでollama serveを実行します。GPU利用には対応ハードウェアと適切なドライバーも必要です。

3-4. サーバーの疎通確認

OSを問わず、ローカルAPIへ問い合わせられればサーバーは動いています。

bash
curl http://localhost:11434/api/version

または、保存済みモデルの一覧を表示します。

bash
ollama ls

connection refusedになった場合は、Ollamaアプリまたはサービスが起動しているか確認してください。

4. 最初のモデルを取得して実行する

4-1. ダウンロード

次のコマンドでモデルを取得します。

bash
ollama pull qwen3.5:4b

進捗にはmanifestの取得、blobのダウンロード、チェックサムの検証などが表示されます。既存のblobをモデル間で共有できる場合があるため、似たモデルを取得するたびに全データが完全複製されるとは限りません。

完了したら一覧を確認します。

bash
ollama ls

NAMEはモデル名、IDは識別子、SIZEは保存サイズ、MODIFIEDは更新時刻です。

4-2. 対話を始める

bash
ollama run qwen3.5:4b

プロンプトが表示されたら質問します。

plaintext
>>> ローカルLLMを使うメリットを3つ説明してください

最初の回答だけ遅い場合、ストレージ上のモデルをRAMやVRAMへロードする時間が主な原因です。Ollamaは既定で、使用後のモデルを5分間メモリに保持します。この間の再利用は速くなることがあります。保持時間はkeep_aliveまたはOLLAMA_KEEP_ALIVEで変更できます。

5. 対話モードとワンショット実行

5-1. 対話モード

引数にプロンプトを付けずに実行すると、会話を続けられます。

bash
ollama run qwen3.5:4b

回答を見ながら追加質問したい場合、プロンプトを調整したい場合、モデルの傾向を確認したい場合に向いています。

複数行は対話画面で"""に囲みます。

plaintext
>>> """
... 次の条件で回答してください。
... ・日本語を使う
... ・箇条書きで説明する
... ・初心者向けにする
...
... KubernetesのPodとは何ですか?
... """

5-2. ワンショット実行

1回だけ回答が必要なら、モデル名の後ろへプロンプトを渡します。

bash
ollama run qwen3.5:4b "Javaのrecordについて説明してください"

ファイルへ保存することもできます。

bash
ollama run qwen3.5:4b "Dockerと仮想マシンの違いを説明してください" \
  > answer.txt

長い入力ではヒアドキュメントも便利です。

bash
ollama run qwen3.5:4b <<'EOF'
次のコードをレビューしてください。

public int add(int a, int b) {
    return a + b;
}
EOF

シェルスクリプトで使う場合は、終了コード、タイムアウト、生成内容の検証も実装してください。LLMの回答は常に正しいとは限りません。

6. よく使うコマンドとモデルの状態

コマンド

用途

ollama run

モデルを実行する

ollama pull

モデルを取得または更新する

ollama ls

ディスク上のモデルを表示する

ollama ps

メモリへロード中のモデルを表示する

ollama stop

モデルをメモリからアンロードする

ollama rm

モデルをディスクから削除する

ollama show

モデル情報を表示する

ollama create

Modelfileから名前付き設定を作る

ollama serve

Ollamaサーバーを起動する

ollama launch

対応する外部ツールを設定・起動する

特に混同しやすいのがlspsstoprmです。

flowchart LR
    accTitle: Ollamaモデルのディスク保存とメモリロードの状態
    accDescr: pullでモデルをディスクへ保存し、runでメモリへロードします。stopはメモリだけから下ろし、rmはディスク上のモデルを削除します。lsはディスク、psはメモリの状態を表示します。
    A[モデルライブラリ] -->|ollama pull| B[ディスク上のモデル]
    B -->|ollama run| C[メモリ上のモデル]
    C -->|ollama stop| B
    B -->|ollama rm| D[未保存]
    B -. ollama ls .-> E[保存一覧]
    C -. ollama ps .-> F[実行一覧]

モデルの保存・実行状態

ollama stop qwen3.5:4bはRAMやVRAMを解放しますが、モデルファイルを残します。ollama rm qwen3.5:4bは保存済みモデルを削除します。サーバー自体を終了する操作はどちらでもありません。

7. モデルを切り替え、保存場所を管理する

モデルはリクエストごとに指定します。Ollama全体に固定された「現在のモデル」があるわけではありません。

bash
ollama run qwen3.5:4b
ollama run gemma4

qwen3.5:4bではqwen3.5が名前、4bがタグです。タグなしは通常latestへ解決されますが、latestが最小、最速、または自分のPCに最適という意味ではありません。モデルページでサイズと要件を確認してください。

標準のモデル保存先は次のとおりです。

OS

保存先

macOS

~/.ollama/models

Windows

C:\Users\<ユーザー名>\.ollama\models

Linux

/usr/share/ollama/.ollama/models

保存先を変更する環境変数はOLLAMA_MODELSです。macOSアプリではlaunchctl setenv、Windowsではユーザー環境変数、Linuxのsystemdではサービスのoverrideへ設定し、Ollamaを再起動します。Linuxでは、サービスを実行するollamaユーザーに新しいディレクトリの読み書き権限が必要です。

blobを手動で削除するより、削除にはollama rm、保存先の変更にはOLLAMA_MODELSを使う方が安全です。

8. コンテキスト長を変更する

コンテキスト長は、モデルが一度に参照できる入力、会話履歴、生成内容の範囲に関係します。長い文書やコードを扱うには大きな値が有効ですが、値を増やすほどメモリ消費も増えます。また、モデルが対応する上限を超えれば有効になるわけではありません。

対話モードでは次のように変更します。

plaintext
/set parameter num_ctx 8192

APIリクエスト単位ならoptions.num_ctxを指定します。

bash
curl http://localhost:11434/api/generate -d '{
  "model": "qwen3.5:4b",
  "prompt": "この文章を要約してください",
  "options": {
    "num_ctx": 8192
  },
  "stream": false
}'

手動起動するサーバー全体の既定値は環境変数で変更できます。

bash
OLLAMA_CONTEXT_LENGTH=8192 ollama serve

公式FAQは既定のコンテキスト長を4096トークンと説明していますが、Modelfileリファレンスのパラメータ表には異なる既定値の記載があります。モデルやOllamaのバージョン、起動方法による差も考えられるため、記事の数値を絶対視せず、実環境の設定と公式ドキュメントを確認してください。

9. Modelfileで設定を再利用する

Modelfileは、既存モデルをベースにシステムプロンプトや実行パラメータを定義するファイルです。Dockerfileに似た「設定の設計図」であり、これだけでモデルを再学習またはファインチューニングするものではありません。

次のファイルを作成します。

Modelfiledockerfile
FROM qwen3.5:4b

PARAMETER temperature 0.3
PARAMETER num_ctx 8192

SYSTEM """
あなたはソフトウェア設計を支援するアシスタントです。
必ず日本語で回答してください。
コード例には簡単な説明を付けてください。
不明な情報を推測で断定しないでください。
"""

名前付きモデル設定を作成します。

bash
ollama create backend-assistant -f ./Modelfile

実行方法は通常のモデルと同じです。

bash
ollama run backend-assistant

生成されたModelfileを確認できます。

bash
ollama show --modelfile backend-assistant

backend-assistantsql-reviewerarticle-editorのように用途別の設定を用意すると、毎回長いシステムプロンプトを入力せずに済みます。ベースモデルの巨大なデータが用途ごとに必ず完全複製されるわけではなく、Ollamaはblobを利用してモデルデータを管理します。

10. ローカルREST APIを利用する

10-1. generateとchat

ローカルAPIの標準ベースURLはhttp://localhost:11434/apiです。単一プロンプトから生成する場合は/api/generateを使います。

bash
curl http://localhost:11434/api/generate -d '{
  "model": "qwen3.5:4b",
  "prompt": "Spring BootのDIについて説明してください"
}'

会話履歴を渡す場合は/api/chatを使います。

bash
curl http://localhost:11434/api/chat -d '{
  "model": "qwen3.5:4b",
  "messages": [
    {
      "role": "system",
      "content": "あなたはJavaの専門家です"
    },
    {
      "role": "user",
      "content": "recordについて説明してください"
    }
  ]
}'

messagesにはsystemuserassistantなどのロールを含められます。会話を継続するアプリでは、必要な履歴をアプリ側で保持して次のリクエストに含めます。

10-2. ストリーミングを読む

/api/generateなどではストリーミングが既定で有効です。レスポンスは改行区切りJSON、つまりNDJSONとして順番に届きます。

json
{"response":"Spring","done":false}
{"response":" Boot","done":false}
{"response":"は","done":false}
{"response":"...","done":true}

responseを到着順に連結し、done: trueで終了と判断します。/api/chatでは生成テキストがmessage.contentに入るため、エンドポイントごとのレスポンス形状を混同しないでください。

ストリーミングが不要ならstream: falseを指定します。

bash
curl http://localhost:11434/api/generate -d '{
  "model": "qwen3.5:4b",
  "prompt": "Ollamaについて説明してください",
  "stream": false
}'

この場合は回答全体を一つのJSONとして扱えます。短い処理や構造化レスポンスの検証には簡単ですが、長い生成では画面表示の開始が遅く感じられます。

10-3. パフォーマンス情報

完了レスポンスには、次の計測値が含まれます。時間の単位はナノ秒です。

  • total_duration: リクエスト全体の所要時間
  • load_duration: モデルロード時間
  • prompt_eval_count: 入力トークン数
  • prompt_eval_duration: 入力評価時間
  • eval_count: 生成トークン数
  • eval_duration: 生成時間

load_durationだけが大きければ初回ロード、eval_durationが大きければ生成処理を中心に調べる、といった切り分けに使えます。

OllamaはOpenAI APIの一部とも互換性があり、http://localhost:11434/v1/を既存クライアントへ設定できます。ただし完全互換ではないため、利用予定のエンドポイントとフィールドを互換性ドキュメントで確認してください。

11. Claude Code・Codexと連携する

利用可能な連携先は次のコマンドで対話的に確認できます。

bash
ollama launch

Claude Codeを起動する例です。

bash
ollama launch claude
ollama launch claude --model qwen3.5:4b

Codex CLIを設定・起動する例です。

bash
ollama launch codex
ollama launch codex --config

Codexを手動設定している場合は、Ollamaプロバイダーを使うcodex --ossも公式連携手順にあります。

コーディングエージェントは、通常の短いチャットより長いコンテキストを必要とします。OllamaのClaude Code・Codex連携ドキュメントは少なくとも64Kトークンを推奨しています。小型モデルに64Kを設定すれば品質が保証されるわけではなく、メモリ消費も増えます。最初は起動確認に留め、実運用ではモデルのツール利用能力、コード品質、コンテキスト要件を別途評価してください。

12. Ollamaを停止・再起動する

モデルだけをメモリから下ろす場合は次を実行します。

bash
ollama stop qwen3.5:4b

macOSとWindowsでサーバー全体を終了するには、メニューバーまたはタスクトレイのOllamaからQuitを選びます。再開するときはアプリを起動します。

Linuxのsystemdサービスは次のように管理します。

bash
sudo systemctl stop ollama
sudo systemctl start ollama
sudo systemctl restart ollama
sudo systemctl status ollama

ollama serveをターミナルで直接実行している場合は、そのターミナルでCtrl+Cを押します。

つまり、ollama stopはモデルのアンロード、アプリのQuitやsystemctl stopはサーバーの終了です。問題の対象に合わせて使い分けます。

13. よくあるエラーを切り分ける

13-1. サーバーへ接続できない

connection refusedが出たら、まずAPIを確認します。

bash
curl http://localhost:11434/api/version

macOS・WindowsではOllamaアプリ、Linuxではsystemdサービスを起動します。手動運用ならollama serveを実行してください。

13-2. モデルをロードできない、メモリ不足になる

bash
ollama ps
ollama show qwen3.5:4b

より小さいタグを選ぶ、不要なモデルをollama stopする、num_ctxを下げる、並列実行数を減らす、メモリを多く使うアプリを閉じる、という順に試します。並列リクエスト数とコンテキスト長の両方が大きいと、必要メモリも増えます。

13-3. 応答が遅い

ollama psPROCESSOR列を確認します。100% GPU100% CPU、CPU/GPUの分割などが表示されます。初回だけ遅いならロード、生成中も遅いならモデルサイズ、CPU実行、コンテキスト長などを疑います。APIのload_durationeval_durationも判断材料になります。

13-4. ポート11434が使用中

macOS・Linuxでは次を実行します。

bash
lsof -i :11434

Windows PowerShellでは次を使います。

plaintext
Get-NetTCPConnection -LocalPort 11434

Ollamaアプリが動いている状態で別のollama serveを起動した、Docker版も同じポートを公開した、といった重複を確認してください。

13-5. ログを確認する

macOS:

bash
cat ~/.ollama/logs/server.log

Linux:

bash
journalctl -u ollama --no-pager --follow --pager-end

Windows:

plaintext
%LOCALAPPDATA%\Ollama\server.log

原因が分からない場合、ログ、Ollamaのバージョン、OS、GPU、実行コマンド、再現手順をそろえると調査しやすくなります。プロンプトやログに機密情報が含まれる場合は、共有前に削除してください。

14. localhost外へ公開するときの注意

Ollamaは標準で127.0.0.1:11434へバインドします。手動起動時にLANから接続可能にする例は次のとおりです。

bash
OLLAMA_HOST=0.0.0.0:11434 ollama serve

ただし、ローカルのOllama APIはhttp://localhost:11434からのアクセスに認証を要求しません。0.0.0.0へ変更しただけでインターネットへ直接公開してはいけません。

公開が必要なら、ファイアウォールやVPNで接続元を制限し、リバースプロキシでTLSと認証を追加してください。ルーターから11434番ポートを直接転送する構成は避けます。ブラウザアプリから使う場合は、ネットワーク制御だけでなくOLLAMA_ORIGINSによる許可オリジンも最小限に設定します。

まとめ

Ollamaを使うと、ollama pullでモデルを取得し、ollama runでターミナルからローカルLLMを試せます。ollama lsはディスク、ollama psはメモリの状態を表示し、ollama stopollama rmは異なる範囲を削除します。

さらに、Modelfileでシステムプロンプトとパラメータを再利用し、localhost:11434のREST APIから自作アプリへ組み込めます。ollama launchはClaude CodeやCodexを試す次の入口になります。

基本操作を確認したら、次はOpen WebUIによるブラウザUI、コーディングエージェント向けモデルの比較、認証付きリバースプロキシ、自作アプリでのストリーミング処理へ進むとよいでしょう。

次のステップ

ほかの実装記事を探す

Writing一覧から、現在の課題に近い記事を探せます。

記事一覧へ戻る