UNIXだってFLASHムービーを作りたい

FreeBSDやNetBSDでも、Macromedia純正のFLASHプレイヤー(ただしFLASH 5)が 動くようになった現在、FLASHはかなりユビキタスな処理系と言えます。
プラグインではなく単体で実行できるプレイヤーも提供されているので、例えば FLASHムービーをMagicPointに埋め込んでプレゼンテーションを作るといった ことも可能でしょう。
しかし再生できるだけでは一人前とは言えません。UNIX環境でもFLASHムービーを 作成したくなるのが人情です。そこで、このページでは、FLASHの概論から始まり、 UNIX上でFLASHムービーを作成する方法について解説します。

FLASHムービーを作成するためには、Mingというフリーのライブラリを用います。 このライブラリは、元もとPHPから利用するものでしたが、PHP以外にもPerl, Ruby, Pyhton, C, C++からも利用できるようになっています。
これを読んで「そうか、rubyで『移動するスプライトのクラス』を書いて、 そのインスタンスに画面を跳ねさせたりできるんだな」と思ったあなた、 残念でした。 できません。 これはMingではなくFLASHの仕様と言っても良いのですが、 FLASHムービーで動的な軌道計算や対話的な処理を行なうためには、ActionScript というスクリプトを記述しなければなりません。MingにはActionScriptのコンパイラ が含まれていて、コンパイルしてムービーに埋め込みます。つまり、 Ruby(またはPerl, PHP, etc.)のスクリプトの中に、ActionScriptが混在する という、今一つ ぐっとこないプログラムを書かなければなりません。言い替えると、Ruby(または Perl, PHP, etc.)とMingの知識の他に、ActionScriptの知識もないと凝ったFLASH ムービーは作成できません。

というわけで、私自身Mingを使いつつActionScriptの資料をいくつか読んでみた のですが、ほとんどに共通している点が、プログラミング言語の解説としては 極めて未熟なものばかりであるという点でした。ActionScriptの説明を書いている 本人がオブジェクト指向プログラミングやそもそもの「プログラミングとはなにか」 を理解していないとしか思えない記事ばかりだったのです。 これはWebページだけでなく、出版されている書籍についても同様でした。
ActionScriptとFLASHが歴史的なしがらみを引きずって、 整理されていない設計になっているという問題もあるのでしょうが、それにしても 理解しづらい資料ばかりで非常に苦労しました。まず悩んだのは 「ActionScriptというのは、 要するにプロトタイプベースのOOスクリプト処理系なのか」という ことでした。説明を読むとそうとしか理解できないのですが、そう明記してある ものがないのです。試しにgoogleで「ActionScript プロトタイプベース」を 検索してみたところ、私が検索した時(2003年4月頃)には、 MacroMediaのFlash MXの説明資料一件しか該当しません でした。これは(少なくとも日本語のWebページのうち)FLASHの 説明を書いている人でプロトタイプベースとクラスベースの違いを理解している人が 存在していない可能性を指唆しています。 正直、唖然としました。 ちゃんとした技術者のための解説資料が必要だと思いました。 これがこのページを作成した動機の一つです。

このページではMingを扱うスクリプトとして、Rubyを採用します。Rubyについての 説明は行なわないので、Rubyの基礎は知っている必要があります。 このページが対象としている読者は「Rubyはだいたい知っている」「Mingはこれから 勉強する」「FLASHはなんとなく知っているけれど作ったことはない」 「オブジェクト指向プログラミングはちゃんと理解している」という人です。

FLASHの概要に始まり、Mingだけで何が作れるのかを説明し、ActionScriptと Mingを組み合わせた例を示しつつ解説し、最後にはCGIとの連携についても 言及します。

注意) この文書では、Ming-0.2aを対象とします。Ming-0.2aではFLASH 5の ムービーしか作成できませんので、ActionScriptについてもFLASH 5のActionScript を前提として説明します。また、rubyはruby-1.6.8を用います。

注意その2) 上の方で偉そうなことを書いていますが、まだActionScriptの解説 の部分は書いていません。ごめんなさい。許してください。

目次

Keywords: Flash, Ming, Ruby, チュートリアル, ActionScript
Masahiko KIMOTO <kimoto@ohnolab.org>
Last modified: Mon Jan 19 19:28:58 JST 2004