クライアント(ブラウザ)もサーバも同一言語で書ける haXe を使ってみる(1) - サーバで動かしてみる
どうも、あかさたです。前回は、Flash、JavaScript、NekoVM で動作するバイトコードを出力する Java ライクなオブジェクト指向言語 haXe を紹介しました。今回はその haXe をサーバ(Apache)上で動作させてみます。
前回のおさらい
前回は、Flash、JavaScript、NekoVM で動作するバイトコードを出力する Java ライクなオブジェクト指向言語 haXe を紹介しました。そして、同一のコードから Flash と JavaScript で動作するクライアントを生成する Hello World を紹介しました。
今回は、haXe を使用して、NekoVM で動作するバイトコードを出力して、Apache 上で動作させてみます。
Apache サーバで haXe を動作させる
haXe で書いたコードを Apache 上で動作させるには、NekoVM が実行できるバイトコードを生成する必要があります。前回の記事で作成した HelloWorld からバイトコードを生成しましょう。以下のファイルを作成し、コマンドプロンプト上で「haxe compile_n.hxml」を実行してください。
「compile_n.hxml」
-neko helloWorld.n -main HelloWorld
コマンドを実行すると、「helloWorld.n」が生成されるので、Apache のドキュメントルート下のディレクトリにコピーしてください。とりあえず、私はドキュメントルート直下に「helloWorld.n」をコピーしました。
Apache 上で NekoVM を動作させるには、mod_neko というモジュールを使用します。mod_neko は、haXe をインストールすると NekoVM と一緒にインストールされますので、「httpd.conf」に二つ設定を追加すれば、NekoVM は使用可能になります。本記事では、Apache 2.2.x を対象とする設定方法を紹介します。
LoadModule neko_module "C:/Program Files/Motion-Twin/neko/mod_neko2.ndll" # 上記パスは haXe をデフォルトでインストールした場合です。 #
次に「.n」ファイルに対して AddHandler してください。
<IfModule mime_module> # 省略 AddHandler neko-handler .n # 省略 </IfModule>
この状態で Apache を再起動して、以下のアドレスにアクセスすると、「HelloWorld.hx:3: Hello World !」と表示されます。
このように、同一のコードから、クライアント(Flash/JavaScript)とサーバ(mod_neko)で動作する実行ファイルを生成することができました。haXe で作成したコードは、サーバ上では CGI のような感覚で使用できることがわかります。
サーバとクライアントが同一言語で記述できるメリットはあるのか?
haXe には環境依存となるコードが含まれうるため、必ずしもクライアントで動作するコードがサーバでも動くわけではありません。その逆もまたしかりです。それでも、同一の言語でアプリケーションを書けることに、どのようなメリットがあるのか考えてみましょう。
最初に思いつくメリットは、ドメインオブジェクトの共有です。典型的なクラスとして、「社員クラス」がある場合を考えてみます。Java + JavaScript の場合、サーバで定義した社員クラスをクライアントでも使用する場合は、JavaScript で再定義する必要がありました。haXe では、環境依存のコードが紛れ込まないように社員クラスを定義すれば、サーバでもクライアントでも使用することができます。
次に思いつくメリットは、クライアントとサーバの間で言語を切り替える必要がないということです。Java と JavaScript や ActionScript は比較的似た言語なので、同じ人が異なる言語で一つのアプリケーションを開発していると、それぞれのイディオムなどが混ざってしまう場合があります。
他にも、サーバとクライアントの境界線を変更しやすくすることができます。Ajax などによって細かく通信するアプリケーションが、ネットワーク環境の理由などで通信の粒度を大きくする場合、サーバで行っていた処理のいくつかをクライアントに移植する必要があります。そうした場合には、haXe は力を発揮するでしょう。
こうしたメリットを享受するためには、環境依存コードと環境非依存コードの切り分けを行う必要があります。あるいは、環境依存となる部分のラッパーを作成する必要があります。
まとめ
今回はサーバで基本的な haXe コードを動作させました。次回からは、haXe の文法や Flash などの環境依存のコードを紹介したいと思います。それでは!
このサイトについて
TrackBack URL :
