Haxe
Haxe(ヘックス、
Haxeのロゴ | |
パラダイム | マルチパラダイム |
---|---|
2005 | |
Haxe Foundation, Nicolas Cannasse | |
4.3.6/ 2024 | |
haxe 2024-08-14 development / 2024 | |
| |
ActionScript, OCaml | |
プラットフォーム | クロスプラットフォーム |
ライセンス |
コンパイラ:GPL v2 |
ウェブサイト | haxe.org |
2012
対応 プラットフォーム
Haxeのコンパイラは、AVMやJava VM、そして
Haxeでは、これらプラットフォームは「ターゲット」と
AVM
haXe Betaより
2007
Neko
haXe Betaより
JavaScript
1.0より
Dynamic
Haxe 4.0
ActionScript 3
1.xより
PHP
2.0.0より
Haxe 3まではPHP 5.1.0に
C++
2.4.0より
C++ターゲットを
C#
2.10.0より
Haxelibに
Java
2.10.0より
Haxelibに
Python
3.2.0-rc.2より
Cppia
3.2.0-rc.2より
Cppiaは、
Lua
3.3.0-rc.1より
HashLink
3.3.0-rc.1より
Java VM
4.0.0-rc.3より
言語
機能
ActionScript3と共通 する機能
HaxeはActionScript3が
- クラス、インタフェース
- プロパティ
- パッケージ、モジュール
機構 - アクセス
修飾 子 (ただし、publicとprivateの2段階 のみ) - ローカル
関数 、第 一 級 関数 オブジェクト、クロージャ 各種 演算 子 (算術 、代入 、論理 、文字 列 、条件 、ビット)- リフレクション
これらの
ActionScript3との相違 点
- if
文 、switch文 、ブロックが式 であり、値 を返 す。 - ローカル
変数 、関数 のスコープが異 なる。 - privateのアクセス
修飾 子 の意味合 いが、ActionScript3のprotectedに相当 する。 演算 子 の優先 順位 が異 なる。- % が * と / より
優先 度 が高 い。 - |、&、^の
優先 度 が同 じ。 - |、&、^が、==、!=より
優先 度 が高 い。
- % が * と / より
また、ActionScript3にはあるがHaxeには
- for(
初期 化 式 ;継続 条件 式 ;再 初期 化 式 ){} のC言語 形式 のfor文
独自 の機能
その
型 推論 型 パラメータ(ジェネリクス)- インライン
関数 列挙 型 (一般 化 代数 的 データ型 )型 エイリアス (typedef)- パターンマッチング
構造 的 部分 型付 け関数 の部分 適用 条件 付 きコンパイル配列 内包 表記 、辞書 内包 表記 文字 列 リテラル内 での改行 、文字 列 内 の変数 展開 (ヒアドキュメント)静的 拡張 (Mixin)- マクロ
型 システム
Haxeでは
function func1(threeDimensionalArray:Array<Array<Array<Int>>>, string:String, bool:Bool) { ... }
// オプションのInt整数 値 を渡 し、Intを返 す
function func2(?i:Int):Int {
return 0;
}
// 引数 のない関数 をパラメータとして渡 す
function func3(f:Void -> Void) {
f();
}
// Intを渡 しIntを返 す関数 をパラメータとして渡 す
function func4(f:Int -> Int) {
var result = f(1);
}
// 任意 型 を取 り、任意 型 を返 す
function func5(d:Dynamic):Dynamic {
return d;
}
Haxeは
列挙 型
Haxeの
これにより、
enum Color {
red;
green;
blue;
rgb: (r:Int, g:Int, b:Int);
}
class Colors {
static function toInt(c:Color):Int {
return switch (c) {
case red: 0xFF0000;
case green: 0x00FF00;
case blue: 0x0000FF;
case rgb(r, g, b): (r << 16) | (g << 8) | b;
}
}
static function validCalls() {
var redint = toInt(Color.red);
var rgbint = toInt(Color.rgb(100,100,100));
}
}
標準 ライブラリ
Haxeの
- すべてのターゲットで
動作 するもの - すべてではないが
複数 のターゲットで動作 するもの 個別 のターゲットで動作 するもの
このように
JavaScript
import js.Browser;
import js.html.CanvasElement;
class Main
{
static public function main()
{
var canvas:CanvasElement = cast Browser.document.getElementById("canvas");
var ctx = canvas.getContext2d();
ctx.fillStyle = "#F00";
ctx.fillRect(50, 50, 100, 100);
}
}
サードパーティーのライブラリ
OpenFL
HaxeではFlashターゲットの
クロスプラットフォームのライブラリであるOpenFLを
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.Lib;
class Main extends Sprite
{
public function new()
{
super();
var image = new Bitmap(openfl.Assets.getBitmapData("img/sample.png"));
addChild(image);
}
static public function main()
{
Lib.current.addChild(new Main());
}
}
コンパイラ
実装
HaxeのコンパイラはOCamlで
機能
Haxeのコンパイラは
ターゲット共通
各 ターゲット個別
- SWC、SWFのライブラリの
利用 (Flash)静的 リンク・動的 リンク- SWC、SWFのライブラリからのexternの
生成 - SWCファイルの
生成
- ソースマップの
生成 (JavaScript) - jarライブラリの
利用 (Java) - dllライブラリの
利用 (C#)
統合 開発 環境
Haxeでのプログラミングには
- FlashDevelop
- Visual Studio Code - プラグイン
- Sublime Text - Haxeバンドル
- Atom - atom-haxe
- Vim - Vaxe
- IntelliJ IDEA -
公式 プラグイン - FDT
Haxeで書 かれたソフトウェア
Flashコミュニティを
- Evoland - Haxe
創始 者 (Nicolas Cannasse)ほかによるインディーRPG - Papers, Please -
架空 の共産 国 の入国 審査 官 を疑似 体験 するゲーム。OpenFLを使用 。Metacriticのメタスコア85を獲得 。GDC 2014のIndependent Games Festivalにおいて最優秀 賞 を受賞 。 - OpenFL - Showcase - OpenFLを
使用 したゲームのショーケース - Stencyl - 2Dゲームエディタ。OpenFLを
使用 。 - TiVo - Android、iOS、デジタルビデオレコーダのアプリケーションに
使用 している。[25]
歴史
- 2005
年 10月 フランスのブラウザゲーム開発 会社 Motion Twinの独自 ActionScriptコンパイラMTASCの後継 プロジェクトとしてHaxeが誕生 (当初 の綴 りはhaXe) - 2006
年 5月 Haxe 1.0がリリース、JavaScriptターゲットに対応 - 2008
年 7月 Haxe 2.0がリリース、Franco PonticelliによりPHPターゲットが追加 - 2009
年 7月 Haxe 2.04がリリース、Hugh SandersonによりC++ターゲットが追加 - 2011
年 - JavaScriptターゲットのメンテナとして
参加 したBruno Garciaにより、2.08と2.09のリリースにおいてJavaScriptターゲットの最適 化 が行 われた - Simon Krajewskiがチームに
参加 - Cauê WaneckによりJavaおよびC#ターゲットが
追加
- JavaScriptターゲットのメンテナとして
- 2012
年 - 4
月 パリ開催 のWorld Wide Haxeカンファレンスにおいて、表記 をHaxeに変更 すること、次 のメジャーバージョンとなるHaxe 3に向 けて破壊 的 変更 を行 うことがアナウンスされる - Nicolas CannasseがMotion Twinより
独立 、インディーゲーム開発 会社 Shiro GamesおよびHaxe Foundationを設立
- 4
- 2013
年 5月 Haxe 3.0がリリース
言語 名 の由来
Haxeの
よく比較 される言語
HaxeはJavaScript
HashLink
HashLinkは、Nekoの.hl
)を
HashLinkの
参照
- ^ “Haxe 4.3.6”. 2024
年 8月 20日 閲覧 。 - ^ “Haxe git builds”. 2024
年 8月 20日 閲覧 。 - ^ Haxeの
発音 について言語 開発 者 による回答 - ^
公式 メーリングリストにおけるHaxeの読 み方 についての会話 - ^ a b haXe is now Haxe
- ^ a b c d e “History”. 2019
年 11月3日 閲覧 。 - ^ “Using external JavaScript libraries”. 2019
年 11月3日 閲覧 。 - ^ “JavaScript”. 2019
年 11月3日 閲覧 。 - ^ “JavaScript”. 2019
年 11月3日 閲覧 。 - ^ “Haxe 2.0.0”. 2019
年 11月3日 閲覧 。 - ^ “Getting started with Haxe/PHP”. 2019
年 11月3日 閲覧 。 - ^ “Haxe 2.4.0”. 2019
年 11月3日 閲覧 。 - ^ “Getting started with Haxe/C++”. 2019
年 11月3日 閲覧 。 - ^ a b “Haxe 2.10.0”. 2019
年 11月3日 閲覧 。 - ^ “.NET version and external libraries”. 2019
年 11月3日 閲覧 。 - ^ “Getting started with Haxe/Java”. 2019
年 11月3日 閲覧 。 - ^ “Replace hxjava-std with Java 8.”. 2019
年 11月3日 閲覧 。 - ^ a b “Haxe 3.2.0-rc.2”. 2019
年 11月3日 閲覧 。 - ^ “Getting started with Haxe/Cppia”. 2019
年 11月3日 閲覧 。 - ^ “Haxe 3.3.0-rc.1”. 2019
年 11月3日 閲覧 。 - ^ “Haxe 3.3.0-rc.1”. 2019
年 11月3日 閲覧 。 - ^ “Haxe 4.0.0-rc.3”. 2019
年 11月3日 閲覧 。 - ^ Language Features - Haxe - The Cross-platform Toolkit
- ^ Enum Instance - Haxe - The Cross-platform Toolkit
- ^ WWX2015 Haxe in the Enterprise
- ^ Getting Rid of Flash ?
- ^ Haxeのネーミングについて
言語 開発 者 のコメント - ^ “London Haxe Meetup 20th October 2016 - Part 2”. Haxe Foundation. 2019
年 3月 15日 閲覧 。 - ^ “HashLink - Haxe Virtual Machine”. Haxe Foundation. 2019
年 3月 15日 閲覧 。 - ^ “About - Haxe Game Engine”. Heaps.io. 2019
年 3月 15日 閲覧 。 - ^ “Hello HashLink”. Heaps.io. 2019
年 3月 15日 閲覧 。
外部 リンク
公式 Haxeウェブサイト- Try Haxe! - Web
上 でHaxeの動作 を確認 できる実行 環境
- Try Haxe! - Web
- OpenFL - Haxeのゲーム
用 マルチプラットフォームライブラリ