Flash Proの歴史で重大な局面になると私は思っているアップデートを、Flashチームが今日リリースする。この記事では、その変更点、それがなぜ良いと思うのか、又、Flashがどこへ向かうのかについて個人的見解を述べようと思う。
※ この投稿はFlashという制作ツールについてです。Flashランタイム(Flash PlayerとAIR)は別のトピックですが、今日のアップデートはランタイムに特に影響はありません。
背景:FLAの種類
Flashの愛用者なら、1〜2年前からFLAの種類が複数になったことに気づいているのではと思う。一つのプロジェクトをSWF・AIR・HTMLそれぞれとして書き出すより、Flash ProがAS3プロジェクトやHTMLプロジェクトを区別するようになった。なぜそうなったかと言うと、制作機能を目的のフォーマットに合わせるためである。つまり、CreateJSに書き出すプロジェクトの場合に、AS3ではなくてJavascriptのコードヒントを出したり、CreateJSに対応しないツールをグレーアウトする、ということ。
そしてその後、WebGL用のFLAも技術プレビューとして追加され、SVGとスプライトシートの書き出しにも対応したことで、Flash Proがますます多目的なツールとなってきた。そして今日のアップデートはその流れの続きの話になる。
カスタムプラットフォーム対応の登場
CreateJSとスプライトシートの書き出しは素晴らしいが、他のステキなフォーマットやライブラリもたくさんある。Flashがそれら全てを書き出せるのが理想的だが、Adobeが一つ一つ実装するのを待つのは得策ではない。そこでアップデートの内容だが、今日からは、SWFやCreateJSと同様に任意のライブラリやフォーマット向けに、Flashが書き出せるよう、誰もが拡張できる機能が公開される。
使い道はこんな感じ。とあるアニメーターがUnityやStarlingなどで再生する目的のアニメーションを作成したいとする。一つの選択肢として、GAFフォーマットを使用することにしよう。最初はGAFのFlash用エキステンションを取得し、インストールする。そしてFlashを再起動すると、「新規ファイル」の選択で新しいFLA種類が現れる:
GAF用のプロジェクトを作成すると、いくつかの変更に気付く。例えば、3D回転ツールがグレーアウトされる(GAFフォーマットは透視変換に対応しないため)。また、パブリッシュ設定を開くと普段のSWF設定ではなくて、GAFによる設定が見られる:
そしてファイル➔書き出しを行うと、Unity・Starling・Cocos2D・Marmaladeなどのランタイムで再生できるGAFファイルが書き出されるというわけ。
なるほど〜。じゃなぜこれが重大?
エバンジェリストとして働くことの良い所の一つは、会社の台本を捨てて個人的見解を話す自由は比較的ある。(このアップデートの話は元々台本がないが)で、ここからはその見解。カスタムプラットフォームの対応は、Flash Proが5〜10年後にまだ存在するかどうかを決める機能だと私は思う。
その理由は、この機能でFlashの制作機能が出力フォーマットから分離されることになる。今までのFlash Proは「SWF作成ツール」や「HTMLキャンバスに書き出せるツール」に過ぎないが、今日からは「インタラクティブアニメーション制作ツール」と言える。Flashの未来を考えるとこれが正解だと思う。
また、制作ツールを持っていない2Dフォーマットがあれば、これからはFlashでその穴を埋められるかも。例えばゲーム会社が新しい2Dゲームの企画を始めるとする。多くの場合には、最初の仕事はレベルエディタの開発になる。しかしエディタを作るより書き出しエキステンションを作った方が早いとすると、Flashでレベル設計をする方がコスパ的に有利であろう。
様々な事例が考えられる。重要な点は、アドビに何かを依頼して希望フォーマットや機能の対応を待つ必要がない。そして、たとえスティーブ・ジョブズの幽霊が明日、全世界すべてのPCからFlashプレーヤーを削除したとしても、Flash Proを引き続き制作ツールとして使える。(冗談 (半分) )
了解。では詳細情報を!
ここまで読んで頂いている方にありそうな質問と回答:
Q:エキステンションはどこから?
A: 一般的には、Adobeのアドオンのサイトから。また、作ったh人から直接「.zxp」ファイルを取得してExtension Managerでインストールするも可能。Photoshopなど他のアドビツールのエクステンションと全く同じ流れになる。
Q:エクステンションはどうやって作る?
A: 短く言うと、「C++で作る」。カスタムプラットフォームの対応をSWFと変わらないほどパワフルにするため、SWFの書き出しに使われる同じ内部APIを使う拡張SDKを利用する。私はC人間ではないので説明出来るのはそれぐらいだが、詳しくはカスタムプラットフォーム対応のSDKのドキュメンテーションまで。
(厳密に言うと、C++で作るのは独自フォーマットを書き出す部分だけ。エキステンションの中身の残りはXMLのコンフィグやHTMLのパネルなどになる。)
Q:エキステンションが出来る・出来ないことは?
A: エキステンションの役割は基本的に:
- FLAの種類とその説明文の定義
- グレーアウトするFlash Pro機能のリスト
- カスタムパネルの定義(例えばパブリッシュ設定など)
- FLAの書き出しの際の実装
エキステンションでまだ出来ない点は、スクリプト言語に合わせたコードヒント、コードカラーリングのカスタマイズ。カスタムプラットフォームのFLAではスクリプトを使えるが、その編集が現状プレーンテキスト扱いになる。スクリプトエディタのカスタマイズ(例えばcoffeescriptを使うエキステンションならcoffeescriptのカラーリングになるとか)はこれから対応したいと思っている。
Q:今すぐ手に入るエキステンションは?
A: まだ少々時間がかかる。GAFのエキステンションが公開された!(リンク先ページの「install manually」のところにzxpファイルがある。)そして拡張SDKがもう一般公開されたので、色んな第三者のエキステンションがこれから出来上がることを期待できる。
未来の話
さて、Flashはここからどうなる?の話。短期的には、Flash Proチームがカスタムプラットフォーム対応の残った機能を完成する。(例えばコードヒントのカスタマイズ)また、カスタムプラットフォームのエキステンションを開発している第三者と協力して、より早くリリースできるようにサポートしている。
長期的には、Flashは出力フォーマットにとらわれないような多目的制作ツールになる道を進んでいく。PhotoshopがJPGを作るか、PNGを作るか問わないのと同じように。Flashチームは、どのライブラリやフォーマットで再生するかを指定することなく、より良いインタラクティブアニメーションを制作するツールの実装にフォーカスしてくつもりである。
PS:
今日のアップデートには、他にもいくつかの新機能を備わっている。WebGLプロジェクトがフレームスクリプトに対応し、あとはブラシツールのペン先の形をカスタマイズできるようになった。Flashの新機能の説明はこちら。