
静的型付けのオブジェクト指向言語Haxeを紹介
目次
Haxe入門
今回は、Haxe(ヘックス)入門編です。
Haxeとは、JavaScriptやPythonなど、様々なコードを生成することができるプログラミング言語です。また、Haxeは静的型付けのオブジェクト指向言語です。マルチプラットフォーム開発に使用されることが多いです。
入門編として、Haxeの導入方法から、その使い方について紹介します。Haxe入門編に興味のある方はぜひご覧ください。
Haxeのインストール
入門編として、Haxeをインストールしてみましょう。以下サイトより、ご自身の環境に合ったものもダウンロード・インストールしてください。
https://haxe.org/download/
様々なコードを生成
Haxeは、JavaScriptやPythonなど、様々なコードを生成することができます。ここでは、入門編としてJavaScriptを生成してみましょう。
まずはTest.hxを作成し、以下のように記述します。
1 2 3 4 5 6 7 |
class Test { static function main() { trace(""Hello World !""); } } |
Haxeでコンパイルしてみましょう。
メインのエントリポイントを指定し、-jsオプションでJavaScriptに変換します。
コンパイルすると、hello.jsが生成されます。
1 |
haxe.exe -main Test -js hello.js |
hello.jsの中身は以下のようになっています。
trace()はconsole.log()に変換されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// Generated by Haxe 4.1.2 (function ($global) { ""use strict""; var Test = function() { }; Test.main = function() { console.log(""Test.hx:3:"",""Hello World !""); }; var haxe_iterators_ArrayIterator = function(array) { this.current = 0; this.array = array; }; haxe_iterators_ArrayIterator.prototype = { hasNext: function() { return this.current < this.array.length; } ,next: function() { return this.array[this.current++]; } }; Test.main(); })({}); |
それではhello.jsを実行してみましょう。
ここでは、Node.jsをインストールしている前提で進めます。
1 2 |
> node hello.js Test.hx:3: Hello World ! |
実行すると、Hello Worldが標準出力されることが分かります。
このように、JavaScriptのコードを生成して実行できました。
Haxeではこの他にも様々なコードを生成できます。
haxe -hコマンドを実行すると、生成可能なコードを確認できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
> haxe -h Target: --js <file> compile code to JavaScript file --lua <file> compile code to Lua file --swf <file> compile code to Flash SWF file --neko <file> compile code to Neko Binary --php <directory> generate PHP code into target directory --cpp <directory> generate C++ code into target directory --cppia <file> generate Cppia code into target file --cs <directory> generate C# code into target directory --java <directory> generate Java code into target directory --jvm <directory> generate JVM bytecode into target file --python <file> generate Python code as target file --hl <file> compile HL code as target file |
JavaScript以外にも多くの言語に対応しています。
1つのhxファイルから様々なコードを作成できます。
以降の章では、JavaScriptをターゲットに説明します。
静的型付け
入門編として、静的型付けについて説明します。
静的型付けとは、変数のデータ型を事前に決めることができることです。こうすることで、コンパイルする時点でエラーが分かります。つまり、エラーを未然に防ぐことができます。
Haxeでは、変数名やメソッド名の後に型を指定します。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class Test { static function main() { var i:Int = 5; var f:Float = 5.0; var s:String = ""abc""; var b:Bool = true; trace(i); trace(f); trace(s); trace(b); } } |
コンパイルして実行すると、以下のようになります。
1 2 3 4 |
Test.hx:7: 5 Test.hx:8: 5 Test.hx:9: abc Test.hx:10: true |
正しい結果が標準出力されることが分かります。
代表的な型としては、以下があります。
・Int:整数
・Float:小数点
・String:文字列
・Bool:true / false
次に、コンパイルエラーを起こしてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class Test { static function main() { var i:Int = ""5""; var f:Float = 5.0; var s:String = ""abc""; var b:Bool = true; trace(i); trace(f); trace(s); trace(b); } } |
コンパイルすると、以下のようにエラーとなります。
Test.hxの3行目にエラーがあることが分かります。
1 |
Test.hx:3: characters 9-25 : String should be Int |
型推論
入門編として、型推論を説明します。Haxeは静的型付け言語ですが、型推論があります。
型推論とは、型を省略すると、コンパイラが空を推測してくれることです。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Test { static function main() { var i:Int = 1; trace(i); var j:Int; j = 2; trace(j); var k = 3; trace(k); } } |
変数i,jは型(ここではInt)を指定しています。
変数kは型を指定していませんが、コンパイルは成功します。
実行すると、以下のようになります。
1 2 3 |
Test.hx:4: 1 Test.hx:8: 2 Test.hx:11: 3 |
型推論でIntと解釈されています。
また、型にDynamicを指定すると、何を指定してもOK(なんでもあり)になります。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class Test { static function main() { var i:Dynamic = 5; var f:Dynamic = 5.0; var s:Dynamic = ""abc""; var b:Dynamic = true; trace(i); trace(f); trace(s); trace(b); } } |
コンパイルは成功し、実行すると以下のようになります。
1 2 3 4 |
Test.hx:7: 5 Test.hx:8: 5 Test.hx:9: abc Test.hx:10: true |
Dynamicを使うとコンパイラが型のチェックができなくなるので注意が必要です。
静的型付けがHaxeの利点なので、慣れないうちは型推論やDynamic型は使わないほうが良いです。
クラス
入門編として、Haxeでクラスを生成してみます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
class Test { static function main() { var human = new Human(""Taro"", 30); trace(human.name); trace(human.age); } } class Human { public var name : String; public var age : Int; // constructor public function new(name, age) { this.name = name; this.age = age; } } |
Humanクラスを生成して、クラス変数を表示します。
コンパイルして実行すると、以下のようになります。
1 2 |
Test.hx:4: Taro Test.hx:5: 30 |
まとめ
Haxe入門編、いかがでしたでしょうか。
Haxeとは、JavaScriptやPythonなど、様々なコードを生成することができるプログラミング言語です。また、Haxeは静的型付けのオブジェクト指向言語です。Haxeの導入方法から、その使い方について紹介しました。
今回紹介したものはあくまでも入門レベルなので、もっと色々なことができます。ぜひご自身でソースコードを書いて、理解を深めてください。