Flashエミュレーター誕生のきっかけは別に「フラッシュ愛」じゃなかった 「swf2js」開発者の本音と数奇な運命【フォーカス】

2024年2月15日

株式会社ソニックムーブ エンジニアグループ ソリューションユニット マネージャー

家永 稔之

2011年にソニックムーブに入社。個人ではJavaScriptとTypeScriptを用いて、「swf2js」や「Next2D」の開発を手がける。業務のリモート化をきっかけに地元の消防団に所属し、防災活動として月に数回、消防車両に乗って地域の巡回を行う。
X
GitHub
Animation Tool

かつてインタラクティブなWebコンテンツを支えた「Adobe Flash」。「Adobe Flash Player」は2020年12月末でサポートを終了し、ほとんどのコンテンツはすでに姿を消しました。そんなFlashコンテンツ(SWF)を最新のHTML環境で再生可能にする、オープンソースのJavaScriptライブラリが「swf2js」です。ソフトウェアエンジニアの家永稔之さんが開発し、2015年に公開しました。2022年には有名なFlashゲーム「艦砲射撃!」や「マテリアルスナイパー」のクリエイターがswf2jsを使ってこれらのゲームを再公開し、話題にもなりました。

家永さんは現在、Flashコンテンツのようなアニメーションやゲームがつくれるツールを提供するプロジェクト「Next2D」に注力しています。「きっと家永さんはFlashコンテンツが大好きでしょうがないのだろう」と、「『おもしろフラッシュ』全盛期に好きだった作品といえば?」と聞くと、「申し訳ないです、実はFlashコンテンツが好きなわけではないんですよ…」とまさかの返答が。それでも、レガシーなコンテンツを現代に生き返らせるツールを開発した理由とは?Flashが私たちに教えてくれたこととは――。

大好きなのはおもしろフラッシュではなく、Flashの「技術」

――Flashコンテンツ(SWF)を最新のHTML環境で再生できるライブラリ「swf2js」を開発したそうですが、元々Flashでつくられたゲームやアニメが好きだったんですか?

家永:いや、そういうわけではなくて…(笑)。Flash作品に強い興味を抱いたことはないんです。一世を風靡した「おもしろフラッシュ」も、見たことはありません。

――そうだったんですね…!てっきりFlashコンテンツへの愛が原動力なのかと思い込んでいました。

家永:期待を裏切ってしまうようで、申し訳ないです。でも、印象に残っているFlash作品はいくつかありますよ。

1つは、フォントで知られるモリサワ社の「FONTPARK」。モリサワフォントの収録文字を使って絵を描けるFlash作品です。テキストでアートをつくるというアイデアと、文字がダイナミックかつサクサクと動きまわる操作性が印象に残っています。すでに公開終了してしまったようで、とても残念に思います。

▲Flash作品「FONTPARK 2.0」のアーカイブ動画(モリサワ社公式YouTubeから) マウス操作で文字を回転・拡大・縮小して自由に配置し、人の顔や動物の形にしていくというコンテンツ

家永:ゲームだと「Rokko Chan」というロックマン風の同人ゲーム。女性型ロボット・ロッコちゃんを操る横スクロール2Dアクションですね。子供のころに本家ロックマンをゲームボーイでプレイしていたこともあって懐かしい気持ちになりましたし、その再現度の高さや本家と遜色ないコンテンツのリッチさに驚きました。これもFlashのサービス終了とともに一時期遊べなくなってしまったのですが、2023年の11月に開発者がRuffleを使ってブラウザ上に復活させてくれたんです。

▲Rokko Chanのスクリーンショット画面 公開は2011年12月

――ロッコちゃん、懐かしいですね。本当に商用ゲームを遊んでいるかのようなクオリティーでサクサク動くんですよね。冷静に考えると、10年以上前にこうしたゲームがWeb上で普通に遊べたってすごいことなのかも?

