スクールアイドルです

冷やし中華はじめました

Haxe書いてた際の成果物

haxelib newコマンドが追加されていた - Qiita

いろいろあって年末年始はHaxeを書いていた。 本当はHaxeからJavaScriptへのコンパイルについて調査するつもりだったはずが、開発環境周りであれがないこれがないと言っていろいろ作った。

RubyにおけるGemはあれどBundlerが見当たらず、ライブラリをインストールするとすぐにディレクトリがゴミ箱のようになるのが気に食わなくて、それを回避する方法をひたすら探していた。

hxenv

MisumiRize/hxenv · GitHub

rbenvとかplenvと同様、haxe, haxelibのバージョンを管理するツール。使い方はrbenvと完全に一緒なのでrbenvの使い方で調べたら使える。

haxe-buildは用意してない、公式ビルドを拾ってきてexpandしたのをversionsの下に放り込んで、systemをHEADにして切り替えて使っていた。

$ tree -L 3 .hxenv
.hxenv
├── shims
└── versions
    └── 3.1.3
        ├── haxe
        ├── haxelib
        └── std

4 directories, 2 files

haxelibが~/.haxelibを見ているので、使うバージョンを切り替えるごとに~/.haxelibをガチャガチャ触る行儀の悪い仕様になっている。お気をつけください。

halc

MisumiRize/halc · GitHub

CLIツール作成ライブラリ。Haxe版bundlerを作ろうとした時の中間生産物。

Golangcodegangsta/cli · GitHubのような感じで書けるように作っている。実際の使用例は後述のtsuzuraを参照。

tsuzura

MisumiRize/tsuzura · GitHub

haxelib newが見つかって頓挫したHaxe版bundler。installコマンドまで実装したところで頓挫した。

{
    "dependencies": {
        "lime": ""
    }
}

プロジェクトルートにlibfile.jsonという名前でJSONファイルを作成し、そこでtsuzuraをhaxelibから実行する。

$ haxelib git https://github.com/MisumiRize/tsuzura
$ haxelib run tsuzura

すると、libfile.jsonと同階層に.haxelibディレクトリが掘られ、そこに依存定義されたライブラリがインストールされる。結果的にhaxelib newしてからhaxelib installしたのと同じ状況になるので、あとはお好きにどうぞ。

現時点の感触

まだHaxeからJavaScriptへのコンパイルに着手していないが、Haxeという言語そのものは多少クセがあるもののとっつきやすい言語だった。むしろ情報が新旧混在しており、最新版の情報がいまいち不足しているあたりに厳しさを感じる。

とっつきやすい言語だったとはいえ、何かにつまづくとHaxeの内部実装を見ることになりOCamlが待ち受けているあたりはFlowと同じ。

Haxeの売りのひとつとされているマルチプラットフォームはWrite once, debug everywhere的なつらみしか感じなかった。