メタプログラミング
メタプログラミングとは?
簡単に言うと、プログラムがコードを修正するようにするプログラミングと考えることができる。特定の技術というよりは、そのような概念全体をメタプログラミングと呼んでおり、あるプログラムが他の言語で書かれたコードを開いて「文字列」を修正するようにコードを修正したり、同じ言語同士で、さらにはそれ自身が修正する場合もすべてメタプログラミングの範疇に入る。最近出ているプログラミング言語は、設計からメタプログラミングをサポートすることが多い。
このメタプログラミングのアイデアは、複数の言語を扱うコーダーに特に有用である。ほとんどのプログラミング言語は、どこかに特化しているか、さまざまな環境で使えるかのどちらかで、少なくとも一つの利点がある。これを適切な場所で使うことは良いが、人間が制御する限り、プロジェクトが大きく複雑になるほど、生産性が下がる。それをコントロールすることさえプログラムに任せたらどうだろう?複数の言語で書かれたコードを一つ一つ手作業で開いて修正するのではなく、その一連のプロセスが自動化されるのである。
プログラムを修正するというその概念自体を見ても、使用する場所は多い。特に、生産性が落ちる古い言語、ライブラリや既に保証されたコードを移すことができないが、パラメータとして渡したいものが第一級オブジェクトではない場合など、メタプログラミングは光を放つ。‘自分で直接変えてガリガリやれば、とりあえずは動くけど、この仕事も一回や二回だ、これ以上は無理だ’という状況にピッタリの解決策がまさにメタプログラミングである。
もちろん、これらは単なる例に過ぎず、その応用は本当に無限大である。基本的に、メタプログラミングという概念をどう使うかはコーダーの創造力にかかっているが、この方法を知ることと知らないことでは天と地ほどの差がある。