なぜHaxeを使うのですか?

Haxeは多くの魅力的な特徴を持つ、強力で現代的な言語です。webサイトやアプリケーションを単一のプログラミング言語で作るためのツールを開発者に提供する事を目的としています。クロスプラットフォームでの動作を求めてHaxeを使うにしても、あるいは特定のプラットフォームを見据えて使うとしても、Haxeを採用するに値する多くの理由があります。

  • ECMAスタイルで、クライアントサイド、サーバサイド、デスクトップアプリケーションの開発
    Haxeの文法はActionScriptやJavaScriptに慣れ親しんだ方ならとてもわかりやすいものになっています。複数のターゲット(VMや言語)を提供しているため、様々なアプリケーション開発に利用する事ができます。
  • 極めて高速なコンパイル
    Haxeコンパイラは極めて高速です。FlashやFlexのコンパイラと比較すると、明らかに速いことに気が付くでしょう。そのコンパイルの速さゆえに、PHPやJavaScriptのような非コンパイル言語からの移行も容易です。
  • 型チェック
    Haxeは非常に厳格な型チェックを提供します。コンパイル時の適切な型チェックにより、ブラウザでテストする前にエラーを検出することができます。
  • ターゲットプラットフォームには無い機能
    Haxeはweb指向の開発によりよい機能とツールがほしいという欲求から生まれました。Haxeは多くのターゲットに欠けている機能を追加します。
    例えば、
    - Flash開発で、強力なインライン展開ジェネリクス
    - JavaScript、PHP開発で、パッケージ型付け
    - C++開発で、動的オブジェクト指向実行時型情報
    - その他多数・・・
    ターゲットに欠けている機能を追加する事で、全てのプラットフォームで全く同じ豊富な機能を使って開発する事を実現します。
  • オープンソース
    Haxeは無償、オープンソースであり、OSX、Windows、そしてUNIXベースのOS向けのインストーラを提供します。Haxeコンパイラはライブラリを必要としませんし、Haxeのライブラリは最初から豊富な機能を提供します。

なぜ複数のプラットフォームをターゲットとするのですか?


Haxeを使うと、複数のプラットフォームをまたいで開発する事が可能になります。これは本当に有益です。
  • プラットフォーム間のやりとりもすっきり
    異なるプラットフォーム間でオブジェクトのやりとりが可能です。同じコードベースを異なるプラットフォームで使うと言うことは、同じクラスを複数のプラットフォームにコンパイルする事ができると言うことです。つまり、リモート環境でのデシリアライゼーションが的確かつ高速にできます。
  • 単一の文法と機能
    プラットホームを変えるために、文法や言語の癖を違いを苦労して勉強しなければならない、ということはよくあります。常に同じ文法と特徴のセットを使うことができれば、プログラミングの「モード」をいちいち切り替える必要が無くなります。これにより開発者はロジックや最終的な制作物に対して集中することができます。これは非常に生産的です。
  • 条件付きコンパイル - 1つのターゲットで記述し、多数のターゲットで使う
    単一のプラットフォームに向けてコードを書くことと、複数のプラットフォームに向けて書くことの両方が可能です。例えば、トゥイーン(Tween)のクラスはActionScript,JavaScript,C++で利用可能です。コードをほんの少しの変更するだけで、最適なプラットフォームへと移植することができます。つまり、フロントエンドで遅かったコードは、すぐにバックエンドに移植して動かすこともできます。
  • ScreenweaverHxでデスクトップにFlashを配置
    ScreenweaverHxを使うことで、FlashをNekoのアプリケーションに埋め込むことが可能です。これによりFlashはデスクトップアプリケーションのように働き、システムの機能にアクセスすることができます。システムへのアクセスすべてをHaxeで記述することが可能で容易にSWFと連携を取ることが可能です。
  • 多くのファイルフォーマットが利用可能
    GoogleCodeにホストされているフォーマットライブラリにより'abc' (ActionScript Byte Code), SWFのヘッダーなど多くのフォーマットを読み書きすることが可能です。そしてこれらのライブラリはクロスプラットフォームで動作するように作られています。

プラットフォーム固有の機能


Haxeには、ターゲットとするプラットフォームごとにすばらしい機能があります。