家永:そうでしょう!Flash PlayerやFlash Professional、Adobe Animate。私は、あの時代にクオリティーの高いコンテンツ体験を実現できた、Flashというツールが持つ技術自体が好きなんです

Flashの技術はとにかく先を行っていました。HTMLやCSSが今ほど進化していない時代でも、Flashを使えば、動画やアニメーション、ゲームなど、他では実現できないインタラクティブな体験をWeb上で生み出せた。ブラウザ上でリアルタイム通話をするなんてのも、いまではGoogle Meetなどが普及していますが、Flashを使えば、10年以上前の当時からそれができた。

動作の軽快さも魅力のひとつです。パソコンの平均スペックが低く回線速度も遅かった時代に、昨今のWebコンテンツに匹敵するようなリッチな表現をサクサク動かせた。現在主流になっているWebGLでも、Flashのように軽快に動作させるには相当な専門知識が必要だが、Flashなら知識のない人がパパッとつくったものでもすぐに動きます。

Flashの技術そのものにスポットライトが当たることはあまりないと思いますが、本当はすごい技術なんですよ。「Flashという技術への憧れ」は、後々「Next2D」の開発のきっかけにもつながっています。

——ということは、swf2jsをつくり始めたのは、Flashという技術が好きだったからですか?

家永:それもあるんですが、一番の理由は、JavaScriptのスキルを身につけないとこの先生き残れないと思ったからです

私がFlashに関わり始めたのは、ActionScript 3.0(Flash用言語)が普及しだした2007年です。当時は、ガラケー向けFlashゲームがブーム。私も携帯電話向けの「Flash Lite1.0」を使いゲーム開発に携わっていました。

そんななか、iPhoneが彗星のように登場し、日本でも急速に普及しました。知っての通り、AppleはiPhoneにおいてFlashをサポートしない方針で、これを受けてか徐々に「脱Flash」の動きは拡大。一方、JavaScriptは発展が著しく、FlashのようなWebコンテンツの代替技術として浸透していきました。

あのFlashが完全に提供終了するとまでは予想していませんでした。が、Web制作に携わる人間として、2012年ごろの私は、JavaScriptも使えるエンジニアにならないと困る時代がくるのでは、と感じた。

そこで「どうやってJavaScriptを勉強しよう。そうだ!自分が触れてきたFlashを、JavaScript環境で動かしたら面白く学べるかもなあ」と考えたんです。本当にそんな軽いノリで、2013年にswf2jsの開発を始めました。Flash自体、アニメーション描画やレンダリング、ActionScriptの動作など、さまざまな技術が詰まったツール群なので、勉強の題材として最適だと思ったんです。

AdobeはSWFのバイナリの仕様書を公開していたので、開始から1年ほどは、ひたすら仕様書を読み解き、JavaScriptで読み込むという実装作業を進めていました。仕様書の理解が追いつかず、何度も実装をつくり直す日々でした。投げ出したくなる時もありましたが、2014年には、FlashLite1.0でつくられたSWFなら、swf2jsで動かせるようになったんです。

——Flashファイルのバイナリを解析し、JavaScript環境で描画し直す技術をつくったわけですね。開発を通して、どのような学びを得られましたか。

家永:「なにかをつくる前にまずは仕様書を理解する」という学びが、その後のエンジニアとしてのスキルを大きく伸ばしてくれました。swf2jsに取り組む前の私は、ネット検索して出てきた技術記事の実装をコピー&ペーストして動作確認をしていたダメダメなエンジニアでした。

しかし「仕様書を理解する」ことを学んで以降は、常に公式のドキュメントを参照し、関数や引数などの意図や役割を理解してから実装に取り組むように変わりました。いまも第三者の記事を参考にすることはありますが、まずは公式の仕様書を理解してから検索しています。当たり前のことを、当たり前にこなせるようになりました。

ライブラリには苦情ばかり 折れた心を突き動かしたのは長男との会話

