ひしだまの変更履歴

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

クトゥルフリプレイ『るるいえとらべらーず』

2013-09-16 22:29:03 | TRPG

クトゥルフ神話TRPGリプレイ『るるいえとらべらーず』(2013-08-31)

年1回くらいのペースで出ている“るるいえ堂”シリーズ。すっかり定番な感じになって、良し良し(笑)

今回は『ニャル子』が流行った後なので、オビの「これが本当のSAN値ピンチ!」にまず笑ったw
(ちなみにニャル子のアニメの第一期はMSXが出るかもしれないということで見ていて、(MSXは出なかったけど)ネタ満載で面白かった。「SAN値ピンチ」は第二期のアニメの主題歌だったか? 第二期が始まるらしいという話を聞いてから、気付いたら終わってた^^;
まぁ、ニャル子はいいや。『人類は衰退しました』の第二期だったら悔しいけど!)

それと、ドラマCDが付録に付いていたのが驚き。
前半はシリアスに進んでいったけど、クトゥルフだから、正気を失うシーンは欠かせない。わざとらしいまでにテンション上げてるシーンとかも聞いてて明らかに異常だしw、いやぁ、声優って本当にすごいなぁと思う。
後半は…ニャル子を逆にネタにしてるしなw
色々攻めていて、なかなか面白かった(笑)

コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

XtextによるAsakusaFW独自DSL実験

2013-09-14 23:59:59 | プログラミング

独自DSLのエディターを作るのにXtextがあまりに便利なので、ふと思い立ってAsakusa FrameworkのBatch DSL・Flow DSLの独自言語を作ってみた。

DSLの定義とハイライト(色付け)アウトラインの表示・基本的なソース整形まで、1日で出来た(笑)
Batch DSLの方は、バッチクラス(本来のJavaのBatch DSL)を生成するところまでやってみた。

DSLの見た目はとりあえず問題なさそうだけど、入力補完が出来ないと、やはり便利ではない。
Batch DSLの場合はJobクラス(Flow DSL)自体を補完する必要があるし、Flow DSLはオペレータークラスやメソッドを補完する必要がある。
JobクラスやOperatorクラスを探す部分を作るのは大変そう。

それと、(忘れてたけど)オペレーターは色々な種類の引数を定義できるんだよね。
これをDSL上で表現するのも面倒(やり方は分かっているので、本当に面倒なだけ)^^;

という訳でかなり簡単に独自のAsakusa DSLは実現できそうだけど、実用性はよく分からないので、とりあえずここまで。


本家のAsakusa DSLは、Javaをホスト言語とする内部DSLとなっている。
オペレーターをJavaで書くので、それを呼び出すFlow DSLもJavaで作ると、Javaのエディターの機能(クラスやメソッドの入力補完)がそのまま使える。
やはり内部DSLにもメリットがある。

コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Xtext超便利!

2013-09-09 00:02:01 | PG(Java)

「Xtextってものがあるよ」と言われたので試してみたら、超便利で感激した!

Xtextは、DSLのエディターを作れるフレームワーク(Eclipseプラグイン)。
BNFみたいな記法でDSLのルールを定義するだけでエディターが作られるので、非常に便利。 

自分独自のDSLを作りたいと思った場合、内部DSLと外部DSLという2つの方式がある。
内部DSLは、他の言語(ホスト言語と呼ぶ)上でDSLを記述できるようにする。例えばScalaやRubyは内部DSLを作るのに向いているらしい。
外部DSLの場合は、DSLを読み込んで解釈するパーサーを作らなければならない。パーサーを生成する言語も色々あるが、Xtextはパーサーだけでなくエディターまで生成されるところが優れている。
内部DSLを使うのは、パース(解析・解釈)の部分を作るのが大変であるとか、ホスト言語のエディター(やコンパイラー)を使えるとかの理由があるのだが、Xtextがあれば外部DSLも充分作りやすい。 

Xtextで生成されるエディターでは、(DSLのルール定義をするだけで)キーワードに色が付いたり、入力補完できるようになったり、文法エラーが出たりする。
ハイパーリンク(クロスリファレンス)も定義できて、(定義しただけで)リンク箇所を検索したり連動して改名したりできるのにはとても驚いた。
Xtextの基本機能で出来る内容

