最終更新:2013-09-25 (水) 03:21:09 (3866d)  

Haxe
Top / Haxe

Haxe (ヘックスと発音) はオープンソースプログラミング言語です。

http://haxe.org/

http://haxe.org/doc/intro?lang=jp

HaxeはActionScript風の文法を持つプログラミング言語で、SWF(Adobe Flash)形式、JavaScript形式、PHP形式などにコンパイルでき、ウェブアプリケーションのクライアントサイド・サーバサイド両方が作れるという特徴を持ちます。

Haxe の紹介

  • 他の大部分の言語はそれぞれのプラットフォームに結びついている (Java なら Java VMC♯ なら .NETActionScript なら Flash Player) のに対して,Haxe はマルチ・プラットフォームの言語です。
  • Haxe を使うことで、次のようなプラットフォームを開発対象とすることができます :
  • JavaScript : Haxe のプログラムを単一の .js? ファイルにコンパイルできます。自動補完のサポートのある,型付けされたブラウザの DOM API にアクセスでき,すべての依存関係は,コンパイル時に解決されます。
  • Flash : Haxe のプログラムを .swf? ファイルにコンパイルできます。Haxe は Flash Player 6 から 10 向けに,「古い」Flash8 以前の API でも,最新の AS3/Flash9+ API でもコンパイルできます。Haxe は Flash コンテンツの開発のために,非常に良いパフォーマンスと言語的な特徴を提供します。
  • NekoVM? : Haxe のプログラムを NekoVM? のバイトコードにコンパイルできます。NekoVM は,他の DLL とともに,組み込んで拡張できるので,動的な web ページ (Apache 用の mod_neko? を使用) のようなサーバ・サイドのプログラミングだけでなく,コマンドラインやデスクトップアプリケーションにも使用できます。
  • PHP : Haxe のプログラムを .php? ファイルにコンパイルできます。これにより,現行のサーバ・プラットフォームやライブラリとの完全な互換性を保つと同時に,厳格な型付け言語であるHaxeが使えるようになります。
  • C++ : Haxe のソースコードから C++ のコードを必要な Makefile とともに作成できるようになりました。これは iPhone での開発のような,ネイティブアプリケーションを作ろうとする際に有用です。
  • C♯Java のターゲットも,もうすぐお目見えします!

考え方

  • Haxe の背後にある考えは,開発者が,与えられた仕事をなすために最適なプラットフォームを選べるようにすることです。一般的には,そうするのは簡単ではありません。なぜなら,新しいプラットフォームごとに,新しいプログラミング言語がついてくるからです。Haxe は次のようなものを提供します :
  • 多くの優れた特徴を持つ標準化された言語
  • すべてのプラットフォームにおいて同様に動作する 標準ライブラリ (Date,Xml,Math 等を含む)
  • 特定のプラットフォーム向けのライブラリ : そのプラットフォーム用のすべての API が Haxe からアクセス可能です

Haxe の特徴

言語の特徴

  • JavaC♯AS3に似たクラスベース(class + interface)のオブジェクト指向
  • 強い型付けと動的型(Dynamic)
  • 第一級の関数オブジェクト (クロージャ
  • 正規表現
  • 次のようなものを含む高度な型システム :
    • クラスとインターフェース
    • 列挙型
    • 関数型
    • 匿名型 (構造体)
    • 動的な型(実行時決定型)
  • 列挙型
    • パラメータ付きのコンストラクタ(構成子)(ML 風の)
    • パターンマッチング
  • 完全な型推論: ローカル変数では型宣言が不要です
  • 任意の制約を持つ型パラメータ(総称型)
  • パッケージ(フォルダ単位)とモジュール(ファイル単位)による型の管理
  • 型推論と匿名型を用いる構造的部分型
  • 簡単な構文によるGetterとSetter
  • 反復子(Iterator)
  • 多態性のメソッド

コンパイラの特徴

  • デバッグ・コンパイル・モード(JS と Flash 6-8 向けにスタックの呼び出しを可能にします)
  • trace と file position の サポート
  • インラインのメソッドと変数
  • 実行時の型情報
  • 最適化された総称型(Flash9 向け)
  • 外部ファイルのリソースへのアクセス
  • 条件付きコンパイル
  • ドキュメンテーションと型を XML フォーマットで生成

ライブラリとツール

  • Firebug のサポート
  • クロスプラットフォームの XML のサポート
  • web で互換性のあるクロスプラットフォームのシリアル化
  • Haxe Remoting Tutorials でのクロスプラットフォームの通信
  • ScreenweaverHX での Flash デスクトップ・アプリケーションのビルド
  • ユニットテスト のサポート

スライド

大規模なギョームシステムにHaxeを採用してみた話 from terurou
altJS勉強会「Haxeすごいからみんな使え!」 from 政樹 尾野

関連