本連載が書籍化されました。
『良いコードを書く技術 ─ 読みやすく保守しやすいプログラミング作法』
縣俊貴 著/
価格2394円
ISBN 978-4-7741-4596-9
おっす、おらメタプログラマ!
前回まで
メタプログラミングの悩み
まずは毎回好例,
良い仕事をしたい普通のプログラマ
達人プログラマを目指す 初級~中級のプログラマ
達人プログラマ
さすがに今回は達人プログラマ以外は歯切れが悪いですね。言葉が難しく感じる,
メタプログラミングとは?
メタプログラミングとはいったい何でしょうか? 普通のプログラムを
コードの自動生成
プログラムを自動生成するプログラムはメタプログラムです。たとえばSeasarプロジェクトのS2JDBCGenやDBFluteなどは,
自動生成のうれしい点として,
このように
DSL
ある特定の問題領域を解決するための小さな言語のことを
外部DSL
Javaで一番使われているDSLはJSPでしょう。JSPは
JSP
<body>
<h1>Cuuby archetype sample app : /hello/</h1>
<c:import url="/common/errors.jsp"/>
プリコンパイル
Javaコード
out.write("<body>\n");
out.write("<h1>Cuuby archetype sample app : /hello/</h1>\n");
if (_jspx_meth_c_005fimport_005f0(_jspx_page_context))
return;
out.write('\n');
JSPのようにホストとなる言語
<component class="helper.Printer">
<initMethod name="addPrinterName">
<arg>"Printer1"</arg>
</initMethod>
</component>
XML形式の外部DSLでは,
- helper.
Printerクラスのオブジェクトを動的に作成する - 作成したオブジェクトに対して"Printer1"を引数にaddPrinterNameメソッドを実行する
このように外部DSLは,
まったくオリジナルのミニ言語を作成して外部DSLとして利用する場合もあります。その場合はパーサ作成のコストやオリジナル構文を新たに考えるコストが必要なので,