Haxe知見

昔一度調べたんだけど、2系以来で2年ぶり2度目。

前提

自分はrobotlegsでのFlash経験があるJSerです。

セカンドインプレッション

  • 昔と比べて生成されるコードがすごく綺麗になった
    • 同窓会で会った幼馴染が綺麗になってたみたいな感じだった
    • たぶん今なら生成したコードをJavaScript側から触るのも問題ないのでは
    • (ライブラリ呼ばない限り)コードサイズも小さいのでnpm/bowerライブラリとかでも使えそう
  • TypeScriptに慣れたあとに触るとコンパイル爆速すぎてウケる
    • ウケる…
    • でも「Haxeは速度を気にしてOCamlなんです!」って主張、OCamlで書くようなケースはだいたいOCamlそれ自身で書くことそれ自体が目標なのでは…(じゃなきゃC++になるだろうし)
  • 文法的に気に入らない点は Arrow Functionがないこと
    • ForumにIssueあるけど2年ぐらい放置されてる
    • macroでなんかできないんですか

インストール

Macだといって brew install haxe してはいけない。色々壊れる。公式のHaxeバイナリを入れる。

インストール後、忘れずにHAXE_STD_PATHを定義する。 /usr/lib/haxe/std。

開発環境

今回はSublimeだったのでPackageControll から Haxe。特に設定しなくても補完までバリバリ動く。すごい。

ライブラリ

lib.haxe.org の crossとjsとutilitiesを全部読む。全部で170個ぐらいしかないので、最初からないと諦めて、あったら嬉しいぐらいの気持ちで。

ライブラリは haxelib install ~ で入れる。基本的にJavaScriptライブラリガッツリ書いてた人には物足りないのだが、Haxe側の機能として解決できる方向で頑張る。

とはいえ、仕方ないので var log = untyped __js__('console.log.bind(console)') みたいな感じになる。

バインディングライブラリの書き方はあとで調べよう

使えそうなライブラリ

資料

尾野さんの資料で概略

altJS勉強会「Haxeすごいからみんな使え!」

日本語の資料は2系だったり不完全だったりするので、最初に公式の英語のドキュメント読むのがいい。

Introduction - Haxe - The Cross-platform Toolkit

ググッて出る資料は2系のが多いので、次に Haxe 3 Migration - Haxe を読んだほうがいいかも

TipsはQiita読むのが雰囲気察せてよい

Haxe Advent Calendar 2013 - Qiita

Githubでどんなライブラリが活発か雰囲気掴む

Trending Haxe repositories on GitHub today

とりあえずGulpでbowerあたりと無理矢理つないだプロジェクトスケルトン書いた。

mizchi-sandbox/gulp-webapp-haxe-skl

Phaserのバインディングあったのでなんかゲーム書きます。