# Beyond KLE: 実装計画 ## PHY Editor の土台 PHY Editor は自作する。既存のレイアウトエディタのコードを土台にしない。 PHYの正本は相対座標の木だが、既存エディタ(KLE, kle-ng)の移動・回転・undoはフラットな絶対座標の配列を直接書き換える作りで、改造しても中核は書き直しになるため。 - ijprest/keyboard-layout-editor のコードは取り込まない。全権利留保で、作者はフォークを避けたい意向を明記している。ソースを読んで挙動を確かめるのは可 - adamws/kle-ng は MIT ライセンスで、参考実装として読める ## 検証用サンプル ### テストケース 1. **60% ANSI** - 標準的なレイアウト 2. **Split keyboard** - 左右分離型 3. **Ergonomic layout** - カラムスタッガード + 回転 4. **Macro pad** - シンプルな4x4 ### データ例 以下は旧形式(`keys` 配列、`position` / `size.width`)で書かれており、現行のPHYスキーマ(`phase1-json-schema.md`)に合わせた変換が必要。 #### 60% ANSI PHY Layer ```json { "version": "1.0.0", "metadata": { "name": "60% ANSI", "description": "Standard 60% layout" }, "profiles": [ { "id": "standard", "name": "Cherry MX", "unitSize": { "x": 19.05, "y": 19.05 } } ], "keys": [ // Escape key { "id": "k00", "profile": "standard", "position": { "x": 0, "y": 0 }, "size": { "width": 1, "height": 1 }, "metadata": { "label": "Esc" } }, // Space bar { "id": "k60", "profile": "standard", "position": { "x": 5, "y": 4 }, "size": { "width": 6.25, "height": 1 }, "metadata": { "label": "Space" } } ] } ``` ## 検討済み・非採用 - ijprest/keyboard-layout-editor の改造 (journal/2026-09-18-editor-base.md) - adamws/kle-ng の改造 (journal/2026-09-18-editor-base.md) ## 未確認事項 ### P-1 kle-serial2 の serialize がKLE本体のコードに由来しないか - 位置づけ: 未解決の問い。KLE JSONの書き出しに kle-serial2 (MIT) を使うかの判断に関わる - 現状の認識: 本家 kle-serial は書き出しを「KLE本体から移植予定」としていた。kle-serial2 の serialize は KLE の serial.js と構造が似るが、KLEフォーマットがその構造を要求するため由来の証拠にはならない - 格上げ条件: kle-serial2 の作者に出自を確認する。確認できない場合は書き出しを自前で書くかをユーザーが決める ### P-2 技術選定 - 位置づけ: 未解決の問い。言語、UIフレームワーク、描画方式、状態管理、テスト、KLE JSONの読み書きに使うライブラリ - 現状の認識: 旧計画はReact系の構成を挙げていたが、選定の根拠はない。Vueの案もNuxtに慣れているというだけ - 格上げ条件: 過去の自作エディタ(Documents/Dev/kbd-editor)を振り返ったうえで、ユーザーが選ぶ ### P-3 リポジトリ構成 - 位置づけ: 未解決の問い。モノレポにするか、パッケージをどう分割するか - 格上げ条件: P-2 の決定後に、ユーザーと分割単位を決める