複数の音楽グループ対応 画面設計書
最終更新: 2026-11-09 関連 Issue: morning-status-blume#246(設計書の作成)/ MorningStatusApp#1817(期バッジ・ユニット一覧のグリッドの実装)
1. 概要
複数の音楽グループを扱うための画面設計。モーニング娘。の画面から、他の音楽グループのメンバー・楽曲・ユニットへリンクで辿れるようにする。データの前提は 複数の音楽グループ対応 データ設計書 に従う。
- 最低線: モーニング娘。の画面に、他の音楽グループの情報へのリンクを置き、リンク先の画面を用意する
- 最終形: 全音楽グループを切り替えて参照できる(切り替えの置き場所は §9 の方針のみ)
前提
- 他の音楽グループのメンバーは、
generation・profile.joinDate・profile.gradDateが登録されている(シードは別途用意する) - 音楽グループはメンバーの本拠地で、ユニットは音楽グループの内または音楽グループをまたいで結成される集団である。リリース・収録曲に紐づくのは広義のユニット(ユニットまたは音楽グループ)である
2. 画面一覧
| 画面 | URL | 区分 |
|---|---|---|
| 音楽グループのトップ | /groups/{groupId} |
新規(§7) |
| ユニット一覧 | /units |
変更(§5)。広義のユニットの一覧にする |
| ユニット詳細 | /units/{id} |
変更(§6-4)。所属メンバーに他の音楽グループのメンバーを含める |
| リリース詳細 | /releases/{id} |
変更(§8)。「開いた相手」に音楽グループを加える |
| 曲詳細・プレイリスト詳細 | /songs/{id}・/playlists/{id} |
変更(§6-2)。アーティストのリンク先を広義のユニットで決める |
| ラジオ放送回・公演・イベントの詳細 | /radio/episodes/{id} 等 |
変更(§6-1)。出演メンバーに他の音楽グループのメンバーを含める |
3. URL階層
実体(メンバー・リリース)は ID で引ける平らな URL とし、音楽グループ単位の画面だけを /groups/{groupId} の配下に置く。
| 対象 | URL |
|---|---|
| メンバー詳細 | /members/{memberId} |
| リリース・曲の詳細 | /releases/{id}・/songs/{id} |
| ユニット詳細 | /units/{id} |
| 音楽グループのトップ | /groups/{groupId} |
| 音楽グループ単位の画面(最終形) | /groups/{groupId}/... |
- モーニング娘。の既存の画面(TOP の
/・メンバー一覧の/members等)は、ルート直下のままにする。音楽グループの画面(/groups/{groupId})は、モーニング娘。にも用意する /units/morning-musumeは、/groups/morning-musumeへ遷移させるgroups/を先頭に付けるのは、既存のトップレベルのルートと、音楽グループの ID(動的セグメント)が衝突しないようにするためである。app/直下にはgroupsのルートがなく、衝突はない
4. 共通の表示
音楽グループ名付きの期バッジ
複数の音楽グループのメンバーが混ざる画面では、メンバーの期バッジを「音楽グループ名+N期」の1つのバッジにする。
| 例 |
|---|
アンジュルム12期・つばきファクトリー4期・ロージークロニクル1期・モーニング娘。18期 |
- 対象は、ユニット詳細の所属メンバー、共演メンバー(§6-1)、プレイリスト詳細のメンバーである
- モーニング娘。のメンバーだけの画面(
/members・TOP 等)は、N期とする - 色は、メンバーカラー、なければ期の色(世代共通カラー)、それもなければ
#94a3b8の順で決める。メンバー名ピル(タイムラインのイベントカード)と同じ規則である。音楽グループが違っても、同じ N期は同じ期の色になり、音楽グループはバッジの文字で区別する - バッジは共通部品にし、音楽グループ名を渡さない場合は
N期を表示する。他の画面(§6-1・§6-3・§6-4)が同じ部品を使う
5. ユニット一覧(/units)
ユニット一覧を、広義のユニット(音楽グループとユニット)の一覧にする。
- カードの並び: 音楽グループ(
groups.jsonの並び順)、続いてユニット(現在の並び) - カードには、種別バッジ(
音楽グループ・ユニット)を付ける - 音楽グループとユニットのカードは、1つのグリッドに並べる。音楽グループの件数が奇数でも、行に空きができず、続くユニットのカードが詰めて並ぶ。グリッドはモバイルファーストとし、モバイル幅は1列、
768px以上で複数列にする - クリックしたときの遷移先:
| カード | 遷移先 |
|---|---|
| 音楽グループ(モーニング娘。を含む) | /groups/{groupId}(モーニング娘。は /groups/morning-musume) |
| ユニット | /units/{id} |
- 画面は、データの件数に関係なく描画する。音楽グループのカードは、
groups.jsonにモーニング娘。だけが載る状態でも表示する - 他の音楽グループへ遷移する入口は、このカードのほか、楽曲のアーティストのリンク(§6-2)と、共演メンバーのバッジ(§6-1)である
6. 4パターンの見せ方
6-1. 共演メンバー
ラジオ放送回・公演・イベントの出演メンバーに、他の音楽グループのメンバーを含める。
- 表示: メンバー名と、音楽グループ名付きの期バッジ(§4)のチップ。
/members/{id}へリンクする - 並び順: 音楽グループの並び順(
groups.json)で並べ、各音楽グループの中は世代昇順・加入日昇順とする
6-2. 楽曲のアーティスト
ラジオのオンエア曲・プレイリストの曲・曲詳細のアーティストは、Track.unitId が指す広義のユニットでリンク先を決める。
Track.unitId の対応先 |
リンク先 |
|---|---|
| 音楽グループ(モーニング娘。を含む) | /groups/{groupId}(モーニング娘。は /groups/morning-musume) |
| ユニット | /units/{id}(各期ユニットは上位ユニットの /units/{parentId}。parentId が音楽グループのユニットは /groups/{parentId}) |
6-3. プレイリスト
メンバー名の右に併記する所属ユニットは、ユニットとする。メンバーの音楽グループは、音楽グループ名付きの期バッジ(§4)で示す。
6-4. 音楽グループをまたぐユニット
- ユニット詳細の所属メンバーに、他の音楽グループのメンバーを含める。メンバーは、名前と音楽グループ名付きの期バッジ(§4)で表示する
- メンバー詳細の「所属ユニット」は、他の音楽グループのメンバーでも同じ形で表示する
7. 音楽グループのトップ(/groups/{groupId})
音楽グループのトップ画面(モーニング娘。を含む)。最低線では、次のセクションを上から順に置く。
| セクション | 内容 |
|---|---|
| 概要 | 音楽グループ名・活動期間(activeFrom〜activeTo) |
| メンバー | その音楽グループのメンバー一覧。モーニング娘。のメンバー一覧(/members)と同じ見せ方。モーニング娘。の画面には /members へのリンクも置く |
| ユニット | その音楽グループのメンバーを含むユニット。/units/{id} へリンクする |
| 関連リリース | モーニング娘。以外は MusicGroup.releaseIds のリリース。モーニング娘。は「モーニング娘。のリリース」の判定で決めたリリースで、/releases へのリンクも置く。リリース詳細へは、モーニング娘。以外は ?group={groupId} を付けて遷移する |
- 戻るリンクは
/unitsへ遷移し、文言は「ユニット一覧に戻る」とする - 各セクションは、データが0件でも見出しを描画し、中身に「ありません」のプレースホルダーを置く
- メンバー一覧を別の画面(
/groups/{groupId}/members)に分けるのは、最終形の段階とする
8. リリース詳細(/releases/{id})
「開いた相手」に、音楽グループ(kind: group)を加える。
| 項目 | 内容 |
|---|---|
| クエリ | ?group={MusicGroup.id} |
| 前後ナビの候補 | MusicGroup.releaseIds に含まれるリリースのうち、同じフォーマットのリリース(リリース日降順・同日はタイトル昇順) |
| 「前の画面に戻る」のフォールバック | /groups/{groupId}。モーニング娘。は /releases |
parentIdが音楽グループを指すユニット(モーニング娘。の西暦年を含む名称のユニット等)の戻り先は、parentIdが音楽グループなら/groups/{parentId}、ユニットなら/units/{parentId}とする
9. 音楽グループの切り替えの置き場所(方針)
切り替えの実装は対象外とし、置き場所の方針だけを定める。
- 画面共通のナビゲーションに、音楽グループへの入口を置く
- 入口の遷移先は、ユニット一覧(§5)と同じ遷移先の規則に従う。どの音楽グループも
/groups/{groupId}である - TOP(
/)は、モーニング娘。の画面とする
10. 対象外
| 項目 | 内容 |
|---|---|
| 音楽グループの切り替えの実装 | §9 の方針のみ |
| 他の音楽グループの SNS の表示・新着 | SNS 収集を始める段階で検討する |
| 音楽グループ単位の画面(最終形) | /groups/{groupId}/members・タイムライン等 |
| 他の音楽グループのシード | 別途用意する |
11. 関連設計書
| 設計書 | 本書との関係 |
|---|---|
| 複数の音楽グループ対応 データ設計書 | 音楽グループ・メンバーファイル・記録の選び方・広義のユニットの定義 |
| ユニット機能 画面設計書 | ユニット一覧・ユニット詳細の既存の設計 |
| 画面設計書 | メンバー詳細・リリース詳細・曲詳細の既存の設計 |
| リリース データ設計書 | 「開いた相手」と前後ナビの規則 |
改訂履歴
| 版 | 更新日 | 変更内容 |
|---|---|---|
| 1.1 | 2026-11-09 | 【実装時に追記(MorningStatusApp#1817)】音楽グループ名付きの期バッジの色の規則と共通部品を追記(§4)。ユニット一覧のグリッドを1つにまとめる規則を追記(§5) |
| 1.0 | 2026-11-07 | 【実装時に追記(MorningStatusApp#1809)】初版作成(MorningStatusApp#1803, morning-status-blume#246) |