Hello World!

Haxeのインストールが終わり、haxehaxlibコマンドが使える状態になったら、さっそくコードを書いて動かしてみます。最初のプログラムは予想される通り、伝統的なHello Worldです。テキストエディタを起動して次のコードを打ち込みます。

class Hello {
    static function main() {
        trace("Hello, world!");
    }
}

任意の作業用ディレクトリに、この内容のテキストファイルをHello.hxという名前で保存します。Haxeのソースコードファイルの拡張子は「.hx」です。

このHello Worldプログラムを実行する方法はたくさんあります。Haxeコンパイラは他の言語のソースコードやVMのバイトコードを出力するので、その分だけ実行方法があります。

まずは、もっとも簡単な方法を紹介します。ターミナルアプリケーションを起動して、ファイルを保存したディレクトリに移動します。

$ cd path/to/hello-world

続いて、次のコマンドを打ち込みます。

$ haxe --main Hello --interp
Hello.hx:3: Hello, world!

“Hello, world!”というテキストが出力されました。ファイル名と行番号も出力されるため、シンプルさと美しさが損なわれていると感じるかもしれませんが、大体は期待したとおりでしょう。–mainは、実行するmain関数(メソッド)を含むクラスの名前を指定するオプションです。このMainとなるクラスの名前は、ファイル名の拡張子を除いた名前と一致させる必要があります。–interpは、ターゲットを生成するのではなく、コンパイラに直接その場で実行させることを指示するものです。

次に、別の言語をターゲットターゲットしてコードを生成させてみます。全部やるのは大変なので、JavaScriptとNekoVMだけをやってみます。

先ほどと同じディレクトリで、次のコマンドを打ち込みます。

$ haxe --main Hello --js hello.js

すると、同じディレクトリにhello.jsというファイルが生成されます。

$ ls
Hello.hx  hello.js

このhello.jsは、HTMLに読み込んでWebブラウザから実行することも出来ますし、Node.jsで実行することも出来ます。試しに、Node.jsで実行してみます。

$ node hello.js
Hello.hx:3: Hello, world!

先ほどの–interpを使ったときと同じ出力になりました。

NecoVMの場合は次のようにします。

$ haxe --main Hello --neko hello.n
$ ls
Hello.hx  hello.js  hello.n

hello.nというファイルが生成されました。NecoVMのバイトコードのファイルは、拡張子が「.n」となります。

実行してみます。

$ neko hello.n 
Hello.hx:3: Hello, world!

同じ結果が得られました。

他の言語をターゲットとする場合も、同じような手順でできます。ただし、いくつかのターゲットは環境を追加でインストールする必要があります。どれもhaxlibでインストール出来ます。それらについては別のページを用意する予定です。今すぐ知りたい場合はマニュアルを参照してください。