rmp-example:RMP(Rust マルチプラットフォーム)サンプル
概要
rmp-example は「RMP Architecture Bible」に基づき、Rustで書かれたマルチプラットフォームアプリケーションをエンドツーエンドで構築できることを実証するためのサンプルリポジトリです。リポジトリには設計思想やアーキテクチャの詳細をまとめたドキュメントと、実際に動作するコードのスキャフォールド(rmp-cli、hello-chat 等)が含まれます。中心となる考え方は、ビジネスロジックをRustの単一コアに集約し、UniFFI などで各プラットフォームに安全に公開、UI 層は SwiftUI / Jetpack Compose / iced などネイティブまたはクロスプラットフォーム技術で実装するという分離です。本リポジトリは、アーキテクチャの完全性を示す教材かつ、AIベースのコーディングエージェントがゼロからアプリを生成できる設計仕様の実例となっています。
リポジトリの統計情報
- スター数: 5
- フォーク数: 0
- ウォッチャー数: 5
- コミット数: 2
- ファイル数: 5
- メインの言語: Rust
主な特徴
- RMP Architecture Bible: Rust マルチプラットフォーム開発の哲学と実装指針を詳細に解説。
- マルチプラットフォーム構造: コアを Rust で保ち、各プラットフォームに対して薄いアダプタ(FFI + ネイティブUI)を提供。
- UniFFI を想定した FFI 設計: 言語間バインディングを想定した実践的なパターンを提示。
- rmp-cli とサンプル: CLI ツールと hello-chat サンプルで実際のワークフローを検証。
技術的なポイント
RMP のコア設計は、ビジネスロジックを Rust に集約し、UI/プラットフォーム特有の実装を薄いレイヤーに分離する点にあります。アーキテクチャとしては TEA/Elm 由来の単方向データフロー(Model / Update / View)を採用し、副作用は明示的に管理して再現性とテスト容易性を高めます。FFI 層には UniFFI の利用を想定しており、Rust の型を安全に Swift や Kotlin/Java、あるいは JavaScript に公開するためのガイドラインが示されます。プラットフォーム別の UI レイヤーは SwiftUI、Jetpack Compose、iced(Rust GUI)などを想定しており、これらを薄いアダプタでコアに接続することで、UI を入れ替えてもコアの再利用性を維持できます。
ビルドと配布の観点では、クロスコンパイルや CI パイプライン、ユニット・統合テストの配置、バイナリとバインディング生成の手順が設計書にまとめられています。rmp-cli はこうしたパイプラインやプロジェクト雛形生成の自動化を担う想定で、実運用ではテンプレート生成、バインディングの自動ビルド、またはデプロイ手順の統合が可能です。さらに、このリポジトリは「AI コーディングエージェントが設計書から完全なマルチプラットフォームアプリを生成できるか」を検証する PoC であり、設計の明確さ・機械可読性を重視してドキュメントとサンプルが構成されています。注意点としては、UniFFI 等の FFI は型やランタイムの違いに起因する落とし穴(所有権、スレッド、安全性など)があり、生成されたバインディングのテストやプラットフォーム特有の最適化は手作業での調整が必要になることが現実的な制約です。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- Git 管理から除外するファイル/ディレクトリの定義。ビルド生成物やターゲットフォルダなどを無視します。
- README.md: file
- リポジトリ全体の概要、目的、含まれる主要コンポーネントの簡潔な説明を提供します(抜粋は本文末に掲載)。
- hello-chat: dir
- サンプルアプリケーションのディレクトリ。実際に RMP の設計に基づいたミニアプリを格納し、コアロジックとプラットフォーム層の接続例を示します。チャット型インターフェイスやメッセージ処理の流れを通じてアーキテクチャを検証する用途が想定されます。
- rmp-architecture-bible.md: file
- このリポジトリの中核となる文書。RMP の哲学、TEA/Elm ベースのアーキテクチャ、FFI(UniFFI)設計、各プラットフォーム層(SwiftUI、Jetpack Compose、iced)、ビルドパイプライン、典型パターンやアンチパターンを網羅的に解説しています。設計書としての完全性を重視し、AI エージェントが自動生成する際の手引きにもなります。
- rmp-cli: dir
- rmp コマンドラインツールの実装ディレクトリ。プロジェクトの雛形生成、バインディングビルドの自動化、あるいはテンプレート管理などを行うユーティリティを含む想定です。CLI を通じて一貫したプロジェクト構造を作り、リピート可能なビルド/生成ワークフローを実現します。
各ディレクトリ・ファイルは、RMP の考え方(コア集中、薄いプラットフォームアダプタ、明示的な副作用管理)を体現するように配置されており、実プロジェクトに移行する際のスケルトンとして機能します。
まとめ
RMP アーキテクチャの理念と実践を示す良質な PoC。マルチプラットフォーム開発の教科書として有用。
リポジトリ情報:
- 名前: rmp-example
- 説明: 説明なし
- スター数: 5
- 言語: Rust
- URL: https://github.com/justinmoon/rmp-example
- オーナー: justinmoon
- アバター: https://avatars.githubusercontent.com/u/4335621?v=4
READMEの抜粋:
RMP Example
A proof-of-concept demonstrating that the RMP Architecture Bible is sufficient for any coding agent to build a fully working multi-platform app from scratch.
What’s Here
rmp-architecture-bible.md— The comprehensive guide for building Rust Multi-Platform apps. Covers philosophy, architecture (TEA/Elm), FFI (UniFFI), platform layers (SwiftUI, Jetpack Compose, iced), build pipelines, and patterns.rmp-cli/— ThermpCLI tool that…