terminal-quest 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -26,14 +26,24 @@ npm install -g terminal-quest
|
|
|
26
26
|
terminal-quest
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
+
### 動作環境
|
|
30
|
+
|
|
31
|
+
- **macOS** / **Linux** / **Windows(WSL)**
|
|
32
|
+
- Node.js v18 以上
|
|
33
|
+
- 外部依存なし(Docker不要、GUI不要、ネットワーク不要)
|
|
34
|
+
|
|
35
|
+
純粋なnpmパッケージとして動作する**TUIアプリ**です。Ink(React for CLI)で構築されており、ターミナルさえあればどこでも動きます。
|
|
36
|
+
|
|
29
37
|
## 特徴
|
|
30
38
|
|
|
31
|
-
-
|
|
39
|
+
- **安全な仮想環境** - すべてのコマンドはインメモリの仮想ファイルシステム上で動作。実際のファイルには一切触れません
|
|
32
40
|
- **ストーリー駆動** - 物語を進めながら自然にコマンドを習得
|
|
33
|
-
- **3つのコース** -
|
|
41
|
+
- **3つのコース** - 小学生向け・はじめて・エンジニアの3コースで、レベルに合わせた学習体験
|
|
42
|
+
- **結果ベースの判定** - コマンドの文字列ではなく実行結果で目標達成を判定。`grep foo file` でも `cat file | grep foo` でも正解になります
|
|
43
|
+
- **到達目標** - 各ミッションに「何ができるようになるか」を明示
|
|
44
|
+
- **段階的ヒント** - 困ったら3段階(方向性→コマンド候補→ほぼ答え)のヒントで学習をサポート
|
|
45
|
+
- **間違いフィードバック** - タイプミスには類似コマンドを提案、間違ったコマンドにはミッション固有のガイダンスを表示
|
|
34
46
|
- **ふりかえり問題** - ミッション完了後に4択クイズで理解度チェック
|
|
35
|
-
- **コマンド提案** - タイプミスしても近いコマンドを提案してくれる
|
|
36
|
-
- **段階的ヒント** - 困ったら3段階のヒントで学習をサポート
|
|
37
47
|
- **Tab補完** - コマンド名やファイルパスをTabキーで補完
|
|
38
48
|
- **達成バッジ** - 学習の進捗に応じてバッジを獲得
|
|
39
49
|
|
|
@@ -90,6 +100,27 @@ objectives 現在の目標を確認
|
|
|
90
100
|
man <cmd> コマンドのマニュアル
|
|
91
101
|
```
|
|
92
102
|
|
|
103
|
+
## アーキテクチャ
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
src/
|
|
107
|
+
├── engine/ コアエンジン(UI非依存)
|
|
108
|
+
│ ├── VirtualFS インメモリ仮想ファイルシステム
|
|
109
|
+
│ ├── CommandHandler 23コマンド実装(パイプ・リダイレクト対応)
|
|
110
|
+
│ ├── MissionEngine 結果ベースの目標判定
|
|
111
|
+
│ ├── HintEngine 3段階ヒント管理
|
|
112
|
+
│ ├── CommandFeedback タイプミス検出・ミッション固有フィードバック
|
|
113
|
+
│ └── TabCompletion コマンド名・パス補完
|
|
114
|
+
├── data/stories/ ストーリーデータ(コース別、全9ストーリー)
|
|
115
|
+
├── screens/ 7画面コンポーネント(Ink/React)
|
|
116
|
+
├── components/ 再利用UIコンポーネント
|
|
117
|
+
└── state/ ゲーム状態管理(~/.terminal-quest/progress.json に永続化)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
- **仮想FS上で完結** — 実際のファイルシステムやシェルは一切使用しません
|
|
121
|
+
- **結果ベースの判定** — ObjectiveCheck がコマンドの出力・FS状態を検査し、解法の自由度を確保
|
|
122
|
+
- **コース別UX** — kids コースはひらがな中心のガイダンスとエラーメッセージ、engineer コースは実務寄りの表現
|
|
123
|
+
|
|
93
124
|
## 開発
|
|
94
125
|
|
|
95
126
|
```bash
|
|
@@ -97,10 +128,16 @@ git clone https://github.com/nasuda/terminal-quest.git
|
|
|
97
128
|
cd terminal-quest
|
|
98
129
|
npm install
|
|
99
130
|
npm run dev # 開発実行
|
|
100
|
-
npm test #
|
|
131
|
+
npm test # テスト実行(183件)
|
|
101
132
|
npm run build # ビルド
|
|
102
133
|
```
|
|
103
134
|
|
|
135
|
+
### 技術スタック
|
|
136
|
+
|
|
137
|
+
- TypeScript (ESM) + [Ink 5](https://github.com/vadimdemedes/ink) (React for CLI)
|
|
138
|
+
- Vitest(テスト)
|
|
139
|
+
- npm配布(`bin/terminal-quest.js` → `dist/index.js` 直接import、tsx不要)
|
|
140
|
+
|
|
104
141
|
## ライセンス
|
|
105
142
|
|
|
106
143
|
MIT
|