保存形式に PhyFile を書き、profiles を木の外に出した。同じ定義を複数のキーに 複製しないため、Key.profile は実体ではなくIDの参照にする。 ビジュアル表現は上面矩形の4辺インセット + R とし、非対称な上面を表せる形にした。 プロファイル内の距離はすべてmmに統一。 Journal: journal/2026-09-21-profile-container.md Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01246a5KFLmwcRXriZvX8fdJ
2.7 KiB
2.7 KiB
プロファイル定義の置き場
結論
- ファイル単位の器
PhyFileを保存形式に書き、profiles: Profile[]をそこに置く Key.profileは Profile 実体ではなく ID 参照にする- ビジュアル表現は上面矩形の4辺インセット + R
- プロファイル内の距離はすべて mm
phase1-json-schema.md には最初からファイル単位の器(version/metadata/profiles/root)と profile 定義があり、
PHYレイヤー.md の保存形式だけが const root: Node[] = [] のまま取り残されていた。今回は実質その追認。
ただし visualOffset の形だけはスキーマ側も書き換えた。
案の比較
ビジュアル表現の形
| 案 | 内容 | 採否 |
|---|---|---|
| 4辺インセット + R | top/right/bottom/left/radius | 採用。非対称な上面を表せる |
| 位置 + サイズ差 | x, y, dw, dh, radius | 不採用。表現力は同じだが、非対称のとき値の読み取りが直感的でない |
| スキーマ現状のまま | x, y, radius | 不採用。本文が言う「オフセット距離」に当たる項目がなく、上面のサイズが決まらない |
kbd-editor の stores/displayConfig.ts が top{l,r,t,b} + cornerRadius で、4辺独立と同じ形だった (過去の kbd-editor 調査による。概念の参考は可としている)。
単位
| 案 | 採否 |
|---|---|
| すべて mm | 採用 |
| unitSize は mm、オフセットと R は U | 不採用 |
| 値ごとに mm/U を指定 | 不採用 |
元の本文は「オフセット距離(mm or U単位)・R(U単位)」と単位が混在していた。 プロファイルは実寸を規定する定義なので、中で U 換算を持つと unitSize への依存が入る。
参照方法
| 案 | 採否 |
|---|---|
| ID 参照 | 採用。スキーマが既にこの形。定義の複製が起きない |
| Key が Profile 実体を持つ | 不採用 |
座標モデルを決めたときに「今回の決定の範囲外」として実体のまま残されていた項目。 今回で決着。
今回触っていないもの
ファイル単位のデータとして他に候補が出ていたが、置き場の決定は保留:
- KLE の switchMount / switchBrand / switchType、backcolor / radii / background / css → P-6 待ち
- KLE 出力時の rx, ry の選び方、行のまとまり → P-1。ファイルではなく出力設定の単位
implementation-plan.md の 60% ANSI サンプルは keys/position/size.width という古い平坦な形のままで、 今回の保存形式と合っていない。プロファイル部分だけは unitSize のみなので矛盾しない。別タスク。