2026年5月28日木曜日

flashはSWF仕様とかVM仕様とか公開されてなかったでしょうか?

 公開状況が「時期によってかなり変わった」話なので、仕様公開とVM/実装の公開を分けて確認します。Flashまわりは名前が似ていて罠が多いです。

はい、公開されていました。かなりざっくり言うと、

SWFファイル仕様は公開されていた
Adobe/Macromediaは SWF File Format Specification を公開していました。タグ構造、図形、音声、動画、ActionScriptバイトコードをどう格納するか、などが説明されています。たとえば Version 19 の仕様PDFも流通しています。

VM仕様も一部公開されていた
ActionScript 3.0 用の実行系である AVM2 / ActionScript Virtual Machine 2 については、Adobeの AVM2 Overview という文書があり、ActionScript 3.0、ABCバイトコード、命令セット、実行モデルなどが説明されています。

VM実装も一部オープンソース化された
2006年に Adobe は ActionScript VM を Mozilla に提供し、Tamarin というオープンソースプロジェクトになりました。これは Flash Player 全体ではなく、主に ActionScript VM 部分です。
現在も Adobe の avmplus リポジトリとして、ActionScript VM のソースコードが GitHub に残っています。ライセンスは MPL-2.0 とされています。

ただし重要なのは、Flash Player全体が完全にオープンだったわけではないことです。公開されていたのは主に、

  • SWFというファイルコンテナ仕様
  • ActionScript / ABCバイトコード / AVM2の説明
  • ActionScript VM実装の一部

であって、レンダリング、ブラウザ連携、セキュリティサンドボックス、DRM、動画再生、細かな互換挙動まで含む「Flash Player完全仕様」が丸ごと自由に実装できる形で完全公開されていた、という感じではありません。

つまり結論は、SWF仕様もVM仕様もかなり公開されていた。ただしFlash Player全体の完全再実装に必要な全情報が、きれいに全部公開されていたわけではない、です。
このへんが、Ruffleのような後年のFlash再実装が「仕様書+リバースエンジニアリング+実地互換」で進んだ理由ですね。