「popopo-ipc」でUnityのメインスレッドを止めずに送受信できた

popopo-ipc
Flutter アプリと埋め込んだ Unity の間で、高速にメッセージをやりとりするためのライブラリ群
GitHub
公開
正式公開 2026-07-16
作り手
POPOPO Inc.(会社)
対応
iOS・Android
言語
Dart・C#・Rust
価格
無料(MIT ライセンス)
評価
GitHub のスター 87(2026-10-08)

どんなアプリか

Flutter - Unity 間の高速なメッセージングを実現するためのライブラリ群です。

POPOPO Inc.、GitHub の README

Flutter のアプリに Unity を埋め込んだときに、両者の間でメッセージをやりとりするためのライブラリ群です。C# と Dart それぞれのネイティブ FFI を使い、関数ポインタの交換と、ネイティブメモリ上の共有バッファでやりとりします。MethodChannel や UnitySendMessage を経由しないため、シリアライズや文字コードの変換、スレッドの乗り換えを減らせると説明されています。

README には、MethodChannel と UnitySendMessage を組み合わせる従来の方式と実機で比べた結果が載っています。文字列を送って返ってくるまでの時間は、popopo-ipc を1としたとき、従来の方式で約200〜300でした。

Unity のメインスレッドを止めずに、どのスレッドからでも送受信できます。送る中身は文字列に限らずバイト列で、形式は問いません(今は protobuf を想定)。送った先の処理の成否を表すステータスコードと返事のデータを受け取れ、タイムアウトも設定できます。1つのリクエストに複数の返事を返すストリームの形も使え、Unity から Flutter へのイベント配信に使えると書かれています。

リポジトリは、土台となる Rust 製のネイティブライブラリ、Flutter(Dart)側のクライアント、Unity(C#)側のパッケージ、サンプルの4つで構成されています。サンプルでは、従来の方式と popopo-ipc の往復時間を iOS や Android の実機で比べられます。

料金とデータの置き場所

GitHub で MIT ライセンスのもと公開されています。

同じ分野のアプリ

名前型仕掛け対応料金
popopo-ipc言語間メッセージングFFI で関数ポインタと共有バッファを交換し、Flutter と Unity の間をつなぐFlutter(Dart)・Unity(C#)、iOS / Android無料(OSS, MIT)
Zero Messengerメッセージング(Pub/Sub)メモリ割り当てゼロのメッセージング(Pub/Sub).NET・Unity(C#)無料(OSS, MIT)
pyproc言語間呼び出しUnix ドメインソケットで Go から Python の関数をローカル関数のように呼ぶGo ライブラリ+Python ワーカー無料(OSS, Apache-2.0)
CsSqliteSQLite バインディング.NET と Unity 向けの軽量な SQLite バインディングNuGet・Unity パッケージ無料(OSS, MIT)

入れる前に

今の実装は、Unity と Dart の両方がまったく同じネイティブライブラリを dlopen できることを前提にしています。Dart 側から接続するのは、Unity 側でチャンネルの Listen を始めた後です。

受け取った返事は Dart 側で破棄する必要があります。Unity 側では、受け取ったリクエストの中身はコールバックを抜けると自動で破棄されるため、非同期に処理するときはコールバックの中でコピーを取るよう書かれています。

Unity 側でリクエストを受け取る処理は、Unity のメインスレッドではなく専用のワーカースレッドで動きます。