Asakusa Framework 勉強会 2014冬で話題にしたAsakusa Framework0.6.0が出ましたよ。
→リリースノート
今回は色々大きい機能変更・機能追加が!
まず、標準のビルドシステムが今までのMavenからGradleに変わった。
と言っても、当面はMavenでも今まで通り使用できるけど。
でもGradleプラグインの方が環境構築が簡単なので(Maven版だとMavenをインストールする必要があるが、GradleプラグインだとJavaだけ入っていればいい)、今後はGradleプラグインを使うのがお薦め。
(Jinrikishaも、内部ではGradleを使うように変わった模様)
それから、Shafuが公開された。(前からひっそり公開されていたけれど、ドキュメントが今回公開された)
ShafuはEclipseプラグインで、これをEclipseにインストールしておくと、Asakusaプロジェクト作りからDMDLコンパイルやバッチのビルドまで、全てEclipse上で行うことが出来る。
裏ではGradleのコマンドを実行しているだけなんだけど、手動でgradleコマンドを実行しなくてもいいので、とても便利♪(gradleコマンドの引数をよく忘れるから^^;)
開発環境作りが、LinuxならJinrikishaで一発だったけどWindowsは面倒だったのが、Shafuを使えばWindowsでもとっても簡単。
上で「Gradleプラグインがお薦め」と書いたけど、Shafuを使えばGradleを意識する必要も無い(笑)
テストドライバーのテストデータ指定方法の機能追加も大きい。
今までExcelファイルでFlow DSL(やBatch DSL)のテストデータを書いていたが(JSONも使えたけど)、Javaプログラムでデータをコーディングできるようになった。
データをプログラムで生成したいような場合に便利。
そして今回びっくりした機能と思われるのが、(まだサンドボックスだから正式機能じゃないけど、)テスト用のエミュレーションモード!
AsakusaFWではFlowやBatchのテスト時は実際にHadoopを実行する。この実行方式が、今まではhadoopシェルを経由して実行していた(つまりJavaVMが別だった)のが、AsakusaFWのテストドライバーと同一のJavaVM上で動かせるようになった。
これがどういう事かと言うと、Operatorクラスに(Eclipseのデバッグ機能で)ブレークポイントを指定しておくと、FlowやBatchのテストをデバッグ実行することで、ブレークポイントで止めてデータを見たりすることが出来るのだぁ!
(なお、Flow DSLやBatch DSLのクラスのdescribeメソッドにブレークポイントを指定しても駄目ですぜ。アドベントカレンダーにも書いた通り、Flow DSLやBatch DSLのクラスが実行されるのはコンパイル時なので、実行時には呼ばれないから)
テストドライバー以外に、バッチを実行するクラス(BatchTestRunner)も公開された。
YAESSの代わりにこのクラスにバッチIDを指定してEclipseからデバッグ実行することで、バッチを実行させ、ブレークポイントで止めることが出来る。
あと、もしかしたら大きいかもしれないのが、(これもサンドボックスだけど)ローカルモードでのジョブ実行の自動切り換え。
これは開発用の機能ではなくて運用用の機能。
通常はHadoopクラスター上で実行するが、データが小さいときはローカルモードで実行する。
クラスターの切り替えは以前からジョブキューで出来たが、ジョブキューでスタンドアローンモードと切り替えるより、今回の機能の方が良さそう。(少なくとも設定は非常に簡単)
以上、0.6.0はかなり大きな変更が入っている。
大きめのサンドボックス機能もあるので0.5.4でも良かったんじゃないかなーと思わなくもないけど^^;、Gradleへ移行したという意味では0.6でもおかしくないかな。