筆者は常にいろいろな連載を書いているので、今度は何を書こうかと悩むこともあります。それで、生成AIと相談してアイデアを考えることもあります。そこで、今回は、ローカルLLMを使って、安心して何でもブレストできるツールを作ってみましょう。

  • 一人で盛り上がるアイデアブレストツールを作ってみよう

    一人で盛り上がるアイデアブレストツールを作ってみよう

ローカルLLMを使うメリット

ローカルLLM(Large Language Model)とは、インターネットに接続せずに動作する言語モデルのことです。ChatGPTのような生成AIを使ったチャットAIは、通常、クラウド上で動作していますが、ローカルLLMは、自分のコンピューター上で動作します。

ローカルLLMを使うと、インターネットに接続せずに、自分のPCの中だけで全てが完結するため、プライバシーやセキュリティの面で優れています。外部のサーバーにデータが送信されたり、アイデアやブレストの内容が外部に漏れることなく、安心して使うことができます。

と言うのも、無料の生成AIのサービスもありますが、多くのサービスは、利用規約やプライバシーポリシーにより、ユーザーのデータを収集・利用することがあります。ローカルLLMを使用することで、これらの懸念を回避できます。

ローカルLLMを使うには性能の良いPCが必要

ただし、ローカルLLMを使う場合、自分のPCがそれなりの性能を持っている必要があります。大規模なLLMは、GPUや大量のメモリを必要とすることがあるため、使用するモデルやツールによっては、PCのスペックに注意が必要です。今回は、比較的性能の低いローカルLLMでもそれなりに動くように、軽量なモデルを選んで使用することにします。

ローカルLLMをインストールしよう

ローカルLLMを使うには、いくつかの方法があります。かつては、ローカルLLMを使うために自分でプログラムを作らなくてはいけませんでしたが、今では、手軽にローカルLLMをインストールして使えるツールがいくつかあります。今回は、比較的簡単にインストールできるOllamaを使ってみましょう。

Ollamaは、ローカルLLMを簡単にインストールして使えるツールで、Windows、Mac、Linuxなどの主要なOSに対応しています。Ollamaを使うと、コマンドラインから簡単にローカルLLMをインストールして使用することができます。Ollamaはこちらからインストーラーをダウンロードできます。インストールは、とても簡単です。

Gemma 3をインストールして使ってみよう

Ollamaをインストールすると、コマンドラインからローカルLLMをインストールして使用することができます。例えば、以下のコマンドを実行すると、Googleが公開している軽量モデルである「Gemma 3(4Bモデル)」をインストールできます。

ollama run gemma3:4b

初回実行時には、Gemma 3のモデルがダウンロードされるため、少し時間がかかりますが、ダウンロードが完了すれば、すぐにローカルLLMを使うことができます。なお、最小の4Bモデルであっても、3.3GB程度のメモリを必要とするため、PCの空き容量に注意してください。

「>>>」というプロンプトが表示されたら、ローカルLLMが起動している状態です。ここで、質問や命令を入力すると、ローカルLLMが応答してくれます。

  • コマンドラインからGemma 3を使っているところ

    コマンドラインからGemma 3を使っているところ

なお、コマンドラインで「/bye」と書くと、ローカルLLMを終了することができます。

プロジェクトを作成しよう

これで、準備が整いました。本当は、ローカルLLMを使ってバイブコーディングを実践したかったのですが、本格的なコーディングエージェントを使うには、多くの方のマシンパワーが足りないことでしょう。そこで、コーディングエージェントだけは、OpenAIの「Codex」を使ってみようと思います。

Codexをインストールしていない方は、本連載の8回目を参考にしてインストールしてください。

Codexでは、特定のフォルダを、プロジェクトとして認識させることができます。今回は、「idea-turbo」という名前のフォルダを作成して、そのフォルダ以下にブレストツールを作成してみましょう。

# プロジェクト用のフォルダを作成
mkdir idea-turbo
cd idea-turbo
# Windowsの場合
codex .

前回は、リリースされたばかりのmacOSのCodexアプリを使う方法を紹介しました。今回も、macOSではCodexアプリを使います。Windowsの場合は、下のようにコマンドラインからCodexを起動しましょう。コマンドラインで「codex .」と入力すると、現在のフォルダをプロジェクトとして認識させることができます。

Codexに指示を与えてブレストツールを完成させよう

まず、フォルダ内に、「README.md」というファイルを作成してみましょう。そして、そこに、どんなアプリを作りたいのか、どんな機能が欲しいのかを記述します。

今回は、以下のようなプロンプト(指示書)を書いてみました。

# プロジェクト「idea-turbo」

このプロジェクトは、アイデアをブレストするためのツール「idea-turbo」を開発するためのプロジェクトです。

「idea-turbo」は、ユーザーが入力したキーワードやテーマに基づいて、
ユーザーが一人でアイデアを出すのを助けるツールです。
ローカルLLMを使って、ユーザーが入力したアイデアを、全力で褒めまくります。

ユーザーのアイデアが尽きたときには、ユーザーが入力したキーワードやテーマに
関連するアイデアを生成して、ユーザーのアイデア出しを助けます。

## 使用する技術

