typescript-implementation-plan.md を運用ルールに沿って再編
決まったことだけを書く文書にし、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 <noreply@anthropic.com>
This commit is contained in:
@@ -14,7 +14,7 @@ PHY(物理配置) / ELC(電気配線) / IDX(キー識別) / MAP(キーマップ)
|
|||||||
| `PHYレイヤー.md` | PHY層の仕様 |
|
| `PHYレイヤー.md` | PHY層の仕様 |
|
||||||
| `phase1-json-schema.md` | 各層のJSON Schema |
|
| `phase1-json-schema.md` | 各層のJSON Schema |
|
||||||
| `keyboard-making-workflow.md` | 既存の自作キーボード制作フローとの対応 |
|
| `keyboard-making-workflow.md` | 既存の自作キーボード制作フローとの対応 |
|
||||||
| `typescript-implementation-plan.md` | 実装計画・技術スタック |
|
| `implementation-plan.md` | 実装方針の決定事項・検証用サンプル |
|
||||||
|
|
||||||
**既存ドキュメントは下記ルールの策定前に書かれたもので、ルール1〜4は未適用。**
|
**既存ドキュメントは下記ルールの策定前に書かれたもので、ルール1〜4は未適用。**
|
||||||
全体の再編は別タスクとして行う。それまで各ファイルをメイン/journalのどちらに分類するかは未確定なので、
|
全体の再編は別タスクとして行う。それまで各ファイルをメイン/journalのどちらに分類するかは未確定なので、
|
||||||
|
|||||||
@@ -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 の決定後に、ユーザーと分割単位を決める
|
||||||
+23
-65
@@ -1,12 +1,29 @@
|
|||||||
# Beyond KLE: TypeScript実装計画
|
# typescript-implementation-plan.md の再編
|
||||||
|
|
||||||
## PHY Editor の土台
|
## 結論
|
||||||
|
|
||||||
PHY Editor は自作する。既存のレイアウトエディタのコードを土台にしない。
|
- ファイル名を implementation-plan.md に変更。TypeScriptの採否も技術選定のやり直しに含まれるため
|
||||||
PHYの正本は相対座標の木だが、既存エディタ(KLE, kle-ng)の移動・回転・undoはフラットな絶対座標の配列を直接書き換える作りで、改造しても中核は書き直しになるため。
|
- 決まったことだけを書く文書にした。本文に残したのは次の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
|
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 リポジトリ作成**
|
1. **GitHub リポジトリ作成**
|
||||||
@@ -209,16 +180,3 @@ pnpm add -D tsup
|
|||||||
4. **KLE変換機能のプロトタイプ**
|
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 の作者に出自を確認する。確認できない場合は書き出しを自前で書くかをユーザーが決める
|
|
||||||
Reference in New Issue
Block a user