kukuriのシステム構成(AIメモ)
表示されている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をクッションにして動かす」という、モダンで高度なマルチプラットフォーム構成です。


Write a comment