Files
Beyond-KLE/journal/2026-09-21-profile-container.md
T
ewdernaandClaude Opus 5 69d9c73fff phy: プロファイルをファイル単位の器に置き、キーはIDで参照する
保存形式に 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
2026-09-21 18:58:38 +09:00

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 のみなので矛盾しない。別タスク。