DWA の Obfuscation について

2009年02月16日 00:29

よくDWAのFormsX.nsf は「設計を読めなくしている」と言われる事があります。少なくとも、Lotus Domino 7.x 以降についてはこの表現は適切ではありません。
デザイナーで開くと、確かに改行も無くJavaScriptのコードが並んでいて読みにくいのですが、これは改行をなくしたり、関数や変数名を短くすることによってコードサイズを小さくする「Obfuscation」と言われるJavaScriptの最適化を行っているためです。パフォーマンス向上のために行った措置によって結果として読みにくくなっただけで、コード自体を読めなくするような措置をしているわけではありません。
 よくObfuscationの事を日本語で「難読化」と表現している人も見かけますが、これもObfuscation があたかもコードを読みづらくするための技術であるかのような誤解を与える表現のような気がします。

6.5.x以前のFormsでは、確かに一部読めない部分がありました。
これは、たとえば Forms6.nsf を見てみると、Base64エンコードされた文字列が並び、実際にデコードしてみても意味のある文字列が現れず、解釈不能な部分がありました。これは、@関数をコンパイルした形式で格納していたためで、Obfuscationとは全く異なる理由で読めなくなっていたのです。

 通常Obfuscationは機械的に行うのが普通で機械的に行った場合、元の関数名(変数名) → 短くした名前のテーブルを生成します。
 このObfuscation List は Lotus Domino 7.x 以降はFormsX.nsfのファイルリソースにObfuscationList.txt と言う名前で同梱されているので興味ある方は一度見てみてください。

このあたりの詳細は以下のRedbookの3.1.1あたりにも詳細が記載されているので是非ごらんになってみてください。
Domino Web Access 7 Customization


 このRedbook は本当にDWAを勉強する上で参考になるので、またいつかここから記事を書こうと思います。


コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://hnagasim.blog8.fc2.com/tb.php/89-258addba
    この記事へのトラックバック


    最新記事