From ec36a5139a5ddac91473ce8bd70a92145a9f2015 Mon Sep 17 00:00:00 2001 From: EwdErna Date: Fri, 18 Sep 2026 22:24:02 +0900 Subject: [PATCH] =?UTF-8?q?typescript-implementation-plan.md=20=E3=82=92?= =?UTF-8?q?=E9=81=8B=E7=94=A8=E3=83=AB=E3=83=BC=E3=83=AB=E3=81=AB=E6=B2=BF?= =?UTF-8?q?=E3=81=A3=E3=81=A6=E5=86=8D=E7=B7=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 決まったことだけを書く文書にし、implementation-plan.md に改名した。 TypeScriptの採否も技術選定のやり直しに含まれるため。 本文には自作の決定と検証用サンプルを残した。データ例は旧形式なので 変換が必要と明記した(変換は後日)。技術スタック・構成・フェーズ・ 優先度・セットアップ手順はjournalに原文のまま移し、未確認事項に P-2 技術選定、P-3 リポジトリ構成を立てた。CLAUDE.md の地図も更新。 Journal: journal/2026-09-18-typescript-implementation-plan.md Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 2 +- implementation-plan.md | 81 +++++++++++++++++ ...26-09-18-typescript-implementation-plan.md | 88 +++++-------------- 3 files changed, 105 insertions(+), 66 deletions(-) create mode 100644 implementation-plan.md rename typescript-implementation-plan.md => journal/2026-09-18-typescript-implementation-plan.md (60%) diff --git a/CLAUDE.md b/CLAUDE.md index f062e14..a76476f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -14,7 +14,7 @@ PHY(物理配置) / ELC(電気配線) / IDX(キー識別) / MAP(キーマップ) | `PHYレイヤー.md` | PHY層の仕様 | | `phase1-json-schema.md` | 各層のJSON Schema | | `keyboard-making-workflow.md` | 既存の自作キーボード制作フローとの対応 | -| `typescript-implementation-plan.md` | 実装計画・技術スタック | +| `implementation-plan.md` | 実装方針の決定事項・検証用サンプル | **既存ドキュメントは下記ルールの策定前に書かれたもので、ルール1〜4は未適用。** 全体の再編は別タスクとして行う。それまで各ファイルをメイン/journalのどちらに分類するかは未確定なので、 diff --git a/implementation-plan.md b/implementation-plan.md new file mode 100644 index 0000000..e19d081 --- /dev/null +++ b/implementation-plan.md @@ -0,0 +1,81 @@ +# 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 の決定後に、ユーザーと分割単位を決める diff --git a/typescript-implementation-plan.md b/journal/2026-09-18-typescript-implementation-plan.md similarity index 60% rename from typescript-implementation-plan.md rename to journal/2026-09-18-typescript-implementation-plan.md index f776dc3..629cb3b 100644 --- a/typescript-implementation-plan.md +++ b/journal/2026-09-18-typescript-implementation-plan.md @@ -1,12 +1,29 @@ -# Beyond KLE: TypeScript実装計画 +# typescript-implementation-plan.md の再編 -## PHY Editor の土台 +## 結論 -PHY Editor は自作する。既存のレイアウトエディタのコードを土台にしない。 -PHYの正本は相対座標の木だが、既存エディタ(KLE, kle-ng)の移動・回転・undoはフラットな絶対座標の配列を直接書き換える作りで、改造しても中核は書き直しになるため。 +- ファイル名を implementation-plan.md に変更。TypeScriptの採否も技術選定のやり直しに含まれるため +- 決まったことだけを書く文書にした。本文に残したのは次の2つ + - PHY Editor の土台(300fb18 で追記した自作の決定) + - 検証用サンプル(テストケース4種とデータ例)。データ例は旧形式のため変換が必要と明記した。変換はユーザーが後でやる +- 技術スタック・プロジェクト構造・開発フェーズ・実装優先度・セットアップ手順・次のアクションは、以下に原文のまま移した +- 未確認事項に P-2 技術選定、P-3 リポジトリ構成を立てた +- 原本: `git show 9ebe302:typescript-implementation-plan.md` -- ijprest/keyboard-layout-editor のコードは取り込まない。全権利留保で、作者はフォークを避けたい意向を明記している。ソースを読んで挙動を確かめるのは可 -- adamws/kle-ng は MIT ライセンスで、参考実装として読める +## 各記述の行き先 + +| 元の記述 | 行き先 | 理由 | +|---|---|---| +| PHY Editor の土台 | 本文 | 決定済み | +| テストケース4種、データ例 | 本文「検証用サンプル」 | ユーザー判断で残す。データ例は要変換 | +| 技術スタック | ここ + P-2 | 選定をやり直す(Vue案もNuxtに慣れているだけ、ユーザー談) | +| プロジェクト構造 | ここ + P-3 | 技術選定に依存 | +| 開発フェーズ 1a/1b | ここ | 未決。keyboard-design-layers.md の Phase 1〜3 と重複 | +| 実装優先度 | ここ | 優先度評価。期間の根拠なし | +| 開発環境セットアップ | ここ | 技術スタックに依存 | +| 次のアクション、「実装を開始しますか?」 | ここ | AIとの会話の残骸 | + +## 移した原文 ## プロジェクト構造 @@ -155,52 +172,6 @@ pnpm add -D @vitest/ui pnpm add -D tsup ``` -## サンプルプロジェクト設計 - -### テストケース - -1. **60% ANSI** - 標準的なレイアウト -2. **Split keyboard** - 左右分離型 -3. **Ergonomic layout** - カラムスタッガード + 回転 -4. **Macro pad** - シンプルな4x4 - -### データ例 - -#### 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" } - } - ] -} -``` - ## 次のアクション 1. **GitHub リポジトリ作成** @@ -209,16 +180,3 @@ pnpm add -D tsup 4. **KLE変換機能のプロトタイプ** 実装を開始しますか?最初にどの部分から取り組みたいでしょうか? - -## 検討済み・非採用 - -- 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 の作者に出自を確認する。確認できない場合は書き出しを自前で書くかをユーザーが決める