上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

役に立ったらぽちっとよろしく。 人気ブログランキングへ

EDSL とは 通信規格 ADSLの親戚ではなく(笑)、Embedded Domain Specific Language の略である。…日本語にすると"埋め込み分野指定言語"?JavaとかCは汎用的で強力なんだけど、ある種のテーマに対しては物凄く冗長な表現になる。テーマに適した言語の方が、ずーっと簡単で簡潔になる。

なので、そんな時はJavaやCに他の言語を直接(文字列型としてではなく)埋め込めたらなぁ…な~んて思う。で、実際、埋め込みSQLっていってJavaやCの中に、直接SQLを書き込めたりなんてのもある。ただ、SQLみたく有名な言語だとそういう方法をサポートしてくれるコンパイラもあるんだけど、My言語!!をサポートしてくれるコンパイラは無い。さらに、埋め込みSQLって言ったってそんな主流ではない…人にもよるだろうけど、どことなく後ろめたさの残る技術なのである。

そこで、結構みんな良くやるのが既存のJavaやCの枠組みの中で、文法の規則をホスト言語の型で表現して分かり易くする方法。例えばSQLの条件部分(よくCriateriaと呼ばれる)だと、criateriaX.and(criateriaY.or(criateriaZ))みたいにする。文法規則での入れ子の表現を型でも表現できるので、こうした方法はよく使われる。そして、こうすると検索条件をほいほい持ち運べるのでとても便利 (文字列で持ち運んで他の条件と結合すると"商品.単価 > 2000AND 商品.在庫 > 100"等のウッカリミスがある)


で、今日のメモはここから、GoogleのDIフレームワークにGUICEってのがある。なかなかよく出来たDIだと前々から聞いていたので、かなり遅ればせながら覗いてみた。そしたら、こんなとこにもEDSL発見 !!

bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class)

…思ったのは、何だかSQLの時の印象と違う…。しばらくして何でか分かったんだけど、SQLの時のはそもそも各文法木の一部の持ち運びを前提にしてる。けど、GUICEの場合、

bind_annotated_to(Service.class, Red.class, ServiceImpl.class)

のようにしたくないがためのシンタックスシュガーのみを意図してて、bind(Service.class)の結果の持ち運びは意図してないはず、…でもできちゃう。…確かに圧倒的に読みやすいんだけどね…。~難しいな…Javaにメソッドの引数を構造化できる機能とか…返り値を保存させない機構があればいいのかな…それも少し大げさか…うー悩ましい…。ただ、GUICEのJavaDocを見て感心したのは、EDSLのための導入ですよ~ってのをきちんと明文化してたとこ…。これなら、間違いにくい…さすが。

で、色々調べると、こうした使い方はMartin Fowlerが"Fluent Interface"と呼んでいる(日本語訳)ものらしい。記事は結構古いんだけど、その中でこれからもっと議論されるべき手法…とくくってある。…そして、GUICEの様な使い方は、代表的な手法ではないとの事。 う~ん、でも、GUICEみたく有名所が使ってるって事は、こうした方法も増えてくのかなぁ…。う~ん…。

役に立ったらぽちっとよろしく。 人気ブログランキングへ

スポンサーサイト

前回に引き続き、またフォントネタです。というのも、おいらの愛用しているFirefox3.5でCSS3の先行実装である単位chなるものが導入されてます(正確にはFirefox3.5の内部で利用されるGecko1.9.1で)。この単位chですが、使用しているフォントの文字'o'の横幅と同じだとか。なるほど、これを使うと等幅フォントと連携した横幅の設定が出来るわけですね、ふむふむ。

でも、よく考えると実はこの単位ch、東アジア圏(日本もね)では、あまり意味がない。。。 てのは、東アジア圏の等幅フォント(例えばSimSun(中国語), MS Gothic(日本語))は昔から全角/半角って区別があって、フォントの高さと全角文字の幅が一緒、半角文字の幅はその半分と決まってます。つまり、東アジア圏の等幅フォントに限り 0.5em = 1ch 。

で、そんな"特殊な環境"で育ったおいらは、ちょっと前まで、この性質が全世界の等幅フォントで共通と思ってた。なので、8桁の数値を入力するためのテキストボックスがあれば、4em確保すればいい!と…。国際化対応を謳ったサイトであれ何であれ…ね。今製作中のサイトもそんな感じ。。。

もちろん、東アジア圏の人達の中には、こうした下地があるので、おいらと同じ勘違いをしている人達がいると思う。…いや、いるに違いない。いや、いて欲しい。そうでなければ、おいらがこうして記事にした意味、…いやそれ以前に、おいらが東アジア圏のWeb製作者で一番の勘違い野郎に!!そんなはずはない!!!
…で、熱心に日中韓の国際化対応してるっぽいサイトを調べまわっているが見つからず…。
ち、ちっきショー!!!

役に立ったらぽちっとよろしく。 人気ブログランキングへ

Copyright © ふらふら技術者の日記 All Rights Reserved.
Powered by FC2 Blog
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。