阿部 貴弘氏
『Progression 3』(以下、Progression)は、Flashコンテンツのページ移動処理をスムーズに行うためのフレームワーク。HTMLベースのサイトと同じような階層構造や複雑なリンク構造を持つFlashコンテンツを容易に開発できる特徴を持つ。設計期間を短縮でき、Flash開発者がクリエイティブに集中できることもあって、利用するサイトが増えている。
今回はProgressionプロダクトマネージャーの阿部 貴弘氏に、開発の背景や特徴、今後の展開、クリエイターに対するアドバイスなどを聞いた。
きっかけは「技術的興味」と「開発者共通の問題意識」
開発のきっかけについて阿部氏に聞くと、当初はフレームワークを作るという目的はなかったという。「もともとFlash制作でデザインもプログラミングもすべて行っていました。ActionScript 3になってから、スクリプトの構文やエラーチェックの厳格さが増して、ActionScript 2の時代にできていた、デザインとプログラミングの並行開発が難しくなりました。そこでデザイン作業に集中できるように、事前に土台となるシステム部分を作ろうと思い立ったのがスタートです。そのときは、最新の技術を使ってどこまで作れるのかを試してみたいという趣旨もありました」
2007年の2月~4月までの2か月間、前半の1か月にフレームワーク、後半の1か月でデザインを行う計画で着手した。サイトを作るはずが、フレームワーク開発に思いのほか没頭したため、フレームワークのみで2か月間を費やして最初のバージョンが完成し、オープンソースのコミュニティに公開した。「知り合いの方やFlash系の開発者にヒアリングしていると、Flash制作における同じような問題意識が分かってきました。ニーズがあるならそこで終わりにせず、開発を継続しようと思いました」と阿部氏。
従来のFlashコンテンツで大変だった「画面遷移」の実装
Progressionのメイン機能について尋ねると「Progressionの核となる部分は画面遷移です。当時いくつかのフレームワークもありましたが、どれも手法としては器の上にすべての表示オブジェクトをのせて、遷移の際にはその器ごと入れ替えてしてしまうようなもの(FlexBuilderのViewStackなど)という印象がありました。この方式は一瞬で画面を丸ごと入れ替えるような実装には向いているかと思いますが、多くのFlashコンテンツの場合、2つの画面間で共通するオブジェクトに対してエフェクトをかけつつ遷移するような演出をよく用います。こうした演出を実装するためには、先ほどのように器単位で処理を分解する方法では困難です。また、構造自体も画面がただ横並びに扱われるだけではなく、一つの画面を子、孫といった複数の階層構造からなる表示オブジェクトを組み合わせて描画するような場合でも、破綻なく制御可能にするために画面と状態を完全に分離した実装とし、複雑な構造を整理しやすくしました。その結果、Flash制作においては実装難易度の高いディープリンク(ここではウェブアプリケーションの特定の状態を指すURL)も自動的に発行可能な仕組みを実現できました。
また、演出には時間のかかる非同期処理を組み込む必要があるのですが、通常ActionScript 3ではイベントリスナーを連鎖させるような実装をしなければいけません。しかし、イメージを直感的に試してみたい場合に厳密さは冗長ですし、いろいろな演出を試してみるようなプロトタイピングには不向きな方法といえます。そこで非同期処理をよりシーケンシャルに記述できる仕組みを用意し、時間のかかる処理であっても記述行を入れ替えるだけで実行できるようにしています」とFlashクリエイターならではの視点での開発を行った経緯を語る。
複数の画面が相互にリンクするような複雑なコンテンツの場合、画面とそれらをつなぐための制御のラインをたくさん用意する必要があり、画面数や構造が複雑になるほど手間がかかるが、Progressionの場合は、つなぐ部分だけを切り離して管理できるという。