Flash

  • 同じ言語でFlash6,7,8,9,10,11にコンパイル
    必要であれば、AS1のコードを書く必要無しに、Flash6のバイナリを作る事もできます。このため後方互換性の確保が容易です。
  • Flexコンパイラより高速で最適化されており、Flex SDKよりも利用しやすくセットアップも容易
    インライン化とジェネリクス、そしてコンパイラの最適化により、Haxeは最新のFlexコンパイラよりも優れたパフォーマンスのSWFを生成することが可能です。
  • HaxeのSWFはFlexとFlashに完全互換
    FlashやFlexで生成したSWFにHaxeで生成したSWFをロードすることも、その逆も問題無く可能です。
  • SWC出力によるAS3ユーザーへのサポート
    SWCエクスポート機能を使って、FlexがロードできるSWCの生成が可能です。ライブラリ作者はHaxeのすばらしい機能を使用しながら、AS3ユーザへのサポートができます。
  • Alchemyの機械語を利用する
    Adobe AlchemyはSWFプレイヤーに埋め込まれたメモリ管理のための機械語を利用しています。Haxeはこの機械語を利用すること可能で、低レベルのメモリアクセスによって大幅な速度向上を可能にします。
  • PixelBenderのアセンブリの利用
    PixelBenderの低レベルな関数を直接利用することができます。
  • HaxeVideoを用いた簡単な動画のストリーミング再生と録画
    HaxeVideoがRTMPを使った動画のストリーミングを可能にします。

JavaScript

  • ECMA4の機能が利用可能です
    ECMA4で、多数のすばらしい機能が利用可能になるはずでした。Haxeは現在あるブラウザと完全な互換性を持つ上、ECMA4がもたらすはずだった素晴らしい体験をもたらします。
  • DOMアクセスでの完全な自動補完
    JavaScriptをターゲットとしてHaxeを利用する際には、DOMの自動補完が利用可能です。今までに見たことのないDOMのプロパティに驚く事でしょう!
  • Haxeは手持ちのJavaScriptコードを実行する事もできます
    他のJavaScriptライブラリと一緒にHaxeを実行する事ができます。JQueryのようなライブラリにアクセスする事すら、externクラス経由で可能になります。

Neko

  • 軽量で高速なバーチャルマシン
    Nekoは軽量で非常に高速なバーチャルマシンで、コマンドラインやデスクトップアプリケーションを開発するためのすばらしい機能を提供します。Haxeはその全ての機能を利用可能で、簡単かつ高速にクロスプラットフォーム(Mac、Windows、Linux)のアプリケーションを開発することを可能にします。
  • パワフルでスケーラブルなApacheプラグイン、mod_neko & mod_tora
    NekoをWebサーバとして動作する事を可能とするApacheプラグインもあります。このプラグインを利用する事によって、PHPの40倍もの速さでコードを動作させることができます。
  • コマンドラインアプリケーションを高速に開発する
    ほんの数行のコードで、システムに完全なアクセスが可能な、多くの作業をこなす小さなアプリケーションを作る事が可能です。

PHP

  • Apacheサーバで広範囲な利用
    PHPの開発コストが低く、広く利用されていることはよく知られています。APIの一貫性の欠如とオブジェクト指向の欠如によって挫折してユーザーのために、Haxeはサーバーの変更無しで素晴らしいプログラミング体験を提供します。
  • よりきれいで構造化されたオブジェクト指向のウェブサイト開発
  • 簡単にPHPの完全な機能リストへのアクセス
    ラッパークラスを記述する(writing wrapper classes)ことで、PHPライブラリの全てに型付けし、利用可能にすることができます。

C++

  • C++のパフォーマンスを利用
    NekoのようなVMよりも高いパフォーマンスが必要な場合、C++があなたの助けになります。

その他の特徴

  • コンパイラが持つの自動補完
    Haxeはコンパイラが自動補完機能を持っているので、IDEに型推論を使った補完機能を統合する事を可能です。この統合によってHaxeの自動補完は高速かつ正確になります。例えば、これはFlashDevelopFDTIntelliJ IDEAで利用可能です。
version #15964, modified 2013-02-19 08:27:24 by shohei909