← スキル一覧に戻る

master-data-helper
by s4k10503
Unityによるアバターシステムクライアント
⭐ 0🍴 0📅 2026年1月24日
SKILL.md
name: master-data-helper description: Manages MasterMemory master data. MUST use proactively when adding or modifying master tables, creating Domain models for static data, or syncing JSON files. Also triggers on "マスターデータ", "MasterMemory". allowed-tools: Read, Grep, Glob, Edit, Write
Master Data Helper
References
- Domain層仕様: docs/Spec/domain-layer.md
- MasterMemory公式: https://github.com/Cysharp/MasterMemory
File Locations
| 種類 | パス |
|---|---|
| マスターCSV | MasterData/CSV/(プロジェクトルート、編集用) |
| バイナリ | Assets/StreamingAssets/MasterData/master_data.bytes |
| テーブル定義 | Assets/Scripts/MasterData/Tables/ |
| リポジトリ実装 | Features/Contexts/*/Infrastructure/Repositories/MasterData/(Context別) |
| 共有リポジトリ | Shared/Infrastructure/Repositories/MasterData/ |
新規テーブル追加フロー
Step 1: CSVファイル作成
MasterData/CSV/sample_master.csv
id,category,name,description
1,weapon,Sword,A basic sword
2,weapon,Shield,A wooden shield
3,armor,Helmet,Iron helmet
ヘッダー命名規則: snake_case(C#プロパティはPascalCaseに自動変換)
Step 2: テーブルクラス定義
// Assets/Scripts/MasterData/Tables/SampleMaster.cs
[MemoryTable("sample_master")]
public sealed record SampleMaster
{
[PrimaryKey]
public int Id { get; init; }
[SecondaryKey(0)]
public string Category { get; init; }
public string Name { get; init; }
public string Description { get; init; }
}
Step 3: バイナリ生成
Unity Editorメニュー:
Tools → MasterData → Generate Binary from CSV
生成先: Assets/StreamingAssets/MasterData/master_data.bytes
Step 4: リポジトリ実装(必要な場合)
// Features/[Feature]/Infrastructure/Repositories/MasterData/SampleMasterRepository.cs
public sealed class SampleMasterRepository : ISampleMasterRepository
{
private readonly MemoryDatabase _database;
public SampleMasterRepository(MemoryDatabase database)
{
_database = database;
}
public SampleMaster FindById(int id)
=> _database.SampleMasterTable.FindById(id);
public IEnumerable<SampleMaster> FindByCategory(string category)
=> _database.SampleMasterTable.FindByCategory(category);
}
Model Template
[MemoryTable("table-name")]
public sealed record TableName
{
[PrimaryKey]
public int Id { get; init; }
[SecondaryKey(0)] // インデックス番号で複数キー対応
public string Category { get; init; }
public string Name { get; init; }
// 複合キーの例
[SecondaryKey(1, keyOrder: 0)]
public int GroupId { get; init; }
[SecondaryKey(1, keyOrder: 1)]
public int SubId { get; init; }
}
Troubleshooting
よくあるエラーと対処
| エラー | 原因 | 対処 |
|---|---|---|
KeyNotFoundException | CSVに存在しないIDで検索 | CSVデータを確認、TryFindメソッド使用 |
DuplicateKeyException | 主キーが重複 | CSVの重複行を削除 |
SerializationException | 型不一致 | CSVの値とC#型を確認(int/string等) |
| バイナリ反映されない | 古いキャッシュ | Unity再起動、バイナリ再生成 |
デバッグ用コマンド
# CSVファイル一覧確認
ls MasterData/CSV/
# バイナリ更新日時確認
ls -la Assets/StreamingAssets/MasterData/
Checklist
- CSVファイル作成(ヘッダーはsnake_case)
- テーブルクラス作成(
[MemoryTable],[PrimaryKey]) - バイナリ生成(
Tools → MasterData → Generate Binary from CSV) - 主キーが一意であることを確認
- SecondaryKeyのインデックス番号が正しい
- リポジトリ実装(検索メソッドが必要な場合)
- DIコンテナへの登録
スコア
総合スコア
55/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
✓最近の活動
1ヶ月以内に更新
+10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
✓タグ
1つ以上のタグが設定されている
+5
レビュー
💬
レビュー機能は近日公開予定です