生成されるクラスや親クラスの各メソッドがprotectedになっていたりDI(依存性の注入)で別クラスを使用できるようになっていたり、拡張性がよく考えられていて好感が持てる。
やっぱフレームワークはこうでないと(笑)

Xtextがあまりにも優れているもんだから、素のEclipseプラグインとして作っていたDMDLエディターをXtextで作り直した。(Xtext版DMDL Editor、略してDMDL EditorX
DMDLエディタープラグインもだいぶ作り込んでいたので捨てるのは勿体無いんだけど、機能追加が面倒だなぁと思っていた部分が、Xtextだと何もせず実現されていたりするので。
Eclipseプラグインの勉強をしながら1ヶ月くらいで作ったものが、Xtextの勉強を始めて半月くらいで出来た。
Xtextと関係ない機能も移植したけど、構文木関連のクラス名をちょっと変える程度で移植できたし。

Xtextの構文木(EObjectやINode)を用いてDSLを置換する面の機能はちょっと弱いような気がするけど、まだ使い方が分かっていない部分があるからだろう。

という訳で、DSLを作りたいと思う人がどれくらいいるのか知らないけど、Xtextは便利ですよ(笑)

コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

『アルゴリズムを学ぼう』

2013-09-08 12:31:08 | プログラミング

アルゴリズムを学ぼう』『続・アルゴリズムを学ぼう川中真耶、杵渕朋彦、椎名俊輔
(著者に知り合いがいるのに今頃買ったなんて、口が裂けても言えない^^;)

噂どおり、ゆるふわなイラストで油断させたガチの内容(笑)
基礎的な内容から探索・ソート・暗号・シミュレーション・AIなど、いろいろなアルゴリズムに触れている。

特に一番最初のデータ構造と計算量は、大学の情報工学科でも出てくる本当に基本的な話なので、仕事でプログラミングをする人は押さえておいた方がいい。
少なくともデータ構造に関しては、オブジェクト指向厨だろうが関数型モヒカンだろうがstaticおじさんだろうが、絶対把握しておくべき。
とか言いながら、「ヒープ」がデータ構造の一種だって、初めて知ったんだが(爆)

JavaのTreeMapが赤黒木だったのも知らんかった。
NP完全とかP=NP問題とかも言葉は聞いたことあったけど、そういう内容だとは知らんかった。
暗号の概念の話とか面白いね。公開鍵暗号の解説は世の中に多いけど、DESの暗号化の方法(アルゴリズム)の説明は初めて見たw
逆行列の計算とか、なんか昔習ったような気がする。
文字列の探索(マッチング)もKMP法は習った覚えがある(名称は忘れ去っていたが)。
オートマトンも習った、懐かしい。
山登り法も聞いた覚えがある。

というように、情報工学科の人間が習っている内容なので、プログラミングをやっていてそういう基礎を知らない人は、興味があるならこの本は向いているかも。 

ただし、アルゴリズムの個々の内容については解説は色々されているものの、数学に挫折した自分には、最後の「ゆえに○○である」の部分がなんでそうなのか理解できなかった(飛躍しているように感じた)ので、本当に理解したければ他に専門書を勉強すべきなんだろうなぁ。

最後に気になる点をひとつ。
レッドブルを温めて飲んだらどうなるか、著者らは試したのだろうか?(笑)


(2013/09/10追記)
この本のストーリーは、アルゴリズムの解説という意味では不要かもしれないけど、面白かったよ(笑) 1冊進む度に1年経過しているということは、4年生・大学院で、あと4冊くらいは余裕だよね?
という訳で、 トランザクションとか分散処理とかのアルゴリズム解説を期待(爆)

コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

DX3リプレイ『ゼロ・ポイント』

2013-09-08 11:41:08 | TRPG

ダブルクロス3・リプレイ『ゼロ・ポイント』 囲 恭之介/夢中工房

某TRPG専門店に行ったら売ってたので買ってきたのだが、これ面白いぞ!?
囲さん(夢中工房)ってジャイアント・アレージというイメージだったけど、ダブルクロスのリプレイなんてのも書いてたんだな。

シナリオの内容とか流れとかRハンドアウトの使い方とか、とてもよく出来てる。
強いて言えば、この分量で1話は長すぎるんでね?ってくらい^^;

コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする