top / index / prev / next / target / source

2006-04-25 diary: JavaScript言語仕様を勉強中… 「Effective JavaScript」

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

old-v2

JavaScript言語仕様を勉強中… 「Effective JavaScript」

JavaScript言語仕様を勉強中です。

JavaScript言語仕様を勉強中…: Effective JavaScript

JavaScript言語仕様を勉強中です。現時点では 「Effective JavaScript」というページを参考にしながら 少しずつ言語仕様を理解しつつあります。印刷して持ち歩いて、そして少しずつ読み進めています。

この「Effective JavaScript」のサイトは とても良くできていて、そして大変助けられています。このような素晴らしい情報が公開されてられることを感謝します。コーディング規約作成時の参考文献としても活用できるのでは、とも考えています。

…そのような営みのうえで JavaScriptが理解できたら、休暇のあいだに時間を確保して blancoCgの JavaScript自動生成機能の追加をなんとか実現できるようになりたい、と狙っています。blancoCgが 現状サポートしているJava言語・C#.NET言語のソースコード自動生成に加えて JavaScriptソースコード自動生成をサポートできたとしたら、多プログラミング言語対応ソースコード自動生成ライブラリとして、あるいはそのインタフェースとして ある程度課題が克服できた状態に到達する、あるいは妥当性が実証されたものと判断できる、のかしら? なあんて考えています。

とりあえず JavaScriptなんですが、私にとっては とても難しいです。

2006.05.17追記 JavaScriptソースコード自動生成は 正式に blancoCgに組み込まれることになりました。現在 blancoCgの最新開発版において JavaScript自動生成についての具体的な実装が行わつつあります。

blanco Framework: blancoCgによる blancoCgの自動生成

blanco Frameworkに携わっていて、「XXXによる XXXの自動生成」というのが実現できたときは とても嬉しいものです。コンパイラがコンパイラ自身をコンパイルしてビルドされるのは当然であるのと同様に、ソースコード自動生成ツールは ソースコード自動生成ツールによってビルドできるというのは実現されるべき事項のひとつなのです。DSLは それ自身が DSLであり自動生成されるべきなのです。それは そんなには簡単では無いでしょうが、しかし一方で達成できるととても嬉しいのです。

blanco Frameworkのなかで自己を自動生成できているものには下記のようなものがあります。

特に blancoResourceBundleの自己生成ができたときは嬉しかったです。

今の私の自己生成ターゲットは blancoCgです。blancoCg自身は blancoValueObjectを経由した blancoCgによる自動生成機能を用いて 自身のバリューオブジェクト自動生成を実現しています。しかし これは直接的ではないと考えます。直接的な自己ソースコードの自動生成を実現するといったいどのような課題などが見つかるのだろう、と とても興味を持ち、また 実現を狙っています。また、それ自身も単体試験の一部たり得るのです。…今は忙しいのでとても着手できませんけれどもね…。

Java: serialVersionUIDというもの

Eclipseを使っていて 「serialVersionUID」 に関する警告を見かけることがあります。この「serialVersionUID」に関する警告の意味を、つい最近ようやっと理解出来ました。(今までは あまり正確に認識していませんでした)

この記述によると 「すべての直列化可能クラスが serialVersionUID 値を明示的に宣言するように設定することを強くお勧め…」とのことです。継承もとのクラスが直列化可能である場合に、継承先も当然直列化可能になるので、その結果この警告が発せられているのでした。

では、実際に「serialVersionUID」に何の値をセットしておけばよいのか、というのは これまた悩ましい命題であることを改めて考えさせられます。バージョン番号ということで1からはじまる連番を採番していくのに妥当性を感じられます。一方で所定の計算ルーチンを持ってID採番をおこなうというのも これまた妥当であるようにも思えます。直列化を実際に扱って 「serialVersionUID」を設定する必要がある場面に遭っていないので、どういう採番ルールが良いのか、私にはまだわかりません。


この日記について