ひしだまの変更履歴

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

2015秋アニメについて一言

2015-12-30 12:32:28 | Weblog

2015年の秋アニメ(10~12月)の感想。

今季は前季に比べてこれといったものが少なかった無いイメージ。前季はなんと言ってもケイオスドラゴンがあったしね!

今季のトップは、『うたわれるもの 偽りの仮面』か『ヘヴィーオブジェクト』か悩ましいところ。
まぁ、ゲームの『うたわれるもの 偽りの仮面』を買っちゃったしな(笑)(→ゲームの感想

ゲームの『うたわれるもの 偽りの仮面』は終わり方がびっくりだったけど、アニメはどこまでやるんだろうな?
12月末時点ではアニメは主要キャラがようやくほぼ出揃った段階で、来季から戦乱に突入。やはり来季いっぱいでゲーム版の終わりまでかなぁ。 

『ヘヴィーオブジェクト』は面白かったね!
まともに戦ったら勝てない相手にアイデアで勝利するという話は大好きだ。
それに、主人公が男1人でないところがいいね。よくあるハーレムものだと、主人公以外に男が出てきても、どう見ても脇役だもんな。

『進撃の巨人中学校』は15分アニメだったけど、『進撃の巨人』を少しは知っているだけに、面白かった。
オープニングの曲のアレンジ(学校のチャイムの音)も良かったね。歌っている人も格好良く歌ってて、ああいう、ギャグを真面目にやるのはけっこう好きだw

『櫻子さんの足下には死体が埋まっている』は、タイトルの勝利ですな。「どういうこった?」って思うもんな(笑)
推理物もけっこう好きだw

そういえば、『対魔導学園35試験小隊』って、新作だったの?
冒頭のビルでの戦いで援護射撃を全然別のビルに撃ち込んだシーンに見覚えがあったので、てっきり再放送だと思ったんだけど。これはデジャヴだったか、他のアニメと勘違いしたか?

『ご注文はうさぎですか??』は新作だったよね。同時に再放送もやっていたので、ちょっと混乱することがあったけど^^; 

『コンクリート・レボルティオ 超人幻想』は時代が切り替わるのが分かりにくかった。年代の数字は表示されるけど、それが過去なのが未来なのかぴんと来ないので。
ついでに言うと、台詞を聞いているだけで画面を見てないことがよくあるので…。

そういう意味では、『終物語』も文字でツッコミをすることが多いので、気付かないことがよくあったな(苦笑)
それにしても物語シリーズ(って、ひどいシリーズ名だよな^^;)って怪異の話だと思ってたから、最初の話は「あれ?こんなのなんだ?」ってちょっと混乱した。物語シリーズをほとんど知らないので、他の話のキャラが出てきてもよく分からないしね。
それにしても独特な雰囲気だよな、物語シリーズって。僕は嫌いじゃないが、好き嫌いが割れそう。

後はまぁ、見てましたよ、くらいで『コメット・ルシファー』『落第騎士の英雄譚』『学戦都市アスタリスク』『終わりのセラフ』。正直、眠いときは見ないこともあったorz
特に『落第騎士の英雄譚』と『学戦都市アスタリスク』は、内容がモロ被りだったね^^;
学園+大会ものは戦いのスケールと世界の中でのスケールのバランスがとれてないことが多くて好きじゃない。ただ、『ハイキュー!!』は面白い。

『ウルトラスーパーアニメタイム』と『Fate/Zero』(再放送)は、残念ながら同時間帯にやっていた『白熱教室』の方を見ていた。
『ノラガミ ARAGOTO』は、一部の時間だけ『ログ・ホライズン』とかぶっていたので、『ログ・ホライズン』の方を優先した。ログ・ホライズンはTRPGになっているので、やはり見ておかないといけないだろう。

あと、『ワンパンマン』というのが面白いという評判を聞いたので途中からちょっと見てみたんだけど、確かに面白そうだった。再放送すれば最初から見たいかな。
(普段見ているのと違うチャンネルだと、やっているのに気付かないorz テレビの番組一覧で同画面内に収まっていれば見えるので気付くんだけど、うちのテレビでは、チャンネルの並び順の都合上、画面外。スクロールさせないと見えないが、しかしスクロールが遅いのであまりスクロールしない) 

再放送では、『あの日見た花の名前を僕達はまだ知らない』が良かったね!
学園ものとか青春ものは嫌いなんだけど、これは良かった。見たことは無かったけど、曲に聞き覚えはあったし。とても良い曲だよね。

あと、前季からやっていた『シュタインズゲート』の再放送だけど、第23話が再放送ではなく新作だったそうで。初めて見ていたから、そんなこと分からなかったよ^^;
別途ちゃんとした23~24話を見たけど、クリスが助かる方が絶対良いね。
さて、その新作23話から続くというゲームを買うかどうか、悩む…。 

コメント

拡張機能使用版WordCount

2015-12-24 00:00:00 | PG(分散処理)

Asakusa Framework Advent Calendar 2015の24日目です。

AsakusaFWの標準的な機能だけを使ったWordCountは以前から公開していますが、AsakusaFW0.7.5で@directio.lineがsandboxに導入されたことを機に、拡張機能を使ったWordCountを書いてみました。
@directio.lineを使ったテキストファイル読み込みの他、拙作の機能を使ってコーディングする手順を書いています。

最初にAsakusaFW版WordCountを書いた頃は、まずHadoopありきだった(Hadoopの勉強をしてからHadoopを使うアプリを勉強し始めた)ので、Hadoopの基本であるWordCountを色々なアプリで書くということをやっていました。今となっては素のMapReduceでコーディングすることはないと思う(やろうとしているのなら、他のフレームワーク(AsakusaFWとかw)の導入を考えるべきだと思います)ので、いつまでもWordCountでも無かろうと思わなくもないのですが、変換→集計という最小限のサンプルとしては今でも有用だと思います。


拡張機能使用版WordCountでは、@directio.lineによるテキストファイル読み込みの他に、拙作のテンプレート機能を使っています。
これは、テンプレートファイル(FreeMarker)を使ってDMDLからJavaソースを生成するものです。テンプレートファイルにJavaコードを書いておき、データモデル名やプロパティー名部分だけを置換してJavaソースを生成します。

実業務では、入出力ファイルが増えてくると似たようなImporter/Exporterが増えてきます。データモデル名部分だけが違うファイルをいちいち作るのが面倒だったので、このようなテンプレート機能を作ってみました。(と言いつつ、実業務ではまだ導入していないのですが^^;)

テンプレート機能としては生成できるのはJavaソースに限らないのですが、AsakusaFWのDMDLのSPI機能では、基本的にファイルの出力先がJavaソース用ディレクトリーしか指定できない為、今はJavaソースだけを対象としています。


また、拙作のOperatorのテストツールの使用例も書いています。

通常のOperatorの単体テストでは、AsakusaFWが生成するメソッド(Operator上のabstractメソッド)のテストは書きません。
大抵は集計キーやグルーピングキーに関するメソッドになるので、テストしたければ、フローのテストで行います。が、それでは他の演算子との組み合わせのテストになってしまいますし、メソッドひとつのテストだけの為にFlowPartを作るのもどうかと思います。

という訳で、拙作のテストツールでは、Operatorのabstractメソッドのテストも行うことが出来ます。
擬似的な集計/グルーピングを行うので、通常の単体テスト(メソッドを1回だけ呼び出せばいい)よりも、入力データや出力結果の検証量が増えてしまいますが。


さらに、拡張機能使用版WordCountのページでは、フロークラスやバッチクラスの生成等に拙作DMDL EditorXの機能を使う方法を書いています。

これらの機能は、来年のアドベントカレンダー辺りで紹介したいと思います(爆)

コメント

DMDL EditorX機能紹介8:階層表示

2015-12-22 00:00:00 | PG(分散処理)

Asakusa Framework Advent Calendar 2015の22日目です。

拙作DMDL EditorXの機能紹介、今年最後は階層表示です。

dmdlファイル上でデータモデルにカーソルを合わせてからF4キーを押すと、階層ビューが開きます。
あるいは、右クリックしてコンテキストメニューを開き、「Open DataModel Hierarchy」を実行します。

データモデル階層ビューは、Javaのクラスの継承関係を表す階層ビューと似ています。
つまり、他のデータモデルを参照しているデータモデル(foo = hoge + {};とか集計モデルとか結合モデルとか)がある場合、参照しているデータモデルを階層表示します。また逆に、自分を使っているデータモデルも表示します。
(この検索は全データモデルを走査することになるので、ちょっと時間がかかります)

階層ビューは上下に分かれており、上はデータモデルの階層、下はプロパティー一覧です。
右上には親階層か子階層かを選択するトグルボタンがあり、表示を切り替えることが出来ます。

上側のデータモデルを選択すると、そのデータモデルのプロパティー一覧が下側に表示されます。
プロパティーをダブルクリックすると、そのプロパティーの定義箇所にジャンプします。
プロパティーを右クリックするとコンテキストメニューが表示されます。ここからもクリップボードへのコピー(機能紹介5を参照)やJavaソース上の使用箇所検索(機能紹介7を参照)を行うことが出来ます。


階層ビューのプロパティー一覧には、アウトラインページと異なり、そのデータモデルに含まれているプロパティーが表示されます。
アウトラインページには、そのデータモデルに直接定義されているものだけが表示されます。

例えば以下のようなデータモデル定義があったとします。

hoge = {
    hoge1 : TEXT;
    hoge2 : INT;
};

foo = hoge + {
    foo1 : TEXT;
};

fooに着目すると、アウトラインページにはhoge(データモデル名)とfoo1(プロパティー名)が表示されますが、階層ビューにはhoge1,hoge2,foo1(全てプロパティー名)が表示されます。

なので、データモデルに含まれているプロパティー一覧を見たい場合には、(データモデルの階層を見たいわけではなくても)階層ビューを開くという手が使えます。

コメント

DMDL EditorX機能紹介7:検索

2015-12-21 00:00:00 | PG(分散処理)

Asakusa Framework Advent Calendar 2015の21日目です。

拙作DMDL EditorXの機能紹介、今日は検索機能です。

Ctrl+Shift+F3を押すと、「Open Model Element」ダイアログが開きます。
ここでデータモデル名やプロパティー名を入力すると、それが定義されている場所へジャンプすることが出来ます。
はい、これはDMDL EditorXが利用しているXtextの機能ですw
検索条件に「EClass name」を指定できるようになっているのですが、これはDMDL用に定義しているクラス名そのもの(ModelDefinitionとか)なので、正直、これを使えるのは自分だけかと(爆)

そこで、DMDL専用の検索機能を作ったので、こちらを使う方が便利だと思います。
ツールバーの「データモデル・プロパティーを検索」というボタンを押すとデータモデル検索ダイアログが開きます。
データモデル・プロパティーの名前の他に説明(ダブルクォーテーションで囲まれた部分)等も検索条件に入れることが出来ます。
この検索条件は、基本的に正規表現です。特殊なのは、「*」を入力した場合は「.*」として扱うことです。
なので、「^foo」でfooから始まるもの、「foo$」でfooで終わるもの、といった条件を指定できます。 


dmdlファイル上でデータモデル名やプロパティー名を右クリックしてコンテキストメニューを開き、「Find References」を実行すると、そのデータモデルやプロパティーを参照している箇所を検索できます。dmdlファイル限定ですが、他のdmdlファイル内で使っている場合でも検索結果に表示されます。
Ctrl+Shift+Gでも実行可能です。
はい、これもXtextの機能です。

コンテキストメニューには「Asakusa DSL References」というメニューがあります。
これは、データモデルやプロパティーが使われている箇所をJavaソース内から検索する機能です。
特にOperatorクラス内やフロー(JobFlow/FlowPart)クラスで使われている箇所を探す機能は非常によく使っています(笑)

なお、JobFlow/FlowPartクラスかどうかの判定は、クラスにアノテーションが付いているかどうかで行っています。
Importer/Exporterクラスかどうかの判定は、Importer/Exporterのインターフェースを実装しているかどうかで行っています。
Operatorかどうかは、上記でないもの全てをOperator扱いしています^^; つまり、Operatorとして検索すると、全く無関係のユーティリティークラス等も検索対象に含まれます。
また、これらの判定に意外と時間がかかるので、検索の実行は(普通のEclipseの検索に比べて)少し遅いです。

また、コンテキストメニューの「Asakusa DSL References」→「Open Search Dialog」を選ぶか、メニューバーの「Search」→「Search」を選ぶか、Ctrl+Hを押すと、検索ダイアログが開きます。ここの「DataModel Search」タブで、データモデルやプロパティーをJavaソースから検索する条件をもっと細かく指定して検索することが出来ます。

コメント

DMDL EditorX機能紹介6:ウィザード

2015-12-20 10:04:38 | PG(分散処理)

Asakusa Framework Advent Calendar 2015の20日目です。

拙作DMDL EditorXの機能紹介、今日はデータモデル編集系のウィザードです。

DMDL EditorXのデータモデル編集系のウィザードは以下のものがあります

  • データモデルの作成ウィザード
  • データモデルの編集ウィザード
  • 属性の追加/削除ウィザード

データモデルの作成ウィザードは、表形式でプロパティーの情報を入力できるものです。
DMDLに慣れていない内は結合モデル集計モデルの書き方に戸惑うかもしれないので、ウィザードで生成するのもよいかと思います。
個人的には、新規といっても既存のデータモデルからコピペして修正することが多いのでテキストベースの方がやりやすいのと、仕事で使う場合はExcelに書いたデータ定義から雛形を生成しているので、このウィザードはほとんど使っていません^^;
つまり気付いていないバグがあるかもしれませんが、バグ報告されない限り気付かないので直りません。

データモデルの編集ウィザードは、既存のデータモデルを(作成ウィザードと同じウィザードで)修正できるウィザードです。
こちらは、集計モデルのときは意外と使っていますw
最初に「summarized sum_hoge = hoge => {};」だけ書いて、sum_hogeのところにカーソルを合わせてツールバーの「Edit DataModel」ボタンを押すと、sum_hoge用の編集ウィザードが開きます。
左側の候補一覧にhogeのみ表示されるので、あとは右側にコピーしてkeyやsum・countなどを指定するだけ。
テキストベースだと、説明(ダブルクォーテーションで囲まれた部分。いわばプロパティーの日本語名)を付ける(元のデータモデルと同じにする)のが意外と面倒なので、ウィザードを使う方が楽です。

ちなみに、テキストエディター上では、Ctrl+Space(Windowsの場合)を押すことで入力補完が出来ます。
「summarized」といったキーワードやデータ型、集計モデルや結合モデルで新しいプロパティー名を付ける箇所等では補完機能が使えます。
補完機能も駆使することで、場合によってはウィザードを使うよりもテキストベースで書く方が早かったりするわけです。 


属性の追加/削除ウィザードは、属性(@で始まっているもの(@directio.csvとか@windgate.jdbcとか))を付けたり削除したりするウィザードです。
特にWindGate JDBCを使う場合は、データモデル内の全プロパティーに対して「@windgate.jdbc.column(name="カラム名")」を付ける必要があります。大抵の場合はテーブルのカラム名はデータモデルのプロパティー名と同じでしょうから、ウィザードを使って一律設定することが出来ます。

昔はこのウィザードにバグがあり、ちゃんと変更できる場合とエラーになる場合がありました。
どうも、dmdlファイル内に、他のモデルを参照するモデル(hoge2 = hoge1 + {};等)が存在しているとエラーになったようです。ファイル保存時に、参照しているモデル(hoge1)の存在確認をXtextがするのですが、その時点では内部的にはまだ存在解決が出来ておらず、存在していないものとしてエラーになっていました。
今は存在確認を行わないように修正したので、エラーになりません。

コメント