通常の開発環境との違い
Trace Kernelは、VS CodeやNode.jsプロジェクトの代替ではありません。
通常の開発環境は、アプリケーションやライブラリを作るために設計されています。ソースコード、依存関係、ビルド設定、実行コマンド、テスト、成果物をプロジェクトとして管理します。
Trace Kernelは、そうしたプロジェクトを作る前の、もっと小さな作業を扱います。ログを読む、CSVを整形する、ファイル群を調査する、Excelから必要な値を取り出す、HTMLを取得して必要な情報だけを確認する。そうした処理を、TypeScriptで記述し、アプリ内で実行し、結果を画面上で確認します。
開発ではなく、作業の記述
Section titled “開発ではなく、作業の記述”Trace Kernelで書くプログラムは、長期運用するアプリケーションのソースコードではなく、特定の作業を実行するための手順です。
そのため、中心になる単位もプロジェクトではなくワークスペースです。ワークスペースには、作業に必要な値、入力、対象ファイル、実行するプログラムをアプリ上でまとめて保持します。
workspace├── context│ ├── env│ ├── resource│ └── dataset└── workこの構造により、プログラム実行のためにソースファイルや設定ファイルを作らず、コードと入力条件を同じアプリ上で管理できます。
画像メモ: VS Codeのプロジェクト構成とTrace Kernelのワークスペース構成を左右比較する静止画または簡単な図があるとよい。左はpackage.jsonやsrc、右はenv/resource/dataset/workのような対応で見せる。
入力をコードから切り離す
Section titled “入力をコードから切り離す”通常のNode.jsスクリプトでは、ファイルを読み込む処理、CSVをパースする処理、対象ディレクトリを指定する処理をコード側に書くことが多くなります。
Trace Kernelでは、それらをcontextとしてGUIで登録します。登録したログやCSVなどのリソースは、プログラム上で$resourceとして参照でき、エディタの補完候補にも反映されます。
for (const row of $resource.userList) { $println(row.name);}
for (const file of $dataset.workspace) { const text = await file.content(); $println(`${file.relativePath}: ${text.length}`);}プログラムは「何をしたいか」に集中し、入力の準備や読み込み方はワークスペース側に寄せられます。
出力先はターミナルだけではない
Section titled “出力先はターミナルだけではない”Trace Kernelでは、実行結果をターミナルに流すのではなく、アプリ内の出力領域で確認します。
出力方式には、単純なテキスト出力、複数ストリームを切り替えるチャンネル出力、表形式のテーブル出力、進捗やモニター表示があります。
作業の途中経過や確認結果を、処理の目的に合った形で表示できます。
画像メモ: 同じ処理の結果が、Plain出力、Channel出力、Table出力、Progress表示に分かれて見えるGIFがあるとよい。API説明ではなく「出力の見え方がターミナル固定ではない」ことを伝える。
結果は画面で確認してコピーする
Section titled “結果は画面で確認してコピーする”Trace Kernelでは、解析や集計の結果をアプリ内の出力領域で確認します。
テキスト出力、チャンネル出力、テーブル出力、進捗やモニター表示を使い分けることで、ターミナルログを探すのではなく、作業に合った形で結果を見られます。
標準機能だけでも、ログやCSVを解析し、必要な結果をコピーして別のドキュメントや表計算ソフトに貼り付ける使い方ができます。
画像メモ: 出力パネルやテーブルに表示された結果をコピーし、別の場所へ貼り付ける流れを見せるGIFがあるとよい。標準機能で成果物化できることを伝える。
Trace Kernelが前提にしないもの
Section titled “Trace Kernelが前提にしないもの”Trace Kernelでは、次のものを前提にしません。
- npmプロジェクトの作成
- ソースファイルや設定ファイルの作成
- 依存関係のインストール
- ビルド設定
- ターミナルでの実行コマンド
- 入力ファイルを読み込むための定型コード
- 実行結果をログから探す作業
これらを完全に不要にするというより、Trace Kernelが扱う用途では表に出さない、という考え方です。
| 用途 | 向いている環境 |
|---|---|
| Webアプリを開発する | VS Code、Node.jsプロジェクト |
| ライブラリを作って公開する | VS Code、Node.jsプロジェクト |
| サーバーを長期運用する | 通常のアプリケーション開発環境 |
| ファイル群を調査、抽出、変換する | Trace Kernel |
| GUIで入力条件を管理しながらTypeScriptで処理する | Trace Kernel |
| ログやCSVを解析し、結果をコピーして使う | Trace Kernel |