——JavaScriptの勉強のために始めたとはいえ、開発作業は聞くだけで大変そうです。途中で挫折することはなかったんですか?

家永:もちろん、しんどいことは多かったです。まず、今はそうでもないですが、公開後から2020年ごろにかけて、swf2jsには苦情じみた改修要請が多く寄せられました。1か月に5件前後のペースで、「このFlashが動かないんだけど、この時期までに直してくれる?」といった具合で。

海外ユーザーからも多かったです。英語だったらまだ読めるのですが、見たことがないタイプの言語からも多数。内容は理解できないんですが、SWFファイルが添付されているので「これ動かして」という趣旨だろうというのだけはなんとなく理解できる、みたいな(笑)。エミュレーターの技術向上につながるのはいいのですが、一方的に改修を命令されるのは辛いものがあります。

2016年には一度、完全に心が折れました。「ActionScript 3.0」でつくられたSWFを動かすための実装に取り組んでいたときのことです。これが、本当に大変でした。「1.0」や「2.0」と比較して、「3.0」の仕様は全くの別物なんです。クラス構成、オブジェクト構成、バイナリの構成。どれもこれまでとは異なるので、ほとんど一からつくる必要がありました。相変わらず苦情のようなメールは絶えないし、何度「もう無理…やめようかな」と思ったか。

さらに、同時期に次男が生まれ、仕事と私生活が大忙しに。とうとう開発を休止しました。転機は長男との会話です。そのまま1年が経った2017年のある日、「すぐにスポーツがうまくなる方法はないか」と息子が質問をしてきました。

なんとなく私は、「何かを身につけるには最低でも10年は必要なんじゃない?」と返事をしたのですが、ふと「あれ…そう言う自分は10年もswf2jsの開発を続けていないじゃないか…!?」と気づき、慌てて改修を再開したのです。父親としての意地でしょうか。

——勉強を目的として開発を始めた家永さんらしいエピソードですね。苦労は多かったようですが、開発を通してうれしかったエピソードはありますか?

家永:無料Flashゲームを掲載しているサイト「GAMEDESIGN」のオーナーさんから、2016年ごろに「面白いことをしていますね」と連絡があったのは印象深いです。なんと、開発支援という名目で援助金をいただいたのです。個人でつくっていたプロダクトが評価されるのは、本当にうれしい。「作品」が「製品」に昇華した気分で、大きなモチベーションになりました。

さらに17年のある日、バンダイナムコオンライン様から「swf2jsで動かしたいFlashゲームがある」と、Webゲーム移植の相談を受けました。驚きすぎて、返事に1週間に悩みました。なにせ、あのバンダイナムコグループですから。

話の規模の大きさから、最終的には個人では請け負いきれないと考え、私の上司と話し合い、会社を通してこの依頼を受託することになりました。個人ではなく、自社のプロジェクトになったわけです。突然のお話に、職場の人たちは困惑するかと思いきや、「個人で開発していたものがこんなに評価されるようになってよかったね!」と祝ってくれました。

会社で請け負った後も、開発自体はほとんど自分ひとりで進めていたため、作業内容にさしたる変化はなかった。しかし、これまで個人開発として終業後に子どもたちが寝静まってからコツコツとswf2jsを1~2時間ほど毎日触っていたところ、会社の就業時間をフルであてられるようになったわけです。開発は一気に進みましたよ。

▲取材はオンラインにて実施しました

Next2Dに見出した、つくりたいものを「好き勝手」につくれる喜び

――レガシーなコンテンツを現代によみがえらせるswf2jsに取り組み続けてきたわけですが、Webコンテンツの歴史において家永さんが触れ続けてきたFlashはどんな役目を果たしたと思いますか?

家永:自由度が高く思うがままの表現ができたFlashには、多くのクリエイターが集まりました。その表現技術の幅の広さを通してさまざまなインタラクティブな作品が生まれ、Webコンテンツの可能性をユーザーに見せてくれた

