Flashエミュレーター「Ruffle」はなぜ本家Flashの問題点を解決できるのか

Adobe Flash Playerがセキュリティの問題などから2020年末に終了することが発表され、Flashで作られたゲームなどのコンテンツをなんとか次世代につなげようという試みがいくつか出てきています。

それらの中でも注目を集めているのが、ブラウザ上で動くFlashエミュレータRuffleです。

ruffle.rs

Ruffleはユーザーがブラウザの拡張機能やデスクトップアプリとして利用可能なほか、Webサイト管理者側がWebサイト側に設置すればユーザーが特に何もしなくてもFlashコンテンツを再生することが可能です。

つまり、ユーザーかWebサイト管理者側のどちらか一方が導入していれば、Flashコンテンツを再生することができます。

開発は急速に進められており、多くのFlashアニメーションが再生可能なだけでなく、最近では「くまのプーさんホームランダービー!」「ハム将棋」などの人気ゲームもある程度動作するようになりました。

 

しかし、もともとFlash Player廃止の流れができたのは、AppleGoogleなどのブラウザベンダーがFlashのクローズな開発体制に起因する問題とセキュリティに関する問題を指摘してFlashを締め出そうとしたためです。

Flashの代わりにRuffleができても、それらの問題点がクリアできなければ歴史が繰り返すだけです。

 

ではRuffleではなぜそれらの問題が解消されているのでしょうか。

この記事では、それをできる限り技術的な知識がなくても理解できるように説明していきたいと思います。

そもそもFlashはなにが問題だったのか?

 Flashはあれだけ広く使われていたにもかかわらず、AppleGoogleの働きかけもあり、サービス終了の運びとなりました。

もちろんAppleGoogleにとっては他社の技術がWebを実質支配している状況は好ましいものではなかったと思われますが、だからといって彼らの好き嫌いだけではここまで広まった技術を排除することは難しいでしょう。当然Flashを批判する合理的な理由がありました。

Flashを終了させなければならなかった理由は、主にFlashがオープンなWeb標準でなかったということにあります。

Web標準だと何が嬉しいのか?

Webには業界標準が存在し、Flashはこの一部ではありません。

では、標準であることで、我々にどういうメリットがあるのでしょうか?

1.互換性が確保できる

我々が普通のアプリを使うとき、普通は使っている端末によって使えるアプリは違うはずです。「Android用のアプリだからiPhoneでは使えないや」「Windowsのあのアプリがスマホでも動いたらなあ」なんてことを何度も経験しているのではないでしょうか。

 

しかし、Webに目を向けてみるととたんに事情が変わります。

例えばGoogleにアクセスすれば、AndroidでもiPhoneでも、WindowsのようなPCでさえ問題なくWebが利用できます。

更にはWebを見るのに利用するブラウザ(Webを閲覧するアプリ)がChromeでもSafariでもFirefoxでも、殆どのサイトは同じように利用できるはずです。

PC用に作られたWebサイトにスマホでアクセスするとレイアウトが崩れることもあるとは思いますが、それでも「全く使えない」ということはそうそうないはずです。(たまにマーケティング的な事情でスマホ以外からのアクセスを禁止しているサイトなどもありますが、それはまた別のお話……) 

 

これはWebを作成するための標準が公開されており、各ブラウザの開発者がその標準を満たすようにブラウザを開発しているためです。

標準がオープンであることで、ブラウザ開発者の方々は互換性のあるブラウザを提供でき、Webのコンテンツ提供者は各環境への対応の労力を減らすことができ、我々は自由な端末からWebを利用することができるのです。

 

2.一社の都合に左右されない

仕様がオープンかつ業界標準として制定されるということは、一社の都合に左右されにくいということです。

 

例えばiPhoneはオープンではなく、仕様の決定権はAppleにあります。

iPhoneには数々の素晴らしいアプリがありますが、仮にAppleが「iPhoneの開発をやめます!」といった途端これらのアプリはすべて使えなくなってしまいます。

