kukuriのシステム構成(AIメモ)

「画面はReact、頭脳と通信(P2P)はRustで共通化し、デスクトップはTauri、WebはWASMをクッションにして動かす」

表示されているIssueの内容から読み取れる、このアプリケーション(kukuri)のシステム構成は以下のようになっています。

全体的な目標として、「デスクトップ版(Native)とWebブラウザ版で、Rustで書かれたコアロジックを共通化しつつ、それぞれの環境に合わせた実行境界を作る」という構成を目指しています。

具体的には以下のようなアーキテクチャです:

フロントエンド (UI)
Reactが使われています。ここから各プラットフォームのバックエンド(Rust)へコマンド(invoke)を送ります。

共通コアロジック (Rust)
ビジネスロジック、暗号化処理(秘密鍵の管理、署名生成、復号)、P2Pプロトコル、権限判定などの最重要部分は、プラットフォーム問わず共通のRustコードとして動かします。

ネットワーク通信にはP2Pライブラリの iroh を使用し、E2E(エンドツーエンド)暗号化通信を行います。中央サーバーが鍵を預かるようなGateway方式は採用していません。

プラットフォームごとの実行境界(アダプター)

デスクトップ版 (Native):
Tauri を経由してRustコアを呼び出します。

OSのネイティブ機能(ファイルシステム、SQLiteデータベース、OS通知、Tokioのマルチスレッドなど)をフル活用します。

Webブラウザ版 (WASM):今回のIssueの主目的
Rustコードを WebAssembly (WASM) にコンパイルし、wasm-bindgen を使ってJavaScript/Reactとやり取りします。

ブラウザではファイルシステムやTokioのマルチスレッド機能が使えないため、これらを切り離し、代わりに IndexedDB などを利用する非同期I/OやWorkerに置き換える構成にしています。

要するに、「画面はReact、頭脳と通信(P2P)はRustで共通化し、デスクトップはTauri、WebはWASMをクッションにして動かす」という、モダンで高度なマルチプラットフォーム構成です。

スクリーンショット 2026-09-20 223455

スクリーンショット 2026-09-20 223711

Write a comment