結局、提供終了後も、当時のクリエイターらは別の新たな表現手段を見つけて、それぞれにおいてインタラクティブな分野で活躍し続けています。あのころにFlashコンテンツをつくっていた私自身、今はこうしてNext2Dに取り組んでいる。

結果として、環境やパソコンスペック、扱う技術に関係なく、Webの世界では創意工夫でいろんな表現ができるとFlashは証明してくれたのだと思います。「発想を実現するのに無理なことなどはない」と、教えてくれました

――一方で、現在はNext2Dの開発に注力していますね、その理由を教えてください。

家永:Flashは先進的でしたが、現代の環境にはそぐわない仕様が当然、多く含まれています。現代のニーズに合っている要素だけ抜き出したらもっと高性能で軽快なツールに生まれ変われるだろうに…。そう考えていたら、「よし、実現しよう」という欲が芽生えたんです。Flash Playerがいよいよサービスを終了した直後、21年1月のことでした

そうして、Next2Dプロジェクトとして、まずはFlashと似た操作感でアニメーションをつく作れる「Animation Tool」をつくり始めた。2021年2月ごろに着手し、8月末にリリースしました。他にも、描画ツールの「Player」と、クリーンアーキテクチャー、ドメイン駆動開発、テスト駆動開発など、エンジニアの好むアーキテクトで開発が行える「Framework」をこれまでにリリースしています。

現代に合わせた点として、たとえば、Flashではコンテンツやデータの管理によくXMLが用いられていました。現代のWeb開発ではJSONを用いる方が一般的なので、Next2Dでは他アプリとの互換性や軽さをふまえJSONデータで運用できるようにしています。

またFlashではレンダリングエンジンにOpenGLが採用されていました。Next2Dでは同じ技術をベースにしているWebGLを用いつつ、Flash並みの動作速度が期待できるようにしています。

ただ、現代のWebコンテンツは他にも課題を抱えていると感じています。アニメーションやゲーム制作において、エンジニアベースな傾向が強いことです。Flashでは、クリエイターが自分で絵を描いて、自分の思うように動かすことができていました。そこもFlashという技術の魅力。一方、Unityといった開発環境で作品を完成させるには、エンジニアリングの知識が必要なケースが多いのです。

Next2Dでは、クリエイティブの大部分をデザイナーやイラストレーターの手に一任できるレベルにまで落とし込める、そんなツールにしていきたい。そこで、エンジニアがUIの配置や単体テストといった実装を進めつつ、アニメーターはアニメーション作業に集中できるという具合に、非同期的な開発ができるように開発しています。

うれしいことに、スマホ向けの「WORLD FLIPPER」というピンボールゲームでテスト導入いただくなど、反響も寄せられています。

▲株式会社Cygamesと株式会社シテイルが共同制作する「WORLD FLIPPER」におけるNext2Dの導入事例

家永:Next2Dの開発はもう、本当に楽しいです(笑)。これまでずっとFlashを触ってきた中で、自分が技術的に好きだと思った部分だけを詰め込んでいるわけですから。swf2jsについてはすでにできあがっていたFlashの仕様に合わせて実装するだけで、私自身で決められることがなかった。その差は大きいですね。現在は好き勝手できています。

私の「好き」な要素を詰め込んで、Flashのようなツールを現代のニーズにあった形でつくっていきたい。今後はNext2DでつくったゲームをWebだけでなくSteamやNintendo Switchに書き出せるようにしたり、アニメーションをUnityなど他のゲームエンジンでも対応させて開発できるようにしたりなど、様々な構想がありますが、個人開発のため開発スピードはゆっくりです。気長に見守っていただけるとうれしいです。

取材・執筆:田村 今人
編集:光松瞳、王雨舟

関連記事

人気記事

  • コピーしました

RSS
RSS