IntelliJ IDEA Haxe plugin 使用感と FDT Haxe エディタとの比較
前回の記事「IntelliJ IDEA Haxe」を書いた後、IntelliJ IDEA Haxe plugin (& Python plugin)にて じっくりとコーディングを行なってみての使用感です。
Haxe plugin に関する日本語の情報はあまり見つからず、果たしてどこか設定を行えば解決するのか、あるいはそういう仕様であるのかが分からない部分もあります。間違った箇所がありましたら ご指摘ください。
Refactor 機能は完璧ではない
Haxe には型推論機能があります。
Haxe 型推論
http://haxe.org/ref/type_infer?lang=jp
このおかげで、あらゆる箇所で型の宣言を省略した記述が可能になります。しかし省略してしまうとエディタ側(もしくはコンパイラ?)で推論できない箇所が出てきてしまうようで、Refactor の Rename コマンドが機能しない場合があります。
例えば以下の様な三つのクラス User, Human, Sample があったとします。コンストラクタ等の記述は略しています。
class User{ public function execute(){ var human = new Human(); human.getSample().run(); } } class Human{ public function getSample(){ return new Sample(); } } class Sample{ public function run(){ } }
ここで、Rename 機能を用いて Sample.run メソッドを Sample.test に変更したとします。
Rename に合わせて human.getSample().run(); の行は human.getSample().test(); に変更される事を期待しますが、何も変わってくれず human.getSample().run(); のままとなってしまいます。
Rename 機能を確実に動作させるためには Human.getSample メソッドの戻り値の型を省かずきちんと記述する必要があります。
class Human{ public function getSample():Sample{ return new Sample(); } }
もしくは以下のように受け取り側で型を指定します。
public function execute(){ var human = new Human(); var sample:Sample = human.getSample(); sample.run(); }
コーディング中のエラーチェックはあまり厳しくない箇所がある
FDT Haxe エディタの場合、Live error checking 機能により存在しない変数やメソッドの利用を行った際 エラー表示を即行なってくれます。例えば適当に「aaa」と入力すると、「aaa は存在しない」といったエラー表示が行われます。
対して、IntelliJ IDEA Haxe plugin では「aaa」と入力してもコーディング中は何も起こらず。コンパイル時にエラー表示が行われます。これはそういう方針・仕様なのかもしれません。もしくは設定によってはエラーチェックが厳しくなるような機能が用意されている可能性もあります。
IntelliJ IDEA のエラーチェック周りの設定は調べてみるも、ちょっとわからずです。
コンパイルされたファイルの出力ディレクトリ設定が変更不可
色々設定を探してみたりネットで調べてみるも、どうしても解決できていない問題です。
IntelliJ IDEA では Haxe ソースコードをコンパイルし js ファイルに出力する際、出力先ディレクトリの指定を行えます。しかし、その指定したディレクトリ内に release というディレクトリが作成されてしまい、その release ディレクトリ内に js ファイルが出力されます。release というディレクトリを無くしたい、もしくは名称を変更したい場合 どうすればよいのか分かりませんでした。
Ant 機能があるので、コンパイルと同時に出力された js ファイルを任意のディレクトリに移動する、といった方法はあるかもしれません。
他プログラミング言語開発環境で使用可能な機能が使えるとは限らない
Refactor 機能があるからといって、IntelliJ IDEA の他のプログラミング開発環境で使用可能な機能が haxe plugin でも使用できる、という事はないようです。これは eclipse にも言える事でした。
変数をフィールド変数に変更する機能が使用できれば嬉しかったのですが、ないのでやや残念。メソッドの返り値をローカル変数に割り当てる、といった機能はありました。
メニューの Refactor -> Extract -> Variable がその機能となります。こちらの windows 環境では Alt + Shift + L で利用でき、そこそこ便利な機能です。
まとめ : FDT Haxe エディタと IntelliJ IDEA Haxe plugin の併用が良い
まだまだ欲しい機能はあるものの Refactor 機能のおかげで、FDT Haxe エディタよりも IntelliJ IDEA Haxe plugin のほうが より効率よく開発が行えます。
コーディングは IntelliJ IDEA Haxe plugin にて行ない、背後では FDT Haxe エディタを立ち上げておき、IntelliJ IDEA では足りないエラーチェックは FDT Haxe エディタで行う、とするのが今のところの私の開発スタイルとなっています。
両ツール共に自動更新機能があるため、IntelliJ IDEA で存在しない変数やメソッドの利用を行った場合 FDT 側でエラーを探知してくれます。そして FDT Haxe は任意のディレクトリへ js ファイルの自動コンパイル出力を行なってくれるため、IntelliJ IDEA 側でコンパイルする必要はありません。
IntelliJ IDEA Haxe plugin は有料版でないと利用できない、との事ですが、個人ライセンス(商用可)ならさほど高くない値段($199)です。Haxe での開発効率を上げてみたい方は、一度試用をおすすめします。
一年程度の間隔でアップデートがあり アップデートには料金がかかるとの事ですが、アップデートしなくても使えるのかどうかはちょっと不明です。使えるのであれば、必要時にアップデートするという方法で充分といえる内容でもあります。
追記)twitter より
https://twitter.com/cellfusion/status/300454035432013824
FDT では js ファイル出力設定には hxml というものが利用されている、との事です。
FDT の haxe プロジェクト作成時に生成される compiler.hxml を IntelliJ IDEA の Project Setting から指定すれば、js ファイル出力先ディレクトリに release ディレクトリが生成されることはなくなりました。ありがとうございます。