Skip to content

アーキテクチャ

モジュール構成

モジュール役割
:androidAppAndroid エントリ(MainActivity
:desktopAppDesktop エントリ(main
:wasmAppWeb(Wasm)エントリ
:composeApp共有 UI + Nav3(ルート定義はここ)
:staffComposeApp / :staffDesktopAppスタッフ運営コンソール(JVM)
:core:domainモデル・採点・ユースケース
:core:dataRepository・Metro バインディング・fakeMain/prodMain
:core:uiQuizTheme・トークン・共通コンポーネント
:feature:quizHome / Quiz / Result
:feature:rankingRanking
:feature:staffスタッフ UI(JVM のみ)

依存方向

feature → core:ui, core:domain
data → domain
composeApp → feature
staffComposeApp → feature:staff

逆依存は禁止です。Nav ルートは composeApp のみ。main() / MainActivitycomposeApp に追加しないでください。

画面の MVI

各画面は次の型を揃えます。

  • XxxUiState
  • XxxIntent
  • XxxEvent
  • XxxViewModel

ビジネスロジックは domain のユースケースへ寄せます。

共有依存グラフ

AppDependencies.shared のみを使い、initQuizAppGraph()(Metro)で 一度だけ 初期化します。グラフの二重生成は避けてください。

テーマ

  • QuizTheme { } でラップ
  • 色は QuizTokens / QuizColors(機能モジュールで生の Color(0x…) を直書きしない)