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の解説 の部分は書いていません。ごめんなさい。許してください。