依存方針、特にunified/シェブロテイン

まず、全体的にnpmエコシステムとunifiedエコシステムにはどっぷりと完全に依存する。npm, unifiedと一蓮托生。

npmパッケージング・フォーマットとか配布〈ディストリビューション〉プラットフォームの仕様・機能・作法に従うし、べったり依存の方式を採用する。unifiedはnpmエコシステム上に乗った上位エコシステム。unifiedの文化と習慣があるから、これも従順に従う。

unifiedに関しては、新しいプロセッサファミリー(単に「ファミリー」)を幾つか作る。新しいファミリーと既存ファミリーとの相互運用性はunifiedの仕様・機能・作法・文化・習慣に従えば担保される。

unifiedファミリーを構築するには、そのファミリーの中核パーザーが必要だが、これはシェブロテイン〈chevrotaion〉パーザー構築ツールキットを使う。unifiedエコシステムのいいところは、AST仕様と中核パーザーさえ作れば、後はunifiedフレームワークが面倒を見てくれるところだ。

unifiedに関しては用語が整理されてないから、ここで整理。

  • ドライバー: プラグインをホストするソフトウェアコンポネント
  • プラグイン: パーザー、トランスフォーマー、ストリンギファイア〈コンパイラ | シリアライザー〉のいずれかで、ドライバーに登録可能。
  • プロセッサ: ドライバーとプラグインの総称。
  • パフォーマー: 実際の文書処理/データ処理を行う関数。パージングパフォーマー、トランスフォーミングパフォーマー、ストリンギファイイングパフォーマーがある。
  • アタッチャー: ドライバーにパフォーマーを渡す仲介をする関数、関数ファクトリまたはオブジェクトコンストラクタ。アタッチャーをプラグインと呼んでいる。
  • {アクション}?バーブ: ドライバーまたはパフォーマーオブジェクトのメソッド名。規約で決まっている。parse, compile, stringify, run, process, processSync など。
  • {クロス | インター}ファミリー・トランスフォーマー: unifiedのファミリーをまたいだトランスフォーマー。source-to-target, target-from-source のネーミング。