- Ollama
  - デフォルトでモデル `Gemma 3(4Bモデル)`を使用します
  - 設定ファイル「setting.toml」で、モデルの変更や、プロンプトの変更ができるようにします
- Python
  - コーディングエージェントの実装に使用します
  - FastAPI - ローカルWebサーバーの実装に利用します

## アプリの仕様

- ユーザーは、最初にタイトルを決め、そのタイトルに基づいてユーザーが一人でブレストを行います。画面上部にタイトルが表示されます。
- ユーザーがアイデアを入力して送信すると、ローカルLLMが、ユーザーのアイデアを全力で褒めまくります。
- 絵文字などを利用して、ユーザーのアイデアを盛大に褒めちぎります。
  - そして、時々、サクラの花びらが舞い散るエフェクトを表示してください。
- ユーザーのアイデアが尽きたとき(20秒ほど何も入力がない時)には
  - ローカルLLMが、ユーザーが入力したキーワードやテーマに関連するアイデアを生成して、ユーザーのアイデア出しを助けます。
- ユーザーとLLMのやりとりは、常に、テキストファイルに保存してください。
  - ファイル名は`{タイトル}.txt`としてください。

## ファイル構成

ファイル構成は次のようなものを想定します。作成してください。

---
idea-turbo/
├── README.md  --- このファイル
├── main.py
├── setting.toml  --- 設定ファイル
├── templates/
│   └── index.html
├── static/
│   ├── background.png  --- ブレストツールの背景
│   ├── style.css
│   └── script.js
└── data/
    ├── {タイトル1}.txt
    ├── {タイトル2}.txt
    └── {タイトル3}.txt
---

## 備考(注意事項)

- 日本語で応答してください
- 日本語のコメントを含めて分かりやすいプログラムを作成してください
- テキストボックスですが、日本語入力の途中でテキストが送信されないように、IMEが変換中かどうかを判定する処理を忘れないように入れてください

そして、Codex上のチャットで、次のような指示を与えてプログラムの開発をはじめましょう。

README.mdに書いてある内容を元にして、プログラムを作成してください。

アプリが完成するまで

上記の指示をしてから、しばらく待っているとアプリが作成されます。今回筆者は、利用モデルに「GPT-5.3-Codex」を使用しましたが、一度もエラーが出ることなく、スムーズにアプリが完成しました。優秀です。

  • Codexがアプリを開発しているところ

    Codexがアプリを開発しているところ

また、今回、使用技術に、PythonとFastAPIを指定しましたが、この組合せは、Webアプリ開発でよく使われているものなので、Codexが得意とする組合せなのかもしれません。

作成されたアプリ

今回作成したアプリを、こちらにアップロードしています。アプリを試したいという方は、こちらからファイル一覧をダウンロードして使ってみてください。

Ollamaを起動していることを確認して、ターミナルを起動します。そして、アプリのフォルダに移動して、次のコマンドを実行してください。

cd <アプリのフォルダ>
python main.py

その後、ブラウザで「http://localhost:8000」にアクセスすると、アプリが表示されます。あとは、画面の指示に従って、アイデアを入力してみてください。ローカルLLMが、あなたのアイデアを全力で褒めちぎります。

  • アプリを実行したところ

    アプリを実行したところ

Ollamaのモデルを変更してみよう

なお、今回のアプリは、Ollamaのモデルを「Gemma 3(4Bモデル)」に設定していますが、設定ファイル「setting.toml」を編集することで、他のモデルに変更することもできます。Codexにモデルを変更するように指示することもできるでしょう。

あと、利用しているPCのスペックがそれほど良くないという方は、AIからの応答が遅くて、イライラするかもしれません。その場合、Ollamaのモデルを、クラウド対応のものに変更することもできます。Ollamaは、クラウド上のモデルも利用できるようになっているので、そちらを利用することで、応答速度が劇的に早くなります。

モデル名を変更するだけで、ローカルモデルとクラウドモデルを切り替えることができるのは、Ollamaの大きなメリットの一つです。「△△△-cloud」のような名前がついているモデルは、クラウド上のモデルとなります。例えば、「gemma3:27b-cloud」などと指定できます。(ある程度クラウドモデルを使うと、有料プランを案内されます。)ただし、クラウドモデルを使う場合、ユーザーの発言が外部サーバーに送信されているという点には注意してください。

Ollamaで利用できるモデルの一覧は、こちらのOllamaのWebサイトで公開されています。

  • クラウドモデル「gemma3:27b-cloud」を試したところ

    クラウドモデル「gemma3:27b-cloud」を試したところ

まとめ

以上、今回は、ローカルLLMを使って一人で盛り上がるブレストツールを作ってみました。ローカルLLMを使うことで、安心してアイデアを出すことができるツールが簡単に作れることがわかりました。Ollamaを使う事で、秘匿性の高い情報を扱うツールの開発が手軽にできます。参考になれば幸いです。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2004年度未踏ユース スーパークリエータ認定、2010年 OSS貢献者章受賞。これまで50冊以上の技術書を執筆した。直近では、「大規模言語モデルを使いこなすためのプロンプトエンジニアリングの教科書(マイナビ出版)」「Pythonでつくるデスクトップアプリ(ソシム)」「実践力を身につける Pythonの教科書 第2版」「シゴトがはかどる Python自動処理の教科書(マイナビ出版)」など。