一方、これがオープンな規格であれば、一社がやめてしまったとしても誰かが開発を続ければ、我々がアプリやコンテンツにアクセスする手段は担保されます。

(もちろん開発者の方が開発を続けてくれなければ何もできなくなるので、開発者の方への感謝も忘れずに!)

【2020/10/28追記】

Flashについてはもともとフォーマットがオープンであるというご指摘を受けました。

この部分については指摘を受け私自身の中でも整理できていなかったことに気づきました。浅い理解により不正確な記事を作成してしまったことをお詫び申し上げます。

Appleによる2007年の指摘は「仕様は公開されているが、全ての機能追加や価格設定などの決定権はAdobeにあり、本当の意味でのオープンではない」というものです。

Thoughts on Flash

一方でAdobe側の反論は以下のとおりで、Flashの仕様はオープンであるという立場です。

動画:Adobe CEOがジョブズに反論:「批判は偽装工作」 - Engadget 日本版

 

また、Ruffleよりも古くから開発されていたFlashの互換プレイヤーGnashのWikipedia記事によれば、かつては互換プレイヤー開発へのFlashの仕様書の利用は禁じられていたようですが、2008年のライセンス変更によりこれが可能になったとのことです。(Wikipedia記事の参照元Adobeのプレスリリースはリンク切れのため参照できず。)

Gnash - Wikipedia

 

【追記終わり】

 

3.セキュリティを担保しやすい

まず、「仕様がオープンなら、攻撃者も中身がわかるんだから攻撃しやすいんじゃないの?」と思われるかもしれませんが、実は一概にそうとは言えません。

オープンな仕様が多くの人の目に触れれば、セキュリティ上の問題ついての指摘や改善方法についての議論が活発に行われることが多いのです。

世界中の多くのサーバーに使われているLinux OSはオープンソースで開発されていることからも、オープンな仕様はセキュリティを担保できることがわかると思います。

 

Flashについていうと他にも問題があります。

現在、Flashをブラウザで再生するために、「FlashというAdobe社が作っている外部部品を各社のブラウザに組み込んでいる」という状態です。

このFlashはブラウザの一部ではないため、「ブラウザ本体とFlash」というセキュリティの二重管理が必要になってしまいます。

ブラウザだけ最新に保って安全にしていても、何かの拍子にFlashだけ古い状態になっていれば、その瞬間Flashが穴となって安全性が失われてしまうのです。

【2020/10/28追記】

この部分について、Google ChromeMicrosoft Edgeなどの近代的なブラウザでは、FlashPlayerを組み込んで一緒にアップデートできるようにするような改善がなされていました。

しかし、ブラウザとは別の仕組みでコードが実行するという点で、ブラウザとFlash Player両方のセキュリティを高いレベルで保たないといけないという状況はかわりませんでした。

また、先述のAppleによるiPhoneでのFlash非対応の方針や代替技術の普及によるシェアの低下もあり、サポート終了の流れとなったようです。

【追記終わり】

 

これらの理由から、オープンでないFlashをWebの世界で使い続けることはイノベーションを阻害する上に危険であると判断され、Flashは廃止の道を歩んでいるのです。

 

そこでRuffle 

Ruffleはこれらの問題を解決することができます。

RuffleはFlashプレイヤーの代わりをするものですが、オープンソースで開発されています。

我々はこれを無料で使うことができ(開発者に寄附をすることもできます!)、一社の都合に左右されることなくFlashコンテンツを堪能することができます。

 

また、RuffleはWeb標準の上で動作することも大きな特徴です。

本来のAdobe Flash PlayerはWebの上で動作しているように見えても、実際にはブラウザと独立したコードを実行していました。

しかし、Ruffleはブラウザの中で動作するのです。

Flash Playerに問題があれば、最悪の場合PC全体への攻撃が可能になってしまう場合がありました。一方、仮にRuffleになにか問題があったとしても、あくまでブラウザの中で動いているため、その上層のブラウザのセキュリティ機能でせき止めることができ、被害を最小限に抑えることができます。

 

Ruffleは、安全かつオープンなFlash Playerの代替なのです。

 

おわりに

