こんにちは。佐藤です。
さて、早速ですが皆さんhaXeという言語をご存知でしょうか?本日は、ちょっとマイナーなプログラミング言語haXeについて紹介したいと思います。
haXe
haXeとは、プログラミング言語の名前です。「クラス」や「継承」などの仕組みを利用することのできるオブジェクト指向言語で、その構文はJAVAやActionScriptに良く似ています。大きな特徴は、様々なプラットフォームでの動作をサポートしているということです。haXeのコンパイラがサポートするのは、JavaScript、swf、Nekoの3種類で、このそれぞれについては順に説明したいと思います。
開発者はNicolas Cannasseさんというフランスの方で、今も開発が続けられています。ちなみに、僕は始めhaXeを「ヘックス」と読んでいました。どうもかっこ悪い読み方だとは思っていたのですが、haXeはフランス語的に読むと「エックス」なのだそうです。余談ですが、Flashに通ずる方なら誰でも知っているMTASCという無料のActionScript2.0用コンパイラがあります。Nicolas Cannasse氏はその開発者でもあります。
swfへのコンパイル
haXeで書かれたソースコードは、swfとしてコンパイルすることができます。しかも、FlashPlayer6~9まで、どのバージョンのswfとしてでもコンパイル可能です。もちろん、FlashPlayer9用ならActionScript3.0としてバイトコードが生成されます。swfへコンパイルすることができるという点の魅力は、ほとんど同じソースコードで多くのバージョンへ対応できるということです。
例えばFlex2でWEBアプリケーションを制作した場合はFlashPlayer9用のswfとなります。そのためWiiや携帯でも利用可能にするためには、ActionScript2.0(あるいはActionScript1.0)で一から作り直さなければなりません。ところがhaXeの場合には、一部のAPI以外の基本的な部分は全てそのままで、コンパイルをしなおすだけで良くなります。
nekoへのコンパイル
haXeで書かれたソースコードは、NekoVMというバーチャルマシン上で動くバイトコードとしてコンパイルすることができます。NekoVMは、MTASC・haXeと同様にNicolas Cannasse氏の開発したVMで、その名前の由来は猫だそうです。NekoVMはWindows,Linux,OS X(Universal binaries)で動作し、さらにmod_nekoというモジュールでApacheWEBサーバー上でも動作します。つまり、NekoVMを用いることでhaXeによるサーバーサイドの開発が可能になります。
JavaScriptへの書き出し
haXeで書かれたソースコードはJavaScriptとして書き出すことができます。とだけ、言ってしまってはあまり興味を持ってもらえないかも知れませんが、実はいくつかの小さなメリットはあります。まず第一にhaXeには非常に高機能なFlashDevelopというフリーのIDEがあります。haXeには非常にたくさんのAPIが存在するため、IDEのコード補完機能などによって開発の効率が上がることも多いのではないでしょうか?第二にはデバッグがしやすくなります。JavaScriptを用いた開発ではエラーの発見に難儀することもあると思いますが、haXeからの変換であればエラーの多くは変換時に出力されるため、効率的にデバッグを行うことができます。
まとめ
haXeにはオープンソースであることや拡張性が高いことなど他にもたくさんの魅力的な点はあります。しかし、やはりもっとも興味深いのは一つの言語を覚えることで様々なプラットフォームでの開発に対応できるという部分ではないかと思います。サーバー側をNekoVM、クライアント側をJavascriptとswfで制作すると考えれば、haXeだけで、WEBアプリケーションの全てを開発することができます。
確かにJavaやActionScriptに良く似ているとはいえhaXe自体は独自の言語なので、今から新しい言語を覚えるのはちょっと…と、思う方もいらっしゃると思います。確かにあまり流行ってもいないので、haXeをメインスキルにやっていこうというのは難しいかもしれませんが、さまざまな状況でhaXeという選択肢を増やせることを考えれば、サブスキルとしては良いのではないでしょうか?