コンテンツにスキップ

Design

Context

公開リポジトリのテストデータ・サンプルデータに実際の個人情報(実名4名、勉強会名4件)が含まれている。public/data/index.json が中心的なデータソースで、セッションファイル(public/data/sessions/*.json)やテストファイル、E2Eテスト、ドキュメントがこのデータを参照している。

データ構造は groups(勉強会)と members(メンバー)で構成され、それぞれIDで紐づいたセッションデータを持つ。データの構造やスキーマは変更せず、値のみを置き換える。

Goals / Non-Goals

Goals:

  • すべての実名・実際の勉強会名をダミーデータに置き換える
  • ダミーデータは自然で実際に存在しそうな名称を使用する(Issue要件)
  • データ間の整合性を維持する(index.json、sessions、テスト、E2E、ドキュメント間)
  • 既存のテストがすべてパスする状態を維持する

Non-Goals:

  • データ構造やスキーマの変更
  • ダミーデータ生成の自動化ツールの作成
  • メンバーIDやグループIDの変更(これらは個人を特定できない)
  • セッションの日付や時間データの変更

Decisions

1. ダミーデータのマッピング方式

決定: 一対一の静的マッピングテーブルを定義し、全ファイルで一貫して置換する。

理由: マッピングテーブルにより全ファイル間の整合性を保証でき、漏れなく置換できる。ランダム生成ではなく事前定義することで「実際に存在しそうな名称」という要件を満たせる。

マッピング案:

元の名前 ダミー名
中村 充志 / Nakamura Atsushi A Suzuki Taro A (鈴木 太郎)
山浦 哲朗 / Yamaura Tetsuro Tanaka Koji (田中 浩二)
崔 文 / Sai Bun A Yamamoto Yuki A (山本 裕貴)
谷戸 大輔 / Yato Daisuke Watanabe Kenji (渡辺 健二)
元の勉強会名 ダミー名
もくもく勉強会 フロントエンド勉強会
React読書会 TypeScript読書会
アーキテクチャ設計塾 ソフトウェア設計勉強会
クラウド技術研究会 インフラ技術研究会

代替案: Fakerライブラリで自動生成 →「実際に存在しそうな名称」の制御が難しく、再実行のたびに変わるため不採用。

2. テストデータの置換方針

決定: テストファイル内の「テスト太郎」「テスト花子」等の明示的なテスト用ダミー名はそのまま残すか、より自然な名前に統一する。

理由: テストファイルでは「テスト太郎」等はすでにダミーデータとして意図的に使われているが、Issue要件「実際に存在しそうな名称」に沿って、より自然な名前に統一する。

テストデータのマッピング:

元の名前 ダミー名
テスト太郎 佐藤 一郎
テスト花子 高橋 美咲
taro@example.com ichiro.sato@example.com
hanako@example.com misaki.takahashi@example.com

3. 置換の実行順序

決定: 以下の順序で置換する:

  1. public/data/index.json(マスターデータ)
  2. public/data/sessions/*.json(セッションデータ ─ 構造に変更がないため内容確認のみ)
  3. tests/ 配下のテストファイル
  4. e2e/dashboard.spec.js
  5. docs/architecture.md

理由: マスターデータを先に確定し、それに合わせて参照側を更新することで整合性を保つ。

Risks / Trade-offs

  • [漏れのリスク] 全ファイルを網羅的に検索しないと置換漏れが発生する → 置換後にgrep等で元の文字列が残っていないか検証する
  • [E2Eテストの失敗リスク] E2Eテストが公開データを直接参照しているため、データとテストの不整合が起きうる → マッピングテーブルに基づき正確に置換し、テスト実行で検証する
  • [Gitヒストリーに残る] 過去のコミットには元のデータが残る → リポジトリの再構築(filter-branch等)はスコープ外とし、今後のコミットからクリーンにする