ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

AsakusaFW0.6.0大変革

2014-02-17 23:31:52 | PG(分散処理)

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でもおかしくないかな。


Asakusa Framework 勉強会 2014冬で発表しました

2014-02-02 23:06:53 | PG(分散処理)

2014/1/29『Asakusa Framework 勉強会 2014冬』に参加・発表してきました。

今まで勉強会へは何度も参加していたけれど、発表したのは初めてです。話す内容は決まっていたので緊張はしなかったのですが、やっぱりあまり上手く話せませんでしたorz
時間もオーバーしてしまったような(汗) 冒頭の自己紹介がちょっと余計で長すぎたかもしれません^^;

自分としてはAsakusaFWを気に入っているので、多くの人に使ってもらいたい。これは今回の勉強会の主催者の土佐さんと同じ想いです。が、自分がやるのは“試したことをウェブに書く”程度(AsakusaFWに限らず、利用したソフトウェア等について今までウェブに書いてきたのも、そのソフトウェアへの貢献の一環のつもりでもある)で、土佐さんのように勉強会を開催する方向には行かないので、土佐さんの行動力に脱帽・感謝です(笑)


発表者は自分の他に2人、土佐さんと平松さん。

土佐さんがライブコーディングでAsakusaFWによる実装の流れを一通り実演。
平松さんはAsakusaFWの演算子の紹介と演算子リファレンスの読み方を説明してくださいました。

冒頭で土佐さんがAsakusaFWの特徴を挙げていましたが、改めて聞くと忘れていたこともありました(爆)
・テスト機能が充実している
・MapReduceをほぼ意識せず実装可能、最適化が高度
・バッチ実行やログ周辺機能が充実している

バッチ実行辺り(実行用のシェル(yaess-batch.sh)が用意されており、jarファイルは自動的に読み込んでくれる)は無意識に使っていたので、そう言われればそうだなーと思いましたw

平松さんの“演算子を1ページにまとめた表”は、今まで見たことがない描き方で分かりやすかったです。
それと、演算子リファレンスとの戦い方(ドキュメントの見方)も良かったです。
慣れてしまうとあのドキュメントで分かるので^^;、「知らない人が見るとここでハマる」という具体的な説明はとても参考になりました。
「『入力1、出力1』と書いてあるのに、Operatorクラスのメソッドの戻り値がvoid」…うん、そういう疑問を持っても全く不思議じゃないですね^^;
個人的には演算子の図とメソッドの具体例があった方がいいかもしれないと思っていて、最近書いた自分のウェブページでは少し具体的に書いてみたりしています→@Updateの例


自分が発表した内容は『DMDL EditorXとToad Editorの紹介』です。
ちょうど2013年の1年間にこれらを作っていたので、発表の機会として良いタイミングでした。
発表資料(表紙の背景が白くなっててタイトルが読めない(爆)ですが、ダウンロードしてpdfリーダーで見るとちゃんとしているらしいです^^;)

DMDL EditorXの方はけっこう広まっているみたいですね。
土佐さんの環境にも平松さんの環境にもインストールされていました(笑)
ありがたいことです。

DMDL EditorXXtextで作っていて、デモでもお見せしましたが、テキストエディターとしての機能はXtextのものです。
エラーチェックは自前でAsakusaFWのDMDLパーサーを呼び出しています。問題ビューにエラー一覧を表示して、そこからエラー箇所にジャンプできるのは便利だと思います。
コンパイル機能(DMDLからJavaソースを生成する)も便利だと思っていたのですが、AsakusaFW本家から新たに公開されたShafuでも出来るようになったので、そちらを使うべきでしょうorz
あと、属性(@directio.csvとか)を追加するウィザードも便利だと思います。
あと、Javaソースからdmdlファイルへジャンプできるのも便利だと思います。 

Toad Editorもデモを行いました。
しかし、Toad Editorはひとまず自分で最低限必要と思う機能が出来ているだけで、便利機能はまだまだこれからです。(質問にもあった、Javaソース生成前の検証機能やOperatorメソッドの雛形の一括生成機能など)
AsakusaFWの集計サンプル以外ではあまり試していないので^^;、バグもあると思います。

ただ、自分の想定では、Toad EditorでJobFlow・Batchの図を描くと、Flow DSL・Batch DSL(Javaソース)は完全に自動生成できると思っています。
(平松さんが面倒と言っていたFlow DSLのコンストラクターなんかは生成できますw)
FlowPartについては、値引数がまだ中途半端で、型引数もまだ対応していませんが、値引数に完全に対応するのは無理かも?

いずれにしても、実際に使ってみて感想や要望をいただけると嬉しいです(笑)→Toad Editorのissue

DMDL EDitorXやToad Editorは、いわばAsakusaFWのエコシステムみたいな感じですかね。個人的には、こういう(プログラミングに使う)ツール作りが一番好きです(笑)


今回の勉強会は初心者向けという触れ込みでしたが、本当に全くAsakusaFWを知らない人には分かりにくかったかもしれません^^;
自分の発表なんかAsakusaFWを知ってる前提丸出しでしたし(爆)、Batch DSL・Flow DSL・Operator DSL・DMDLの階層の説明とか演算子とは何かという説明もありませんでしたし。

とはいえ、勉強会の時間内で全部説明するのは無理ですからねぇ。

ただ、今後定期的にAsakusaFWの勉強会を開催していくようですので(2014春ももう決まっているw)、部分部分をピックアップしていくのもいいかもしれませんね。

以上、ありがとうございました。