Ruffle: Flash Playerエミュレーター
(ruffle.rs)- RuffleはRustで書かれたオープンソースのFlash Playerエミュレーターで、もはや標準サポートされていないFlashコンテンツを最新のOSとブラウザーで再び実行できるようにする
- デスクトップとWebの両方をサポートし、Web環境ではWebAssemblyを使用する
- RustとWASMの保証を活用し、Flashで問題視されていたセキュリティリスクを避けることを目指している
- 一般ユーザーとWebサイト所有者のどちらも、すばやくインストールして実行できるように構成されている
- MIT/Apache 2.0ライセンスで提供され、自由に利用できる無料のオープンソースプロジェクトである
Flashコンテンツを最新環境で実行
- RuffleはFlashコンテンツを最新環境で実行するためのFlash Playerエミュレーターである
- 最新のOSとブラウザーでネイティブに動作するよう作られており、特別な手間なくFlashコンテンツをよみがえらせることに重点を置いている
- 実装言語はRustで、デスクトップとWebの両方を対象としている
- Web実行対象にはWebAssemblyが使われている
セキュリティへのアプローチと配布条件
- RustとWASMの保証を活用し、Flashが抱えていたセキュリティ上の落とし穴を避けようとしている
- ユーザーとWebサイト所有者のどちらも、すばやくインストールして実行できるよう設計されている
- MIT/Apache 2.0ライセンスで配布される無料のオープンソースプロジェクトである
1件のコメント
Hacker News のコメント
学生のころ、多くの人と同じように Flash ゲームに時間を使いすぎたし、ゲーム史の一部が消えてしまうのは残念だった
それでも Ruffle が少しでも復活させてくれるかもしれない。ただ、iOS で Wolfenstein RPG を遊ぶ方法がまだないことも思い出す。2010年にほぼそのゲームだけのために買った iPod があるけれど、バッテリーが永遠にもつとは思えない。とりあえず Adrenaline Challenge でもやりに行くことにする
まだ数年はかかると思っていて、その間は時限爆弾のない最後の Flash バージョンをインストールして使っていたけれど、自分が間違っていてよかった :)
https://github.com/hikari-no-yume/touchHLE/pull/139
New York Historical Society の Slavery in New York 展にある The Merchant's House ページは、品物を一つずつ見せながら「すべてが奴隷制と結びついていた」ことを説明している。オンライン展示には Flash に依存する情報の断片が多く、その中でもこのページは個人的に一番よかった
Ruffle のようなプロジェクトのおかげで、こうした作品を維持できる。展示がなくなった今ではこの内容を見る唯一の方法であり、膨大な歴史研究の成果を引き続き活用できるようにしてくれる
ただし、同じ展示サイトの video galleries は失敗する。展示を見た人たちが専用ブースで残した動画クリップのはずで、関連する記事をたくさん読んでみると、当時のニューヨーク市民が奴隷制をどう見ていたかを示す良い資料だったようだ。「アマチュアのホームビデオのぎこちなさがある。背景ノイズ、長い沈黙、カメラを避ける視線」という New York Times の文言もあった
約400本の動画の一部だと思うが、このページでは Ruffle が正しく動作しない。見ようとしたときにタブから音声が一瞬出たことはあるので、何かは起きているようだが、映像を見たことはない。この分野に詳しい人が状況を分かればいいのだけれど、この資料が失われるのは惜しい
VLC や ffplay のようなツールでオフライン再生できるし、より現代的な再生形式に変換することも可能
AS3 は多くの面で ECMAScript 4 であり、かなり時代を先取りしていたと思う。最近私たちが期待する多くのものは、Flash Player エコシステムではすでに当たり前に使っていた機能のように感じられる
もちろん悪夢のような瞬間もあったが、ブラウザごとの JavaScript がそもそも可能なのかどうかさえ厳しかった時代に、私たちはかなり素晴らしいものを配布できていた
AS3 が時代を先取りしていたというより、Steve Jobs と当時の Adobe CEO のせいで Flash を捨てた結果、私たちが過去へ戻ってしまった感じだ
AS3 は本当に良く、学びやすく、複数の開発者が一緒に拡張するにも安全だった。Flash も末期にはかなり速くなっていたのに、結局すべてトイレに流されてしまった
AS3 は素晴らしい言語だった。Brendan Eich が Lex Fridman のインタビューで短く触れていたが、ブラウザに入らなかった JavaScript の潜在的な後継に近かったという点が興味深かった。新しい標準になっていたらよかったのに、残念
もうソフトウェアを販売しないなら、パブリックドメインとして残すべきだという法律があればいいのに
それでも関連仕様は Adobe が無料で公開している
著作権期間を5年のような合理的な水準に短縮するのもよさそうだ。さらに進めて、著作権を維持するには毎年指数関数的に増える税金を払わせるほうがいいかもしれない
法律を変えれば解決できるかもしれない。例えばアンティークソフトウェア保存法のようなものを作り、どんなソフトウェアでもオープンソースとして公開できるようにし、その法律に基づく措置に関連する訴訟を防ぐことができる
追加のインセンティブも与えられる。商業的に販売されたすべてのソフトウェアは、永久保存するかオープンソースとして公開することを求める、といった形だ。法的に永久保存するのは高くつくので、多くのところがオープンソースを選ぶ可能性が高い
そのため、コードベースの大部分を切り捨てない限りオープンソース化できない場合が多く、その作業は高くつき、公開されたコードの有用性も大きく損なわれる。
それともツール群はすでに復活が難しいレベルで、実質的には過去のカタログをよみがえらせる用途にとどまるのだろうか?
もちろん過去のカタログは途方もなく膨大だが、多くの開発者がFlashゲーム作りを好んでいたという話を聞いたことがあるので、誰かが十分に粘り強くFlashゲームシーンを復活させようとするなら面白そうだ。
今は必須というわけではなく、日々進化している有望なWeb標準もあるが、そういうものが執念深い人たちを止めたことはない。今でも古いNintendoハードウェア向けに新作ゲームを作る方法を探している人たちがいる。
AS2が欲しいなら少なくともCS6までは戻る必要があり、FLAのサポート範囲がずっと広いのでCS5.5のほうがよいと思う。なぜCS6でそれを削ったのかは聞かないでほしい。
Adobeに金を払いたくないなら、Adobeツールチェーンの自由なオープンソース版であるApache Flexを使える。もちろんコマンドラインのコンパイラツールで、AS3ファイルしかコンパイルしないので、グラフィックは別途作って結び付ける必要がある。
ベクターアートなら、SVGをSWFに変換する方法を探し、Flexで妙なクラス宣言の魔法を使ってメインSWFに含め、そこから生じる微妙なマスキング問題まで対処することになる可能性が高い。
低帯域でも動作し、拡大縮小可能で、クロスプラットフォームな単一ファイルのアニメーションを作り出せる、手に取りやすい制作ツールだった。
私たちはまだその喪失を埋められていない。JavaScript + canvas + Webスタックはめちゃくちゃだ。Ruffleランタイムが素早く起動できるなら、新しいFlashを作り始めると思う。
macOSではそれらのバージョンがすべて32ビットなので、より複雑になる。M1 MacではWindows VMを構成してその中でFlashを動かすほうがよく、Intel Macでは32ビットをサポートする最後のバージョンであるmacOS Mojaveを別パーティションにインストールできる。
実際にはWebAssembly内のVMでLinux全体を動かし、その中で正式にライセンスされたAdobe Flash Playerを実行する。そしてそのFlashライセンスは別途Harmanから取得する必要があるようだ。今はFlashの知的財産権をそちらが持っているように見える。
https://labs.leaningtech.com/cheerpx/for-flash
彼らとは何の関係もなく、いつか興味本位で調べただけだ。
ただし、Flashを動かすためにLinux全体をエミュレートしているわけではありません。PPAPIをエミュレートし、Flash Playerをx86 JITであるCheerpX上で実行しています。
YuriがCXFFアーキテクチャをここで説明しています:
https://youtu.be/7JUs4c99-mo?t=1045
完全なLinuxシステムのエミュレーションが必要なら、それもあります: https://webvm.io
インターネットと若い初心者プログラマーたちは、Flashとともに本当に価値のあるツールを失ったのだという思いは今もある。セキュリティモデルをきちんと機能させられなかったのが残念だ。Flashアプレットは機能が豊富で、参入障壁も珍しいほど低かった。
問題があったのは確かだが、ほとんどのソフトウェアはそういうものだし、Flashは本当に時代を20年ほど先取りしていた。Flashが死んだ後、Webは信じられないほど味気なくなった。
私の陰謀論は、AppleとGoogleがモバイル対応を強制するためにAdobeに金を払ってFlashを潰したというものだ。
Flashを一行も書いたことはないし書きたいとも思わないが、Flashサイトがどれほど壊れていたかはいまだに悪い記憶として残っている。
ウィジェットはネイティブのように振る舞わず目立っていたし、Firefoxではキーボードフォーカスの問題が絶えず、動画アクセラレーションはまともに効いているように見えずバッテリーを食い潰していた。削除するにはAdobeのFlashアプリを起動しなければならなかった永続クッキーのようなプライバシー上の悪夢もあり、権限処理もホストシステムやブラウザを無視していた。
ほぼ常時発生していたセキュリティと安定性の問題も忘れがたい。個人的にはFlashが死んでくれてよかったと思っている。
Flashはデスクトップでも微妙だったが、モバイルが重要になりつつあった時期に、モバイルではそれよりはるかにひどかったために死んだ。
アニメーションは作れたが、当時の私たちの大半が必要としていた、あるいは望んでいたものはそれではなかった。
Flashを好んだ集団は、マーケティング部門と、ゲーム開発者になりたかった人たち、そしてそのゲームで遊んでいたティーンエイジャーだけだった。
少なくとも開発者の観点では、単一ベンダーの全部入りSDKで作業するほうが、このnode_modulesというがんの塊よりずっとましだ。
古い blogs.adobe.com の記事に行くと、現在は次のようなライブエラーが表示される:
Fastly error: unknown domain: blogs.adobe.com. Please check that this domain has
been added to a service.
上記のエラーはこの URL で出たもの: https://blogs.adobe.com/asset/2012/06/inside-flash-player-pr...
何年もかかったが、結局は部分的にしか動作しなかった。当時は Flash がブラウザでまだ支配的だったにもかかわらず、Gnash が消えるまで誰もまともに移植できなかった
Ruffle はどうやってこんなに早く動くようにできたのか気になる