Asakusa FrameworkでXMLファイルを読み込む方法を考えてみた。
JavaでXMLファイルを読み込むライブラリーはいくつかあるが、AsakusaFWで使うにはStAXが向いている。
ただし、ファイル分割は出来ない(というか非常に面倒な)のと、タグがネストしていて内側の個数が不定のような場合はデータモデルをどうすればいいか等の問題があるため、AsakusaFWでXMLファイルを汎用的に扱うのは難しい気がする。
Asakusa FrameworkでXMLファイルを読み込む方法を考えてみた。
JavaでXMLファイルを読み込むライブラリーはいくつかあるが、AsakusaFWで使うにはStAXが向いている。
ただし、ファイル分割は出来ない(というか非常に面倒な)のと、タグがネストしていて内側の個数が不定のような場合はデータモデルをどうすればいいか等の問題があるため、AsakusaFWでXMLファイルを汎用的に扱うのは難しい気がする。
2017/4/26にAsakusa Framework0.9.1がリリースされた。→リリースノート
ドラクエ10の大型アップデート(ver 3.5中期)と同じ日だったからDQ10を優先したので
今回は大きな機能追加が多かったので!試すのにちょっと時間がかかった!
まず、Direct I/Oのformatted text。これはcsvやtsvといったファイルの汎用的なもの。
従来のdirectio.csvより実行速度は若干劣るが、設定できる項目が豊富。項目数が不定(可変)のcsvにも対応している。
(これに伴い、DMDLに新しい文法(escape_sequenceの設定で使うマップ形式)が追加されているので、DMDL EditorXの対応しなきゃ…今のままだと、その文法がエディター上でエラーになってしまう)
Operator DSL関連では、StringOption(およびOption系共通のValueOption)やStringOptionUtilにメソッドが加わっている。
大きな変化として、GroupSortとCoGroupで、Listの代わりにIterableで入力を受け取れるようになった。(これはドキュメントには書かれていない模様)
それに伴い、@Once・@Spillというアノテーションが追加になっている。
それから、Operatorのテストで使うMockResultを生成するユーティリティーが加わった。→OperatorTestEnvironment#newResult
フローのテストでは、ファイルを直接読み込む機能が追加された。
Excelファイルで入力データや検証データを書く代わりに、直接csvファイル等を使うことが出来る。
M3BP関連では、アクセス方式nioの2GB制限が無くなった。
今までは結構当たり前のようにunsafeに変えてたけど^^;、今後はnioのままで良さげ。
あと、今までコンパイルにgccを使っていた(もしくは使ってなかったけど設定は必要だった?)のが、不要になった。(g++のみになった)
Windows上でコンパイルする為の自分の手順ではCMAKE_C_COMPILERを指定してたんだけど、これが不要になる。(付けたままだと警告が出る。警告なだけなので無視すればいいけど)
最後に、まだincubatingな機能だけど、GroupViewというものが追加されている。
これは従来のDirect I/O APIのようなもので、Update等の各演算子から他のデータを読めるもの。たぶんこちらが正式機能になると思われる。
コーディング方法もテストの記述方法もDirect I/O APIよりすっきりしている。
フローの結線にもデータが現れるので、「フローに無いのにデータを使ってる…」といった誤解も無くなるだろう。
早く正式機能にならないかなw