KLE互換ドキュメント2本を廃止し、裏取りした事実をPHYに書き戻す

kle-compatibility.md / kle-compatibility-analysis.md は埋め込み前提の
設計で、KLE往復の決定と矛盾していた。KLE本家ソースで確認できた事実だけを
PHYレイヤー.md に書き戻し、2本は削除した。

- ConfigObject の回転角度キーを ra から r に修正し、fa sm sb st を追加
- KLE出力で失われる情報、KLEの p がPHYのプロファイルと別物であることを明記
- KLEは保存時にキーを並べ替えるため、配列順は照合に使わない
- 過去のKLE JSONはPHYデータなしでも読めなければならない、という制約を追加
- 未確認事項に P-3 クラスター自動推定、P-4 KLE固有の形状・属性の受け止め先を追加

Journal: journal/2026-09-18-kle-compat-docs-retire.md

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-18 21:18:49 +09:00
co-authored by Claude Opus 5
parent 1a9a2a06c5
commit bb1108763a
5 changed files with 78 additions and 708 deletions
+32 -4
View File
@@ -98,6 +98,7 @@ KLEで編集された時点で、そのデータはBeyond KLEのデータでは
- KLE JSONにはBeyond KLE固有の情報(キーID、クラスター構造など)を含めない。出力は素のKLE JSONで、KLE JSONを読む他ツールにそのまま渡せる
- KLE JSONの取り込みは、手元のPHYデータとの照合で行う。IDや埋め込み情報には頼らない
- 過去のKLE JSONは、PHYデータがなくても読み込めなければならない。変換を伴ってよい
### KLE JSON出力
@@ -113,9 +114,9 @@ type ConfigObject = {
y2?: number,
w2?: number,
h2?: number,
rx?: number,
r?: number, // 回転角度
rx?: number, // 回転中心
ry?: number,
ra?: number,
l?: boolean,
n?: boolean,
d?: boolean,
@@ -125,14 +126,22 @@ type ConfigObject = {
a?: number,
f?: number,
f2?: number,
fa?: number[],
p?: string,
s?: string
sm?: string,
sb?: string,
st?: string
}
type KeyLabel = string // 表示用ラベルのみ。識別情報は含めない
const kleData = (ConfigObject | KeyLabel)[][]
```
- 回転角度は正規化せずそのまま出力する。KLEのデータは任意の角度を受け付け、15度刻みはKLEのUI上の操作単位にすぎない
- rx, ry はPHYに持たないので、出力時に選ぶ
- ユニットサイズ(mm)、ビジュアルオフセット、クラスター構造はKLE JSONに出力されない
- KLEの `p` はキーキャップのプロファイル名(SA、DCSなど)であり、PHYのプロファイルとは対応させない
### KLE JSONの取り込み
既存のPHYデータを畳んだ配置に対して、KLE JSONの各キーを形状(位置・サイズ・回転)とラベルで照合する。
@@ -140,6 +149,9 @@ const kleData = (ConfigObject | KeyLabel)[][]
- 照合できたキーは元のノードとして扱う。KLE側で配置が変わっていれば、元の親から見た相対座標に戻して反映する
- 照合できないキーは root 直下に新規キーとして置く。クラスターへの割り当てはユーザーが行う
- 構造の復元は保証しない。KLE側での編集が大きいほど、クラスター構造は失われる
- 配列の順番は照合に使わない。KLEは保存時にキーを「角度 → rx → ry → y → x」の順に並べ替えるため、順番は形状から決まる以上の情報を持たない
KLEの rx, ry, r はキーの絶対配置 (x, y, rotation) に変換して取り込む。元の rx, ry は保持しない。
## 検討済み・非採用
@@ -154,10 +166,26 @@ const kleData = (ConfigObject | KeyLabel)[][]
- 位置づけ: 本文が前提にしているものではない。連携用出力形式の設計に関わる未解決の問い
- 現状の認識: 階層を畳んでKLEに読み込ませると行のまとまりが崩れる。他レイヤーの情報を使ってでも行ごとにまとめたいが、方法は未検討
- 手がかり: KLEは r, rx, ry が同じで y が等しいキーを1行にまとめる。同じ絶対角度を持つキーに共通の rx, ry(例えばクラスターの原点)を選べば、行にまとめられる見込み
- 格上げ条件: 回転を含むPHYデータをKLE JSONに変換してKLE本家に読み込ませ、rotation groupと行配列がどう再構成されるかを確認する
### P-2 KLE JSON取り込み時の照合基準
- 位置づけ: 本文「KLE JSONの取り込み」の具体化に必要な未解決の問い
- 現状の認識: 形状の許容誤差、ラベルの扱い、複数候補がある場合の決め方が未定。KLEが保存時にキーの並び順を変えるかは未確認で、配列順を照合に使えるかも分からない
- 現状の認識: 形状の許容誤差、ラベルの扱い、複数候補がある場合の決め方が未定
- 格上げ条件: 照合規則を決めたうえで、KLE本家でキーの移動・追加・削除をしたJSONを取り込み、意図どおりに対応づくことを確認する
### P-3 KLE JSON取り込み時のクラスター自動推定
- 位置づけ: 未解決の問い。PHYデータなしで過去のKLE JSONを取り込むとき、座標の近さや角度からクラスターを推定するか
- 現状の認識: 採用しない可能性が高い。ただし代わりに欲しい機能があり、それを思い出すきっかけとして残している
- 格上げ条件: 代わりの機能を定義し、この推定を採るか捨てるかをユーザーが決める
### P-4 KLE固有の形状と属性の受け止め先
- 位置づけ: 本文「過去のKLE JSONは読み込めなければならない」を満たすために必要な未解決の問い
- 現状の認識: 現在の Key 型(transform, size, profile)では次を受け止められない
- 長方形でないキー(x2, y2, w2, h2。ISO Enterなど)。受け止められないとISO配列が読めない。ローカルの値なので Size の拡張で相対座標モデルに収まる見込み
- デカールとゴースト(d, g)。PHYで持つか、取り込み時に捨てるか
- 見た目の属性(ラベル、c, t, p, f系, l, n)。落としてよいか、別の層で保持するか。ラベルは照合にも使う
- 格上げ条件: 各項目について、PHYで持つ・他の層で持つ・捨てるのいずれかをユーザーが決め、Key 型に反映する