FlutterでローカルLLMを動かすとは?

スマートフォンの性能向上に伴い、クラウドに頼らずデバイス上で直接LLM(大規模言語モデル)を動かす「オンデバイスAI」の実用性が急速に高まっています。Flutterアプリの中でローカルLLMを実行すれば、オフライン対応、プライバシー保護、そして200ms以下のレイテンシという三拍子が揃った体験を提供できます。

実際にHacker Newsでもこのアプローチが話題になっており、モバイルアプリ開発者の間で関心が高まっているテーマです。自分も興味があったので、実際に調べた内容をまとめてみました。

なぜオンデバイスLLMが注目されているのか

プライバシーとデータ主権

ユーザーの入力データがサーバーに送信されないため、医療・法律・金融など機密性の高い分野でのAI活用が現実的になります。GDPRへの対応を考える場合にも、オンデバイス処理は有力な選択肢ですね。

オフライン動作

通信環境に依存しないので、地下鉄や機内、通信インフラが不安定な地域でもAI機能を提供できます。旅行アプリの翻訳機能や、フィールドワーク向けのデータ入力アシスタントなど、オフライン対応が求められるユースケースは意外と多いものです。

コスト削減

API呼び出しごとに課金されるクラウドLLMと違い、オンデバイスならランニングコストがゼロになります。ユーザー数が増えてもサーバー側の負荷は増えないので、スケーラビリティの面でも有利です。

Flutter × ローカルLLMの実装アプローチ

方法1: llama.cppのFFIバインディング

llama.cppは、C/C++で書かれた軽量なLLM推論エンジンです。FlutterからはDart FFI(Foreign Function Interface)を使ってネイティブライブラリとして呼び出せます。

このアプローチのメリットは、量子化されたGGUFモデル(4bit〜8bit)を直接読み込めるため、メモリ使用量を大幅に抑えられる点です。Gemma 2BやPhi-3 Miniの量子化版であれば、4GB RAMのスマートフォンでも動作します。

方法2: MediaPipe LLM Inference API

Googleが提供するMediaPipe LLM Inference APIは、モバイルデバイスでのLLM実行に最適化されたソリューションです。GPU・NPUアクセラレーションに対応しており、手動でFFIバインディングを書く必要がないのが利点ですね。

方法3: MLC LLM

MLC LLMは、さまざまなハードウェア上でLLMを効率的に実行するためのフレームワークです。Android向けにはVulkan GPUバックエンドを活用でき、一部のモデルではCPU推論よりも2〜3倍高速な処理が可能になっています。

推奨モデルとパフォーマンス目安

2026年2月時点で、モバイル端末で実用的に動作するモデルをいくつか紹介します。

  • Gemma 2B Q4: Google製。軽量で応答品質もそこそこ。チャットや簡易な質問応答に向いている
  • Phi-3 Mini 3.8B Q4: Microsoft製。推論性能が高く、コード生成にも対応
  • Qwen2 1.5B: Alibaba製。日本語対応が比較的良好
  • TinyLlama 1.1B: 超軽量。古い端末でも動作するが、品質はそれなり

パフォーマンスの目安としては、Snapdragon 8 Gen 3搭載端末でGemma 2B Q4を動かした場合、初回トークンまで150〜200ms、生成速度は15〜25トークン/秒程度が期待できます。最新のフラッグシップであれば、テキストチャットとしては十分実用的なスピードです。

実装時の注意点

メモリ管理

モバイル端末のRAMは限られているので、モデルのロードとアンロードのタイミングを適切に管理する必要があります。バックグラウンドに移行した際にモデルを解放し、フォアグラウンドに戻った際に再ロードするといった制御が重要です。

モデルサイズとダウンロード

量子化済みの2Bモデルでも1〜2GB程度のサイズがあるため、アプリ内に同梱するのは現実的ではありません。初回起動時にダウンロードする仕組みと、ダウンロード進捗の表示を実装しておくのが良いでしょう。

バッテリー消費

LLM推論はCPU・GPUに高い負荷をかけるため、バッテリー消費が増えます。連続的な推論ではなく、ユーザーの入力をトリガーにしたオンデマンド推論にすることで、バッテリーへの影響を最小限に抑えられます。

実用的なユースケース

  • オフライン対応の翻訳・通訳アプリ
  • プライバシー重視のヘルスケアチャットボット
  • ローカルで動く文章校正・要約ツール
  • 子供向け教育アプリのAIチューター
  • フィールドワーク向けのデータ入力アシスタント

まとめ

FlutterでローカルLLMを実行する技術は、2026年現在かなり実用的なレベルに達しています。llama.cppやMediaPipe LLM Inference APIなどの選択肢が揃い、2Bクラスのモデルであれば一般的なスマートフォンでもストレスなく動作するようになりました。プライバシーやオフライン対応が求められるアプリを開発している方は、検討してみる価値があると思います。

参考: llama.cpp GitHub | MediaPipe LLM Inference | MLC LLM

関連記事: Ollamaとは?ローカル環境でLLMを動かせるツールの特徴・使い方・おすすめモデルを解説

関連記事: LangChainとは?LLMアプリケーション開発フレームワークの特徴と使い方を解説【2026年最新】

関連記事: チェスAIの訓練手法がLLM開発に示すヒント|蒸留・SPSA・ランタイム適応の仕組みを解説