SWFファイルフォーマットとライセンス(その2)
少し前の話になりますが、とうとうFlex 3 SDKとAIR SDKが公開されました。既にお使いの方も多いかと思います。 さて、以前「SWFファイルフォーマットとライセンス」という記事を書いたのですが、Flex 3 SDKが公開されてどうなったかの続報をお伝えします。
まず、大きな変更として、オープンソースな部分が増えました。Flex 2 SDKのときはFlex FrameworkのみがMPL(Mozilla Public License)だったのですが、Flex 3 SDKになって、コンパイラ、デバッガ、SWFライブラリ等もMPLになりました。Adobe Open Source に Flex SDK プロジェクト があるので、詳しくはそちらをご覧下さい。「プロジェクトページなんてどうでも良い、早くソースを見せろ」という方は、Flex SDK のsvnリポジトリが <http://opensource.adobe.com/svn/opensource/flex/sdk/> にあるので、svn coして下さい。
で、このリポジトリを探してみたのですが、残念ながらSWF Fileformat Specificationは含まれていませんでした。その代わりswfutils.jarが想像以上にすごい事が判りました。勝手にswfを生成するためのライブラリだと思っていたのですが、swfを読み込むこともできるのです。
flexsdkのbin/ディレクトリの中には、swfdumpという、swfファイルをswfxというXMLフォーマットでダンプするツールが含まれています。この実体は flash.swf.tools.SwfPrinter#main()になります。なんか、swfのリバースエンジニアリング大歓迎っていう感じのツールですね(笑)
flexsdkのbin/ディレクトリに含まれてはいないのですが、swfxからswfへの変換もswfutils.jarに含まれています。flash.swf.tools.SwfParser#main()が実体なので、
$ java -cp $FLEX_HOME/lib/swfutils.jar flash.swf.tools.SwfxParser test.swfxとすると実行することができます。が、実行してみようとしてみたところ、swfx.xsdというリソースの取得に失敗して止まってしまいます。swfx.xsd自体はflexsdk/modules/swfutils/src/java/flash/swf/tools/swfx.xsd にあるので、これからJavaとJarとAntを勉強してSwfxParserを使えるjarの作成に挑戦してみます。
Flex SDKの中には、コンパイラやディスアセンブラ等色々含まれていますので、swf関係者(?)な方はぜひ覗いて見てください