このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

メタプログラミング:用語とネーミング

レイファイドデータ(reified data)といえども、単なるXJSONデータだから、これを加工するのは普通の処理となんら変わらない。

が、難しい。

ほんとの普通のデータは、そのまま(文字通りに)解釈すればいい。文字列は文字列だし、配列は配列だ。が、レイファイドデータは、メタオブジェクトとしての解釈を持っていて、その解釈にしたがって加工していく。この解釈をシッカリと把握し続けるのが難しいのだ。

用語とネーミングの整備は多少助けになるはず。まだ、試行錯誤で暫定的だが:

  1. レイファイドデータを入力とするプログラムをメタプログラムと呼ぶ。
  2. メタプログラム内で、テンプレートシステムを使うとき、そのテンプレートをメタコードと呼ぶ。メタスクリプトメタページが主たるメタコード。
  3. メタコードに渡すコンテキストをメタコンテキストと呼び、略称は、mctx とする。
  4. レイファイドデータからメタコンテキストに変換するコマンドは、conv-to-*-mctx という名前にする。
  5. レイファイドデータから目的とするコード(スクリプトコード、ページコード)を出力するトップレベルのコマンドは gen-* という名前にする。
  6. メタコンテキストの変数(テンプレート変数名)はすべて大文字とする。ただし、プロパティまで大文字にはしない。これは、メタコード内の可読性のためである。
  7. メタコードは、include:/meta/ に入れて、拡張子は *.meta.caty, *.meta.html としている。