Haxe (ヘックス)
Haxe(ヘックス、発音記号は /heks/)は、オープンソースで開発されている高機能
プログラミング言語、またはその
コンパイラです。
概要
Haxeは、静的型付けのオブジェクト指向言語であり、ActionScript 3とECMAScript 4に類似した構文を持ちます。主な特徴として、以下の点が挙げられます。
マルチプラットフォーム対応: JavaScript、ActionScript 3、C++、C#、Java、PHP、Python、Luaなど、多様なプラットフォーム向けのコードを生成できます。
高い互換性: Adobe Flashや
Java仮想マシン(JVM)上で動作する
バイトコードへのコンパイルも可能です。
柔軟な開発: FlashからHTML5への移行など、様々なニーズに対応できます。
2012年4月には、表記が「haXe」から「Haxe」へと変更されました。
対応プラットフォーム
Haxeコンパイラは、以下のプラットフォームをターゲットとして、バイトコードやソースコードを生成できます。
AVM (
Adobe Flash,
Adobe AIR)
Java VM
Neko (Haxe独自の仮想マシン)
HashLink (Haxe独自の新しい仮想マシン)
JavaScript (ブラウザ、
Node.js、Electron)
ActionScript 3 (Adobe Flash, Adobe AIR)
C++ (Windows, macOS, Linux, iOS, Android,
Tizen,
BlackBerry)
C# (.NET Framework, Mono, ASP.NET, Unity)
Java
PHP
Python 3
Lua
Cppia
この多様なプラットフォームへの対応は、「Write once, run anywhere」(一度書けば、どこでも実行できる)という理念に基づいています。開発者は、目的に最適なプラットフォームを選択できます。
言語仕様
Haxeは、静的型付きのオブジェクト指向言語であり、ActionScriptから派生したため、ActionScript3と共通する部分が多くあります。
構文
ActionScript3と共通する機能として、以下のものが挙げられます。
クラス、インタフェース
プロパティ
パッケージ、モジュール機構
アクセス修飾子 (public, private)
ローカル関数、第一級関数オブジェクト、クロージャ
各種演算子
リフレクション
ActionScript3との相違点
構文が似ていても、細かい挙動が異なる点も多くあります。
if文、switch文、ブロックが式であり、値を返す
ローカル変数、関数のスコープが異なる
privateのアクセス修飾子の意味合いが異なる
演算子の優先順位が異なる
独自の機能
Haxeは、以下のような独自の機能も備えています。
型推論
型パラメータ (ジェネリクス)
インライン関数
列挙型
型エイリアス (typedef)
パターンマッチング
構造的部分型付け
関数の部分適用
条件付きコンパイル
配列内包表記、辞書内包表記
文字列リテラル内での改行、文字列内の変数展開
静的拡張 (Mixin)
マクロ
Haxeでは、詳細な型宣言が可能です。静的型付き言語でありながら、`Dynamic`型や`untyped`キーワードを使用することで、部分的に型チェックを無効化できます。また、`extern`クラスによる型定義を行うことで、動的型のターゲットの
ライブラリに対して型チェックを有効にして連携できます。
Haxeの標準
ライブラリは、すべてのターゲットで動作するもの、複数のターゲットで動作するもの、個別のターゲットのみで動作するものがあります。
すべてのターゲット: バイナリ操作、ZIP圧縮/解凍、処理、ユニットテストなど
複数のターゲット: 標準入出力、
SQL操作など
個別のターゲット: 各ターゲットの標準API、HTML5 API (JavaScript)など
OpenFL: Flashに類似したAPIを提供するオープンソース
ライブラリ。
クロスプラットフォーム開発に利用されます。
Haxe
コンパイラは、
OCamlで実装されています。主な機能は以下の通りです。
複数プラットフォームへのコンパイル
デッドコード削除
定数畳み込み
リソースデータの埋め込み
IDE連携機能
ドキュメント生成
ソースマップ生成 (JavaScript)
Haxeでの開発には、以下のIDEやエディタが利用できます。
FlashDevelop
Visual Studio Code (プラグイン)
Sublime Text (Haxeバンドル)
Atom (atom-haxe)
Vim (Vaxe)
IntelliJ IDEA (公式プラグイン)
FDT
Haxeで書かれたソフトウェア
Evoland
Papers, Please
Stencyl
TiVo
歴史
Haxeは、2005年にNicolas Cannasse氏によって開発が開始されました。当初はActionScriptの代替
コンパイラとして開発されましたが、現在はプラットフォーム中立な言語環境を目指しています。
言語名の由来
Haxeという名前は、短くシンプルで、使われていないこと、そして「X」を含んでいることから名付けられました。2012年に、表記が「haXe」から「Haxe」に変更されました。
HashLink
HashLinkは、Nekoの後継となる新しい仮想マシンです。Windows、macOS、Linux上で動作し、DirectXや
SDL、OpenALなどのマルチメディア機能を内包します。HL/JIT方式とHL/C方式の2種類の動作形態があり、HL/C方式では
C言語ソースコードを出力することで、高いパフォーマンスと移植性を実現します。
参照
公式Haxeウェブサイト
Try Haxe!
OpenFL
ActionScript3とHaxeを比較したチートシート