とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

OllamaとGooseを使ってローカルLLMでコーディング

OllamaはオープンソースのローカルLLMのソフトウェアです。MITライセンスで提供されています。 Ollama自身はChatGPTやGeminiのように、チャット形式で文字のやり取りをしてLLMと情報のやり取りができます。

Ollamaはデフォルトはローカルでしか動いていないためにモデルのカットオフ以降の情報は正確な回答を求められないものの、やりとりしたコンテキストはローカル(つまりそれを実行した環境)に閉じていることから、データの漏えいを気にせずに安心して使えます。

Ollamaはアプリ以外でもこういった使い方も可能です。cURL以外についてはこちらをご覧ください。

$ curl -X POST http://localhost:11434/api/chat -H "Content-Type: application/json" -d '{
  "model": "gemma4:e2b",
  "messages": [{"role": "user", "content": "Tell me about Canada in one line"}],
  "stream": false,
  "format": "json"
}'

{"model":"gemma4:e2b","created_at":"2026-04-07T02:11:43.233048Z","message":{"role":"assistant","content":"{\"result\": \"Canada is a vast, diverse North American country known for its stunning wilderness, multicultural society, and rich natural resources.\"}","thinking":"Thinking Process:\n\n1.  **Analyze the Request:** The user wants to know about Canada, but specifically \"in one line.\" This demands extreme conciseness and high information density.\n2.  **Identify Key Themes/Facts about Canada:** What defines Canada?\n    *   Geography (vastness, northern).\n    *   Demographics (multicultural, bilingual).\n    *   Nature (forests, water, wilderness).\n    *   Politics/Identity (federal, bilingual, diverse).\n3.  **Draft Potential Summaries (Focusing on impact):**\n    *   *Option A (Geographic):* Canada is the world's second-largest country, known for its vast northern landscapes and extensive natural resources. (Too long/clunky)\n    *   *Option B (Cultural/Identity):* A diverse, bilingual nation of opportunity stretching across the North American continent. (Good, but lacks the \"scope\")\n    * *Option C (Core Essence):* A vast, multicultural, and bilingual North American nation known for its stunning wilderness and rich resources. (Strong, covers the main points)\n4.  **Select and Refine the Best Option (Aim for punchiness and completeness):** Option C is the most comprehensive single statement.\n\n5.  **Final Output Generation.** (The chosen response.)"},"done":true,"done_reason":"stop","total_duration":13737697208,"load_duration":6175427875,"prompt_eval_count":27,"prompt_eval_duration":243962500,"eval_count":29,"eval_duration":519388373}%  

Ollamaとほかのソフトウェアと連携して、ほかのソフトウェアからOllamaのローカルLLMを使って色々なことができます。 Claude Code, Codex, OpenCode, Droid, Pi...そして今回取り上げるGooseもサポートしています。

Gooseは「エンジニアリングタスクを自動化する、ローカルで拡張可能なオープンソースのAIエージェント」だそうです。Apache-2.0 ライセンスで提供されています。 Goose自身は「エンジン」は持っておらず、あくまで色々なエンジンと連携した上で利用するソフトウェアとのこと。

4/8追記 ソフトウェアの設定を色々探したところ、Gooseにローカルプロバイダーを使うと、Goose単体でもエージェントとして動作させることができることがわかりました。ただ、専用の何かを行ったイメージじゃないと使えないらしく、決められたイメージからどれかを選ぶ形になるので、ほぼローカルで使うことは無いと思います。

以下にサポートしている「エンジン」の一覧がまとまっており、その中にもちろんOllamaがあります。

Gooseはアプリ版とCLI版が提供されています。具体的にどういう設定をするかはOllamaのドキュメントにまとめられています。

この設定をすると、GooseからOllamaエンジンを使ってバイブコーディングができると言うわけです。 たとえばこんな感じで使えます。

タスクによって、モデルを切り替えて使えます。GitHub Copilotはさまざまなモデルが抱えますが、ほかのAI Agentは最新版と2-3世代前のモデルくらいしか選択肢がないと思います。Ollamaはかなり多くのモデルが使えますし、その中にはコーディングに特化したモデルと言うのも存在します。課金すればOllamaクラウド上の大きめのモデルとかも使えますので、可能性は無限大です。

今回の組み合わせでは、OllamaがサポートするモデルであればどれでもGooseで使えます。

% goose

    __( O)>  ● new session · ollama gemma4:e2b
   \____)    20260407_6 · /Users/ytooyama/working/code/goose
     L L     goose is ready
  ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ 0% 0/128k
  
🪿 hello worldを表示するPython3のコードを作って

はい、Python 3で「Hello, world!」を表示するコードは以下の通りです。

print("Hello, world!")

このコードをファイルに保存したい場合は、例えば `hello.py` というファイル名で保存してください。

**"hello.py" の内容:**

print("Hello, world!")


ターミナルで実行するには、以下のようにします。

python3 hello.py

  ⏱ 16.83s
  ━╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ 3% 3k/128k
🪿 hello worldを表示するPython3のコードを作って、hello.pyという名前で保存して


  ────────────────────────────────────────
  ▸ write
    path hello.py
    content: print("Hello, world!")

    Created hello.py (1 lines)
"hello.py" という名前で、"Hello, world!" を表示するPython 3のコードを作成し保存しました。

ファイル内容は以下の通りです。

print("Hello, world!")


これでご要望は完了しました。他に何かお手伝いできることはありますか?
  ⏱ 15.45s
  ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ 2% 3k/128k
🪿 quit

  ● session closed · 20260407_6

イメージ的には、Claude CodeやCodex、Gemini CLIみたいな感じですね。 アプリ版もこんな感じです。イメージ的にはCodexアプリ版の近いイメージです。

アプリ版はタスクの同時並行操作も簡単にできそうです。 大量にタスクを回すなら、アプリ版の方が使い勝手が良いかもしれません。

アプリ版もCLI版も使いやすかったのですが、私はCLI版の方が設定が簡単だったので好きですね。

ちなみにターミナルはWezTermを使っています。最近のお気に入りです。

一般的なタスクと比べると、コーディングには必ずしも最新の情報が必要ない場合も多いです。 また仕事によっては、外部に情報をいっさいさらすことができない場合もあります。

そんなとき、たとえばともにオープンソースのソフトウェアであるOllamaとGooseの組み合わせを使えば、完全オフラインでバイブコーディングができると言うわけです。

完全オフラインという特殊な環境以外でも、SaaSのAIエージェントとローカルLLMのエージェントを上手く組み合わせることで開発効率を上げるみたいなことがOllamaとGooseの組み合わせでできそうです。

これは軽い作業なのでローカルLLMに投げてみるかとか、これは複雑な作業なのでSaaSのLLMに投げてみるかとか、お金は有限ですからね。

ちなみにOllama自体にもアプリ以外にIDEとの連携機能が用意されていて、つぎのドキュメントのように設定するだけでVSCodeからOllamaが使えるようになります。 サポートしているIDEで普段コーディングしているのであれば、Ollama単体でも色々できそうです。

これからも色々触っていきたいと思います。 こういうの触るの大好きなんですよね。実は。