
計画とレビューに表示されたジャーニー。受け入れ条件と、それを支える7つのブループリント。
インテント仕様
Kanaは最初にインテント仕様を書きます。ほかのすべてのブループリントは、これに沿っている必要があります。- 表示例
- ソース
意図: 夜と昼のラウンドを、全員に見えるタイマーでゲーム自身が進行し、誰もGM役で抜けなくて済むようにする。理由: いまは誰か1人がゲームから抜けて、役職を配り、夜に起こし、票を数えています。その人は一度も遊べません。このアウトカムのすべては、その役目を交代制にするのではなく消すために存在します。
- 絶対に譲れないこと: プレイヤーが他人の役職を受け取ることはない。時計はサーバーが持ち、クライアントは表示するだけ
- 許容できるトレードオフ: フェーズが閉じる時点でオフラインのプレイヤーは、そのフェーズの行動を失う。ラウンド履歴はそのゲーム内のみで保持し、保管はしない
- 条件: 同じゲームで、2人が別のフェーズを見ていると報告された。ラウンドを凍結してオーナーに上げる — 時計が割れると以降の投票がすべて静かに無効になる
- 条件: その役職を持たないプレイヤーへの応答に、役職が含まれていた。ゲームを停止して配り直す — 勝てないゲームになっており、誰もそれに気づけない
UXモックアップ
絵ではなく、実際のルートを操作できるライブのプロトタイプです。Nadiaのプライベートルームのモックアップには21の画面があります。正常系、失敗、復帰、プライバシー、満員のルームです。変更点にはそれぞれ印が付いているので、その場でレビューできます。- Kanaeruでの表示

左に画面の一覧、右にライブのプロトタイプ。Review 38 は、レビューが残っている変更の数です。

招待の差し替え方法をNadiaが決めると、Kanaがプロトタイプを更新してそれを示します。
ユーザージャーニー
人がたどる手順をフェーズごとにまとめ、各手順を誰が行うか、どう感じるかを示します。数値が高いほど良い体験です。- 表示例
シーケンス図
システムの各部分がどの順番でやり取りするかを示します。この例は、夜の行動が締め切りの前後に届く場合です。- 表示例
- ソース
ステートマシン
ゲームが取りうるすべての状態と、状態を次に進めるきっかけを示します。- 表示例
- ソース
データモデル
テーブル、カラム、データベースが強制するルールです。KanaはDBMLで書きます。一意インデックスに注目してください。1フェーズにつき1席1行動、1席1票というルールは、アプリのコードではなくデータベースのルールです。- 表示例
- ソース
ドメインモデル
ビジネス上の概念、そのうちどれが一貫した単位(集約)をなすか、そしてそれらが守るルールです。KanaはD2で書き、コア、サポーティング、汎用の3つの階層に分けます。@change は、このアウトカムで追加または変更されるものを示します。
- Kanaeruでの表示
- ソース

ドメインモデルの変更を1つずつレビューしているところ。Roomは新しく、3つの属性を持ちます。それぞれを Approve または Flag します。
アーキテクチャ
コンポーネント、それぞれの責務、コンポーネント間のデータの流れです。KanaはLikeC4で書きます。LikeC4には、コンポーネント、デプロイ、連携、データの各ビューがあります。- 表示例
- ソース
API契約
アウトカムが追加・変更するエンドポイントを、OpenAPIドキュメントとして示します。ラウンドに必要な最小限の範囲です。存在しないものに注目してください。他人の役職を返すエンドポイントはありません。- 表示例
- ソース
技術スタック
各決定には、選んだもの、選んだ理由、ほかに検討したもの、トレードオフを記します。Kanaeruでは、各カードに技術のロゴが表示されます。- 表示例
- ソース
言語: TypeScript
フェーズとロールの型をサーバーと画面で共有し、片側だけ古くなることを防ぐ。代替案: Python、Go。
フレームワーク: Next.js
参加画面とラウンド画面を同じ土台で出し、サーバー送出イベントもそのまま扱える。代替案: Remix、SvelteKit。トレードオフ: 同時接続が数百を超えると、専用のソケット層が必要になる。
データベース: PostgreSQL(変更)
1フェーズ1席1行動という制約が、アプリのコードではなく一意インデックスそのもの。代替案: MySQL、DynamoDB。
ホスティング: Vercel
デプロイ単位が小さく、参加リンクの配信が素直。代替案: Fly.io、Render。
認証: 席トークン(アカウントなし)(新規)
名前は通話にいる全員に見えるため、席の証明には使えない。参加時に配る使い捨てトークンで代替する。代替案: Auth0、Clerk。
モニタリング: 構造化ログ + エラートラッキング
ワークスペースの既定を継承。このアウトカムのために選び直していない。
品質プロファイル
作業が満たすべき品質特性について、プロダクトの現在の状態と目標を示します。Kanaeruではレーダーチャートで表示します。- 表示例
- ソース