メタプログラミング:用語とネーミング
レイファイドデータ(reified data)といえども、単なるXJSONデータだから、これを加工するのは普通の処理となんら変わらない。
が、難しい。
ほんとの普通のデータは、そのまま(文字通りに)解釈すればいい。文字列は文字列だし、配列は配列だ。が、レイファイドデータは、メタオブジェクトとしての解釈を持っていて、その解釈にしたがって加工していく。この解釈をシッカリと把握し続けるのが難しいのだ。
用語とネーミングの整備は多少助けになるはず。まだ、試行錯誤で暫定的だが:
- レイファイドデータを入力とするプログラムをメタプログラムと呼ぶ。
- メタプログラム内で、テンプレートシステムを使うとき、そのテンプレートをメタコードと呼ぶ。メタスクリプトとメタページが主たるメタコード。
- メタコードに渡すコンテキストをメタコンテキストと呼び、略称は、mctx とする。
- レイファイドデータからメタコンテキストに変換するコマンドは、conv-to-*-mctx という名前にする。
- レイファイドデータから目的とするコード(スクリプトコード、ページコード)を出力するトップレベルのコマンドは gen-* という名前にする。
- メタコンテキストの変数(テンプレート変数名)はすべて大文字とする。ただし、プロパティまで大文字にはしない。これは、メタコード内の可読性のためである。
- メタコードは、include:/meta/ に入れて、拡張子は *.meta.caty, *.meta.html としている。