メタプログラミングとは。いつ使うべきか

メタプログラミングとは

www.atmarkit.co.jp

「メタプログラム」とは、大ざっぱに言うと「コードを生成するコード」のことを指します。もう少し詳細に言うと、「より抽象的な記法を使ってコードを書くことにより、動的にコードを生成するコード」です。そして、メタプログラミングはメタプログラムを書くことを言います。メタプログラムでは、どのようなコードが実行されるかは実行時に決まります。

使いドコロ

メタプログラミングをして割に合うかの判断基準:処理を1箇所に局所化できるか - ククログ(2014-01-16)

メタプログラミングを使うようにした場合、新しくフォーマット対象を追加するときは次のように2箇所変更します。

  • format_XXXというフォーマットメソッドを定義
  • 別の場所にあるSUB_FORMATTERSに定義したメソッドを登録

変更箇所を局所化できていないと、このあたりのコードをいじるたびに、「このメタプログラミングをしているところはどういう仕組みで動いているか」を理解しなければいけません。 逆に言うと、メタプログラミングでやっていることの詳細を知らなくても使えるくらい抽象化しているのであれば、メタプログラミングのメリットを感じているということです。

browserifyも広義で捉えればメタプログラミングの1種

AltjsやBrowserify等のASTレベルのメタプログラミングが流行った副産物で、sourcemapという概念ができた。

qiita.com

ただしコードジェネレータは厳密にはメタプログラミングではない

実行前 にソース・コードを生成する(コード・ジェネレーター)か、 実行時 にプログラムそのものを生成する(メタプログラミング)かの違いでしかない

d.hatena.ne.jp