◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/開発ツール
⬡ 開発ツール/2026-05-06上級

RorkアプリにエッジAIを本番実装する — Ollama連携・ストリーミング・会話履歴管理・コスト設計まで

RorkアプリにOllama経由のローカルLLMを本番レベルで組み込む完全ガイド。トークンストリーミング・会話履歴のSQLite管理・クラウドフォールバック設計・個人開発者の収益モデルまで体系的に解説します。

Rork585OllamaエッジAI4ローカルLLMReact Native239GemmaオフラインAI個人開発218

✦ プレミアム記事

前編の記事では、Rorkで生成したReact NativeアプリからWiFi経由でローカルOllamaサーバーに接続し、基本的なテキスト生成を動かす方法をお伝えしました。「動いた、でも本番に使えるレベルかというと…」と感じた方も多いのではないでしょうか。私も最初にプロトタイプを作ったとき、同じ気持ちでした。

ここで扱うのはそのギャップを埋めることを目的としています。具体的には、ストリーミングで応答を受け取る実装、会話履歴をSQLiteで管理してモデルにコンテキストを渡す仕組み、クラウドAPIへのフォールバック設計、そして個人開発者として持続可能な収益モデルとの組み合わせ方まで、私が実際のアプリ開発で学んだことを体系的に整理しています。

なぜローカルLLMが個人開発者にとって重要な選択肢なのか

この話を始める前に、少し立ち止まって考えてみたいことがあります。

私は個人でAI機能付きのアプリを3本運営しています。最初はOpenAIのAPIを使っていたのですが、DAUが1,000を超えたあたりから月額費用がじわじわと膨らみ始めました。ユーザーが増えることは嬉しい。でも収益より費用の方が伸びが早い — そういう状況に直面したとき、API費用の構造そのものを変える必要があると気づきました。

Ollama + ローカルモデルというアプローチは、その文脈で考えると意味が変わってきます。サーバーを自前で立てることになるので「コストがかかる」と思うかもしれませんが、実は月額数千円の小さなVPSでGemma 4の4Bモデルを動かせます。一方、OpenAI GPT-4oは100万トークンで数十ドルかかります。ユーザーが一定数いるアプリでは、この差は非常に大きい。

ローカルLLMには制約もあります。最新情報の欠如、推論速度の制限、小さなモデルの精度。ただし、「チャット補助」「テキスト要約」「アイデア出し」といった個人向けアプリの典型的なユースケースなら、Gemma 4の7Bモデルでも十分に実用的です。

本番実装に向けたアーキテクチャ設計

シンプルに始める、段階的に複雑さを足す

本番レベルのエッジAI実装には、以下のレイヤーが必要になります。

[Rork App (React Native)]
  ↓ HTTP streaming
[EdgeAI Gateway (FastAPI)]
  ├── Local: Ollama (Gemma 4 7B)
  └── Cloud fallback: OpenAI / Gemini API
  
[Data Layer]
  ├── SQLite: 会話履歴・コンテキスト管理
  └── AsyncStorage: 設定・モデル選択

まずローカルのみで動かし、フォールバックは後から足す — この順番が大切です。最初から複雑な分岐を設計すると、デバッグが大変になります。

モデルの選択基準

Ollamaで使えるGemmaファミリーのモデルは、用途に応じて選び分けます。

# EdgeAI Gateway側のモデルルーティング例
MODEL_ROUTING = {
    "chat": "gemma4:7b",      # 会話全般 — バランス重視
    "summary": "gemma4:4b",   # 要約・短文生成 — 速度重視
    "analysis": "gemma4:12b", # 詳細分析 — 精度重視(リソース許容時)
}
 
def select_model(task_type: str, context_length: int) -> str:
    """コンテキスト長が長い場合は軽量モデルに切り替える"""
    base_model = MODEL_ROUTING.get(task_type, "gemma4:7b")
    if context_length > 4000 and base_model == "gemma4:12b":
        return "gemma4:7b"  # コンテキスト肥大化を防ぐため切り替え
    return base_model
✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦APIコストに悩む個人開発者が、Ollama連携アーキテクチャを設計・実装して月額API費用をほぼゼロに近づけるための具体的なコードと設計パターンを手に入れられます
✦トークンストリーミング・SQLite会話履歴・クラウドフォールバックという3つの本番必須パターンを、そのまま動かせるコードで学べます
✦エッジAIを活用した個人開発アプリの収益モデル設計(コスト構造の変革とプレミアム課金の組み合わせ)を理解できます
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⬡ 開発ツール2026-09-19
Rork が書き換えた箇所だけを読む — 再エクスポートのたびに回している差分確認の手順
再エクスポートしたコードを前回との差分として読むための手順です。追跡ファイルを一度消してから重ねる、雑音を外して数える、合流の前に一度止める——この3つで上書き事故を止めています。
⬡ 開発ツール2026-09-04
EAS の secret は「アプリに入れない」設定ではありません — 接頭辞と可視性を別々に決める
EXPO_PUBLIC_ の接頭辞は成果物に入るかを決め、EAS の可視性は誰が読めるかを決めます。二つを重ねたときに OTA 更新でだけ値が消える筋道と、出荷前に自分の手で確かめる手順をまとめました。
⬡ 開発ツール2026-09-03
リンクを押してもアプリが開かないとき、疑うのは assetlinks.json の置き場所より先に署名鍵です
Android App Links が検証されずブラウザに吸われる原因の多くは指紋の食い違いです。keytool の実出力と、手元で照合できる小さな検査スクリプトの実行結果を添えて整理しました。