FirefoxにAdobeからJavaScript 2.0がプレゼントされた

 米国時間11月7日、Web時代のアプリケーションを総合的に持つAdobe Systemsが、ActionScript Virtual Machine(AVM)をMozilla財団に寄贈すると発表した。AVMは「Adobe Flash Player」に採用されているスクリプト言語処理機能。Firefoxの開発・普及を推進するMozilla財団では、これを受けて「タマリン・プロジェクト(Tamarin Project)」を発足し、2008年にまでにこの技術をFirefoxに統合することを目標に活動を始めた。

 どういうことか?

 ニュースの本質は「タマリン」という名称が暗示している。「Google」のイメージ検索で「Tamarin」を探すと一目で分かるが、タマリンは一般的には「ゴールデン・ライオン・タマリン」を指す。美しいモンキーだ。クモザル(Spider monkey)もかわいいけれど……と思ったところでこのシャレの意味が分かる。プログラムの世界には「SpiderMonkey(JavaScript-C) Engine」という言葉があるのだが、これはJavaScriptを処理する技術のコードネーム。現在、FirefoxのJavaScript処理はクモザル(SpiderMonkey)を利用しているのだが、これがタマリン(Tamarin)に変わるわけだ。

 何が一番大きな変化か?

 「SpiderMonkey」は「JavaScript 1.7」なので、大きな枠組みから見ると1.0の範囲内だが、Tamarinは通称「JavaScript 2.0」と呼ばれている分類になる。これは、JavaScript言語が大きく変わることを意味している。その変化を一言で言えば、ルーズなJavaScriptが、JavaやC#のように本格的なプログラミング言語になるということだ。機能や提供できるサービスも格段に向上するし、処理も速くなる。と同時にプログラミングも一層難しくなる。

 技術的には、JavaScriptは「ECMAScript」としてECMA(ヨーロッパ電子計算機工業会)が規格化しているもので、JavaScript 1.7や、「Internet Explorer」でJavaScriptとして機能する「JScript 5.6」は「ECMA-262, edition 3(3版)」に分類されている。しかし、ECMAではすでに edition 4(4版)の草案策定が最終段階に近づいている。このECMA-262, edition 4に最も忠実であり、処理性能も高いと見られていたのがFlashで動作・機能している「ActionScript」だ。ActionScriptはAdobe(元はMacromedia)という企業の、さらにFlashという特定のアプリケーションのみのスクリプト言語だったため、改版による進化が速かった(おかげでプログラマーやテクニカルライターは泣かされたけど)。ActionScript3.0(JavaScript2.0同等)の処理機能がそっくりMozilla財団に寄贈されることで、FirefoxはInternet Explorerを抜いてさらなる進化を遂げる可能性が出てきた。


JavaScript2.0ってどんな感じ

 具体的にJavaScript2.0ってどんな感じなのだろうか。何が現在のJavaScriptと違うのだろうか。Mozilla財団ではすでに「JavaScript 2.0」の構想を発表しており、次のような特徴を挙げている。

・Class definition syntax, both static and dynamic
(静的・動的にクラス定義を使うシンタックス)

・Packages, including a namespace and versioning mechanism
(名前空間やバージョン管理機構を持つパッケージ)

・Types for program and interface documentation
(プログラムとインターフェース文書の各種タイプ)

・Invariant declarations such as const and final
(constやfinalなど定数宣言を持つ )

・private,internal,public,and user-defined access controls
(変数や関数などのアクセス制限にprivate,internal,publicを指定する)

・Machine types such as int for more faithful communication with other programming languages
(他のプログラミング言語と正しく互換性のあるintタイプなどを持つ)

 実際にどんな感じなのか、今回寄贈された処理系(Tamarin)が扱うActionScript 3.0で「Hello world」と呼ばれるプログラムを書いてみよう。これは通常、画面(標準出力)に「Hello, world!」という文字を表示するだけの単純なプログラムだが、どのプログラミング言語の紹介でも必ず提示されるものだ。

HelloWorld.as

package {
    import flash.display.*;  
    import flash.text.*;  

    public class HelloWorld extends Sprite { 
        public function HelloWorld() {
            var myTextField:TextField = new TextField();
            myTextField.text = "Hello World!";
            addChild(myTextField);
        }
    }
}

 ある程度、プログラムのことが分かる方なら「え? これがJavaScriptなの?」とびっくりされたのではないだろうか。この書き方が唯一の書き方ではないが、できるだけシンプルになるように配慮した。それでもいきなりパッケージだし、そしてpublic classが現れる。これってJavaとかC#じゃないのと思いたくなる。

 しかも、ただHello World!の文字を表示するためだけなのに、Flash SWFの場合は画面(標準出力)がないせいか(デバッグ用のtrace画面があるけど)、最初からSpriteクラスを継承し、TextFieldクラスで表示領域のオブジェクトを作り出している。

 var myTextField:TextField にも注目。型が指定されているのだ。しかも、こうしてできたテキスト領域はaddChild()メソッドで上位ノードに結合される。

 Java言語などに慣れている人には分かりやすいと感じるかもしれないけど、これまで普通にJavaScriptを書いていた人にはもう全く別の言語に見えるだろう。

 時代がJavaScript 2.0になるなら今のうちから勉強しておきたいと思う人は、「Adobe - 体験版のダウンロード」のサイトに登録し(無料)、Free Flex2 SDKをダウンロードすれば、HelloWorld.asのようなActionScript 3.0のソースをSWFファイルにコンパイルするためのmxmlcコンパイラが入手できる。なお、ActionScript 3.0は「Adobe Flash Player 9」上で動作するので、player/debugディレクトリー内のInstall Flash Player 9.exeをインストールしておく必要がある。また、Java JDKのようにbinディレクトリにパスを通しておく必要がある。

mxmlcコンパイラはコマンドラインで利用する

Hello World.swfを実行。ただ文字を表示しているだけなのでそっけない。プログラムでの指定を多くすれば位置やフォントサイズなども指定できるようになる

筆者紹介 佐藤 信正(さとう・のぶまさ)
テクニカルライター。1957年東京生まれ。国際基督教大学卒業後、同大学院で言語学を学ぶ。小学生のときにアマチュア無線技士を免許をとり、無線機からワンボード・マイコンへ興味を移す。また初代アスキーネットからのネットワーカー。通信機器や半導体設計分野のテクニカルライターからパソコン分野へ。休刊中の「日経クリック」で10年間Q&Aも担当していた。著書「Ajax実用テクニック」「JScriptハンドブック」「ブラウザのしくみ」など。

著者

佐藤 信正(さとう のぶまさ)

テクニカルライター。1957年東京生まれ。国際基督教大学卒業後、同大学院で言語学を学ぶ。小学生のときにアマチュア無線技士を免許をとり、無線機からワンボード・マイコンへ興味を移す。また初代アスキーネットからのネットワーカー。通信機器や半導体設計分野のテクニカルライターからパソコン分野へ。休刊中の「日経クリック」で10年間Q&Aも担当していた。著書「Ajax実用テクニック」「JScriptハンドブック」「ブラウザのしくみ」など。