コンテンツにスキップ
Documents for MorningStatusApp
Esc
移動開く⌘Jプレビュー
このページの内容

ユニット一覧機能 データ設計書

最終更新: 2026-04-10(#618)

1. 概要

units.json にユニットデータを管理するためのデータ設計。 ユニット一覧・詳細ページ(#535・#536)、メンバー詳細への所属ユニットセクション追加(#537)、 リリース詳細へのユニット情報追加(#538)の前提基盤となる。


2. 背景・目的

目的 詳細
ユニットデータの管理 ユニット名・所属メンバー・活動期間を一元管理する
メンバーとの紐付け memberIds により members.json の既存データと連携する
リリースとの紐付け releaseIds により releases.json の既存データと連携する(任意)

3. 型定義

Unit インターフェース(types/unit.ts

export interface Unit {
  /** ユニットの識別子(kebab-case。例: morning-musume-25) */
  id: string;
  /** ユニット名 */
  name: string;
  /** 所属メンバーの ID 一覧(members.json の id フィールドと一致) */
  memberIds: string[];
  /** 関連リリースの ID 一覧(releases.json の id フィールド。省略可) */
  releaseIds?: string[];
  /** 活動開始年(YYYY 形式) */
  activeFrom: string;
  /** 活動終了年(YYYY 形式。現役の場合は省略) */
  activeTo?: string;
  /** 上位ユニットの ID(kebab-case。各期ユニットに設定する。上位ユニット・単独ユニットは省略) */
  parentId?: string;
}

4. データファイル

units.json(Vercel Blob)

  • Vercel Blob(UNITS_BLOB_URL)で管理。ローカルにフリーズドコピーは持たない
  • idnamememberIdsmbid 等は手動入力で維持する(releaseIds のみ sync-discography が自動集約して書き戻す)
  • 初期データ: 15件収録(タンポポ・プッチモニ・ミニモニ。・さくら組・おとめ組・エコモニ。・W・誕生10年記念隊・ドリームモーニング娘。)

ユニット種別と運用ルール

種別 説明 parentId memberIds releaseIds
上位ユニット 複数期をまとめる親。一覧・詳細ページに表示される なし(省略) [](空配列) 省略可。全期横断のリリースがある場合のみ設定する
各期ユニット 上位ユニットの配下。一覧には表示されない 上位ユニットの id 実際の所属メンバー ID 当該期のリリース ID
単独ユニット 期別区分のないユニット なし(省略) 実際の所属メンバー ID 実際のリリース ID

サンプルデータ

[
  {
    "id": "tanpopo",
    "name": "タンポポ",
    "memberIds": [],
    "activeFrom": "1998",
    "activeTo": "2004"
  },
  {
    "id": "tanpopo-1",
    "name": "タンポポ(第1期)",
    "memberIds": ["member-id-1", "member-id-2"],
    "releaseIds": ["release-id-1"],
    "activeFrom": "1998",
    "activeTo": "2001",
    "parentId": "tanpopo"
  }
]

5. フィールド詳細

フィールド 必須 説明
id string ユニットの識別子(kebab-case)
name string ユニット名
memberIds string[] 所属メンバーの ID 一覧(members.jsonid と一致)
releaseIds string[] 関連リリースの ID 一覧(releases.jsonid と一致)
activeFrom string 活動開始年(YYYY 形式)
activeTo string 活動終了年(YYYY 形式)。現役ユニットは省略
parentId string 上位ユニットの ID(units.jsonid と一致)。各期ユニットのみ設定する

6. トラックとの紐づけ(#562)

Track 型に以下のフィールドが追加され、sync-discography 実行時に自動設定される。

フィールド(Track) 説明
artist string(省略可) MusicBrainz artist-credit から取得したアーティスト名
unitId string(省略可) units.jsonid と一致するユニット ID。artist がユニット名と一致した場合に付与

照合ロジック

  1. artist とユニット名の完全一致を試みる
  2. 完全一致なしの場合、括弧前のベース名(例: “タンポポ(第1期)” → “タンポポ”)でグループ化し、リリース年が activeFromactiveTo に含まれる期を選択
  3. 境界年で複数期が重なる場合は activeFrom が最大の期(最新期)を採用
  4. 既存の unitId は上書きしない(手動設定を保護)

改訂履歴

更新日 変更内容
1.4 2026-04-10 §4 サンプルデータのタンポポ ID を tanpopo / tanpopo-1 形式に修正(#618)
1.3 2026-04-05 §6 トラックとの紐づけ追加(#562)
1.2 2026-04-03 運用ルール表に releaseIds 列を追加(#559)
1.1 2026-04-03 parentId フィールド追加・上位ユニット運用ルール追加(#555)
1.0 2026-03-30 初版作成(#532)

このページは役に立ちましたか?