Ruffleのおかげで、技術的にはFlashの問題点の多くを乗り越え、Flashコンテンツの多くが生き残ることができるところまできています。 

しかし、技術的に生き残れようとも、Webの世界ではコンテンツの提供者が公開を取りやめるといえばそれでコンテンツは失われてしまいます。

冒頭で取り上げた「ハム将棋」は今年頭に突如ドメインがなくなりましたし、「くまのプーさんホームランダービー」についても、Yahoo!きっずなどでは今年12月での提供終了が発表されているのです。

 

そのような状況を避けるために、Ruffleを世に広めることが重要だと思います。

Flashコンテンツがまだ楽しめるということさえわかれば、素晴らしい作品たちが歴史の闇に埋もれることを回避できるかもしれません。

そういうわけでみなさんもRuffleを拡散してほしいです。

 

 

私の記事は一般ユーザーの方向けに書きましたが、Flashコンテンツの作者様向けには以下の記事がよくまとまっていて素晴らしいと思います。

trap.jp

 

参考リンク

www.itmedia.co.jp

 

【2020/10/28追記】

詳しい方向けの解説

割と詳しい方にも読んでいただけているようなので、そういう方向けの解説も追加いたします。

用語がいまいちピンと来ない方は飛ばしてください。

 

セキュリティ

RuffleはRustで実装され、WebAssemblyで動くFlashエミュレータです。(ネイティブなスタンドアロン版もあります。)

WebAssemblyで動くので、ブラウザのサンドボックス上で動作します。

OS上で直接実行する場合と異なり、ブラウザ本体による保護の恩恵を受けられるため、(ブラウザ本体に脆弱性がない限り)ブラウザの外に影響が及ぶことはありませんし、SWFが設置されているのと別のサイトに関連する情報を取得される心配もほぼありません。

仕組み上Adobe Flash Playerが抱えていたセキュリティ上の問題を緩和できるのです。

 

また、Ruffleはwasmなので、ユーザーがインストールする以外にコンテンツ提供者側がWebサイト上に設置することも可能です。

この場合、サイト管理者側が用意したFlashコンテンツ以外が再生されることはまずないため、セキュリティ上の問題につながる可能性は更に少ないのではないかと思います。

 

パフォーマンス

体感ですが、スタンドアロン版であればAdobe Flash Playerと遜色なくサクサク動きます。

wasm版は現時点ではAdobe Flash Playerと比べるとパフォーマンスは落ちるように思いますが、私のPC(CPU:Ryzen 7 3700X)では多くのゲームは遊べそうなパフォーマンスが出ていました。

Ruffleはハイペースで開発中のソフトウェアであり、WebAssembly自体も新しい技術であるため、今後パフォーマンスが改善することもあるのかもしれません。

 

Flashスタンドアロンプレイヤーではだめなのか

本家Adobe Flash Playerにはシステム時刻が2021年になると動かなくなる仕掛けがすでに入っているそうです。

【2020/10/29追記】

スタンドアロン版は時限式の仕掛けを持っていないと思われるとの捕捉をいただきました。

【2020/10/29追記終わり】

また、Flashゲームには、SWF1つで完結しないものもあり、それをスタンドアロンプレイヤーで再生するのはハードルが高い気がします。

また、Ruffleをサイト側に設置することでユーザーがRuffleを導入することなくFlashコンテンツを見られるというメリットは、コンテンツ提供者にとっても嬉しいことだと思います。

実際RuffleのスポンサーにはFlashコンテンツを提供するプラットフォームが含まれます。

【追記終わり】

 

【2020/12/15追記】

おまけ:日本語対応デモ

Ruffleは非英語コンテンツに関する不具合をいくつか抱えています。

それらの問題のいくつかをを試験的に修正したものを作成いたしましたので掲載します。

この変更でテンミリオンやハム将棋の文字表示に対応します。

github.com

 

 

【追記終わり】

 

更新履歴

2020/10/27 初版

2020/10/28 追記・本文中の表現を一部修正・誤字を修正

2020/10/29 スタンドアロン版について追記