SWF ファイル形式とは?
拡張子 .swf を持つファイルには、1996年にFutureWave Softwareによって最初に作成されたバイナリマルチメディア形式で保存されたアニメーション(インタラクティブなものを含む)が含まれています。名前は Small Web Format の略で、インターネット上でコンパクトで帯域幅に優しいアニメーションを配信するという当初の目的を反映しています。
この形式はMacromedia、後にAdobeによって買収され、以下の作成と保存に使用されています:
- オーディオやビデオを含むマルチメディアコンテンツ
- ベクターグラフィックスとビットマップ
- ActionScriptバイトコードとインタラクティブなアプレット
歴史的に .swf ファイルの作成に使用されたアプリケーションには、Adobe Flashとその後のAdobe Animateが含まれます。また、SWFToolsなどのオープンソースツールも利用可能でした。2008年、Adobeはこの形式の仕様を部分的に公開し、GoogleやYahooなどの検索エンジンがアニメーション内のコンテンツをインデックス化できるようにしました。この形式は長年にわたって発展しました。初期のバージョンではベクターグラフィックスのアニメーションのみが可能でしたが、後のリリースではストリーミングオーディオやビデオ、そして基本的な3Dアニメーションへと可能性が拡張されました。
.swf ファイルの再生に必要なブラウザプラグインであるAdobe Flash Playerは、2020年12月31日にサポートを終了しました。ファイルは現在でも、スタンドアロンのRuffleエミュレータを使用するか、Internet ArchiveのFlash保存プレイヤーを介してブラウザ外で再生できます。ソースプロジェクトは通常 .FLA ファイルとして保存され、配布用に .swf にコンパイルされました。関連する形式には、Flashビデオストリーム用の .FLV や、再利用可能なFlashコンポーネントライブラリ用の .SWC があります。
セキュリティと安全性
リスク: MEDIUMSWFは悪名高いマルウェアの媒介者でした。Flash Playerにはリモートコード実行(RCE)に関する重大なCVEの長い歴史があり、それが廃止された大きな理由の一つです。レガシープラグインは消滅したため、ブラウザでのドライブバイSWF攻撃はもはや現存する脅威ではありません。残存するリスク:(1) SWFにはネットワークコールやURLを開くことができるActionScriptが含まれているため、信頼できないファイルはオフラインのデバッグプロジェクターではなく、サンドボックス化されたRuffle(推奨)で実行してください。(2) 無害なアニメーションを装った悪意のある .exe «プロジェクター» ファイル。(3) サードパーティの «コーデック» サイトから廃止されたFlash Playerを絶対に再インストールしないでください。それらのインストーラー自体が一般的なマルウェアの罠です。
形式の詳細
概要SWF ファイルを開くプログラム
技術的詳細
詳細仕様| マジックバイト | FWS (46 57 53) = 非圧縮、CWS (43 57 53) = zlib圧縮、ZWS (5A 57 53) = LZMA圧縮 - すべてバイトオフセット0 |
| バージョンおよび長さフィールド | バイト3はSWFバージョン番号(1-46)をエンコードし、バイト4-7は非圧縮時のファイル全長をリトルエンディアンのuint32として格納します |
| MIMEタイプ | application/x-shockwave-flash |
| 圧縮 | なし(SWF 1-5)、8バイトのヘッダー以降にzlib適用(SWF 6+、CWSシグネチャ)、8バイトのヘッダー以降にLZMA適用(SWF 13+、ZWSシグネチャ) - 最初の8バイトは圧縮されません |
| 座標単位 | Twip(1/20ピクセル)。すべての空間値は、可変長SWFビットフィールドを使用したtwip整数として格納されます |
| タグベースの構造 | コンテンツはタグ付きレコードとしてエンコードされます。2バイトのショートヘッダー(10ビットのレコードタイプ + 6ビットの長さ)、または63バイト以上のペイロード用の6バイトのロングヘッダー |
| ベクターグラフィックス | 2次ベジェ曲線のエッジを持つSHAPEレコードを介して定義された形状。塗りつぶしタイプには、単色、線形/放射状グラデーション、およびビットマップが含まれます |
| スクリプトエンジン | ActionScript 1 & 2はAVM1(スタックベースのインタープリタVM)で動作し、ActionScript 3(SWF 9+)はAVM2(レジスタベース、一部のランタイムではJIT搭載)で動作します |
| ビデオコーデック | Sorenson Spark (SWF 6+)、Screen Video (SWF 7+)、On2 VP6およびアルファチャンネル付きVP6 (SWF 8+) |
| オーディオコーデック | 非圧縮PCM、ADPCM、MP3、Nellymoser (SWF 6+)、Speex (SWF 10+) |
| フォントの埋め込み | TrueTypeアウトラインがSWFシェイプレコードに変換されます。DefineFont2およびDefineFont3タグには、完全なUnicode文字テーブルが含まれます |
| 3D変換 | PlaceObject3タグ(SWF 11+)により、表示リストオブジェクトの3D回転と投影を可能にする4×4透視行列が追加されます |
| バイナリデータの埋め込み | DefineBinaryDataタグ(SWF 9+)により、任意の生のバイナリペイロードを .swf コンテナ内に格納できます |
| タイムラインモデル | フレームベースの表示リスト。各フレームは、シーングラフに適用されたPlaceObjectおよびRemoveObjectタグの差分であり、完全なキーフレームスナップショットではありません |
| リリース日 | 1996 (FutureSplash Animator); Adobe published the SWF File Format Specification, now withdrawn after Flash EOL |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | web.archive.org |
SWF の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。SWF ファイルについて最初の質問をしてみましょう。