レポート

これからのFlash開発者への道しるべ─SWF研究会#2@東京 実施レポート

この記事を読むのに必要な時間:およそ 4.5 分

2012年9月25日,株式会社ディー・エヌ・エー セミナールームにて,⁠SWF研究会#2@東京」が開催されました。

今回は,AdobeのモバイルFlashのプラグインが正式に提供終了を迎える背景より,これらを利用していたエンジニアが集結し,現状の問題点や,今後の技術転向など熱く強く共有する場となりました。

また,事前に目的も以下の様に告知しており,意識の高さが伺える勉強会となりました。

SWFの構造,情報要素や,その解釈についての知識を共有するのが目的です。一通り聞いて理解すれば,簡単なFlash Playerが自作出来る位の内容を目指します。

参考URL

タイムマップは以下の通りです。

19:00:発表
  • @yoya:SWFの情報要素とバイナリの読み方
  • @ken39arg:Shapeの基礎の基礎
  • @kohei_april20:アクションスクリプト実行処理系
  • @tkihira:Flash Runtime Engineの実装
21:00:懇親会&LT
  • @y_imaya:JavaScriptによるLossless画像の扱い方
  • @a_bicky:アフィン変換とgetTransform(仮)
  • @rakusan:フォントとテキスト
  • @akb7_jp:SWFファイルの覗き方
  • @flarephoenix:ミニマムswfエンジン for iOS
  • @fchiba:Shape Morphing 解説

まずはじめに,DeNA紀平氏より開催のご挨拶として,⁠本勉強会を企画したときは,こんなにもたくさんの人がFlashPlayerを作りたいとは思わなかった」と切り出し「明日からオープンソースのFlashPlayerがタケノコの様に発表されると思います」と会場の笑いを誘い,始まりました。

SWFの情報要素とバイナリの読み方

まず始めに本勉強会主催の一人でもあるよや氏(@yoya)より,⁠SWFの情報要素とバイナリの読み方」についてお話がありました。

よや氏

よや氏

自己紹介では「六本木の方から来た」⁠青色のポロシャツに見た事のあるロゴマーク」などから「会社名は察してください。今日はアウェイながら頑張ります」と和やかなムードの中本題に入ったよや氏。今回の発表では,SWFフォーマット(バイナリ)の読み方のコツに関して,わかりやすい資料を元に説明いただきました。

SWFを触る目的

そもそもなぜSWFを触らなければならないのか? それは,とくにモバイル向けサービスをよりリッチにするためです。そのため,FlashLiteのスペック(制限)を超えるべくさまざまな対応を行い,以下のように整理していました。

  • 最大100KB→最小限のデータをSWFに載せる
  • 実行引数を渡せない→SWFにパラメータ値を埋め込もう
  • 画像を動的に入れ替えし辛い→SWFの画像も入れ替えてしまえ

これらを対応していた結果,エンジニアが「まさかの実行ファイル(SWF)動的生成」というスキルを身につけます。さらにに時は流れ,現在はスマートフォン時代になり,

  • iOSにFlashPlayerが無い→JavaScriptでSWFを解釈して何か表示
  • Androidも4.1からFlashPlayerがない→じゃぁ,こっちも!

と,エンジニアが「まさかのFlashPlayer実装」を行うという流れになりました。

これらを達成するために,SWFを理解し触らなければならない,と説明しました。

SWFの仕様

Adobe社より提供されている公式仕様書は,⁠データ形式の正確さはさておき)詳細に書かれているものの,意味に関する記述は不足しています。仕様書以上の情報については自力で調べたり,仕様書から察したりするしかなく,この辺りはFlashエンジニアの泣かせどころだと言います。

SWFの構造

実際にFlashのバイナリを解釈する上で,その構造を理解する必要があり,本講演では,それぞれの構造について詳細に説明がありました。

画像

SWFの基本的な構造は全てヘッダとタグで構成されているとし,SWF Header,SWF Header FrameSize,SWF Tag example,SWF Tag type(仕様書のappendix Bをおすすめ)⁠SWF Tag Categories,SWF Tag formatなどから,ShowFrame,END,SetBackgroundColor,DefineBitsJPEGDefineBitsLossless(パレット,RGBA)⁠DefineShapePlaceObject,MATRIX,CXFORMなどに関するTagフォーマット,バイナリの読み方などをそれぞれのケースに応じて説明しました。詳細の内容は資料を参考にしてください。

著者プロフィール

高岡将(たかおかすすむ)

大手金融,独立系SIerにて気がつけば計18年以上のキャリアを重ねる。バランス感覚に長け,インフラ/アプリ,プレイヤ/マネージャなど関係なくこなし,「いそうだけどいないタイプ」と評価される。

仕事以外では,自転車,ジョギング,サックス等を趣味にし,密かに「エンジニアと健康」についてダイエット成功論の連載を企む。

コメント

コメントの記入