Flashは滅びぬ、形を変えて復活する! 喪失される電脳文化を残そうと奮闘する人々

Flash player イメージ

Jarretera / Shutterstock.com

Flash終了と消滅する膨大なコンテンツ

 Adobe Flash Player のサポートが終了するという話を、何度か書いてきた。2020年12月31日をもって、Adobe による Flash Player の配布と更新が終了する(Adobe)。  このタイミングをもって、インターネットにある膨大な数の Flash コンテンツが、実質上利用不能になる。  Flash コンテンツには、動画やゲーム、アプリケーションなど、様々ある。このうち、アプリケーションは、必要ならHTML5に移植されているだろう。そして動画も有名なものなら、撮影してニコニコ動画や Youtube に挙げられたりしている。しかし、多くの動画やゲームは、そのまま消滅してしまうことになる。これは大きな文化の喪失である。  インターネットのある時期、Flash コンテンツは世界を席巻していた。新しい動画をみんなで楽しみ、ゲームで時間を潰した。そうしたものが、ごっそりと消えてしまうのは恐ろしいことだ。  現実世界で言えば、歴史上の、ある年に出版された本が、この世からすっぽりと消えてしまうのに等しい。本を手に取ることも、読むこともできない。そうしたことが、デジタルの世界だと簡単に起きてしまう。デジタルの情報は、紙の情報よりも寿命が短いと、最近よく感じる。  こうした文化の喪失に、異を唱える人たちもいる。Flash の消滅に対しては、Ruffle を開発している人たちがそうだ。  Ruffle は、Flash Player エミュレーターだ。エミュレーターは、特定の環境向けに開発されたソフトウェアを、別の環境で動かすためのソフトウェアやハードウェアのことだ(e-Words)。  エミュレーターとしてよく見られるものには、ゲーム機のエミュレーターがある。ゲーム機のソフトを、パソコンやスマートフォンで動かすためのプログラムは、よく知られている。著作権上の問題がある使い方もあるが、古い作品の移植にエミュレーターを使うこともある。  Ruffle は、Flash Player がインストールされていないWebブラウザ上で、Flash コンテンツを動かすためのソフトウェアだ。サイトに行き、demo のページを開くと、サンプルを実行できるだけでなく、ローカルに保存している .swf ファイル(Flashコンテンツのファイル)を読み込んで実行できる。  本当にきちんと動くのだろうかと思い、昔練習で作ったFlashコンテンツを読み込んでみた。驚くことに、きちんと動いた。「おお、これは凄い!」と、ちょっと感動した。
単純な動画を、Ruffleで実行

単純な動画を、Ruffleで実行

 Internet Archive では、Ruffle を使うことで、Flashコンテンツをアーカイブして閲覧可能にするという(ITmedia NEWSInternet Archive Blogs)。この Ruffle について見ていこう。

Flash Player エミュレーター Ruffle

 Flash Player エミュレーター Ruffle は、Rust というプログラミング言語を利用して開発され、WebAssembly という技術を使って実行される。  せっかくなので、技術的な話を少ししようと思う。Rust というプログラミング言語は、近年プログラマーに非常に注目されている。Webブラウザの Mozilla Firefox で有名な Mozilla の中の人が作り始めたプログラミング言語で、Mozilla が支援している。プログラミング言語としては、かなり後発で新しい。  特徴としては、速度と安全性がある。Rust は、C や C++ といった高速なプログラミング言語と同等の速度が出る。この C や C++ といったプログラミング言語は、注意してプログラム書かないとメモリ関係のバグが紛れ込む。しかし、Rust では、メモリ安全性が保証されているのでバグを避けられる。こうした問題が解決されているのは非常にありがたい。  速いし安全だし、開発環境を整えるのも簡単だし、ということで、Rust は今急速に成長しているプログラミング言語だ。  もう1つの技術についても解説する。WebAssembly という、こちらも近年注目されている技術だ。  Webブラウザでプログラムを動かすとなると、JavaScript を使うのが一般的だが、最近では他の方法もある。それが WebAssembly を利用したプログラムの実行だ。  WebAssembly を利用すれば、Webブラウザ上で、バイナリコードを実行できる。このバイナリコードは、C や C++、Rust、Go など、他のプログラミング言語で書いて、出力できる。そのため、高速な処理が必要な、負荷の高い計算を WebAssembly でおこなうといったことが可能になる。  Ruffle は、Rust でプログラムを書き、WebAssembly の技術で実行されている。そのため、JavaScriptで書くよりも高速で動作する。  Ruffle は、よいことずくめのように見えるが、まだ発展途上のために制限が多い。  Flash コンテンツの中では ActionScript というプログラムが動作する。この ActionScript には、「AVM 1」(ActionScript 1&2、2006年6月以前)と「AVM2」(ActionScript 3、2006年6月以降)の2つのグループがある。  Ruffle は、この ActionScript を全て再現できていない。本記事執筆時点で、AVM 1 の言語の再現率は70%、API(命令)の再現率は35%だ。また、AVM 2 では、言語の再現率は5%、APIの再現率は1%しかない。  動画を再現するのにはよいが、ゲームなどを完全に再現するには、まだ少し時間が掛かりそうだ。
次のページ
今Webで起きていること、WebAssemblyの世界
1
2