連休後半は土曜日だけ出社した。土日出社しようとしてたんだが、やろうとしてた仕事が土曜だけで片付いてしまったのであんまり根詰める必要もなかろうということで日月も休み。
イベントサイトの転送量が30GBとか書いてたけど、あのあとAWSを見たらやっぱり60GBで$8.80とかなってた。うわーAWSも即座に集計じゃなかったのか。集計日時には数分前の時刻が書いてあった気がしたけどなぁ。まあ60GBなら想定範囲内なのでこんなもんでしょう。値段的にもまあまあ妥当なところか。
TRPGやりたい。調べると去年1月に一回やったきりだったようだ。こりゃひどい。そんなに前だったっけか。毎月とは言わないが隔月くらいではやれるといいなぁ。
何やろうかと思ってたらSW2.0をやりたいと言われたのでじゃあそれでと。SW2.0とかありきたりだろーとか思ってたんだが、2.0は一度もやったことないので良い機会だわ。そういやルールブック改訂版買ってないからついでに買ってこようかなぁ。
SW2.0だと各自ルールブックを揃えておいてくださいと(まだ)言えるのでいい。何千円もしないもんなー、って945円もすんのか。けっこうするね。 とりあえず今月末くらいにプレイすることを目標に準備したい。初めてだしシナリオは簡単なハック&スラッシュでいいでしょー。
以前RubyでWebGLをいじるってのをやったんだけど、SilverlightでIronRubyをホストしてプラグインの中からブラウザ側をたたいてWebGLをいじる方法で、これがまあいろいろと問題あって使えねーなーという結論だった。
何が問題あるって一番はSilverlightプラグインを入れてないといけないことで、Moonlight亡き今となってはWindowsとOSXでしか動かない。 しかもWebGLだからIEでは動かないし、SilverlightでIronRubyだから起動めっちゃ遅いし、環境が揃っててもなぜか動かないことがあるとひどい状況だったものだ。
ブラウザ内でRuby動かす方法がないからどうしようもねーよなーと思ってたんだが、ちょっと前にOpalというRuby→JavaScriptのコンパイラがあることを知った。これ使えるのか……?
結論からいくと、意外とちゃんと動いた。WebGLで立方体をくるくる回せた。
https://dl.dropboxusercontent.com/u/3160952/opal-webgl/index.html (要WebGLが動くブラウザと環境)
不具合はあるし標準ライブラリなんかは全然ないしJavaScriptのオブジェクトが直接いじれないという厳しい制限もあるものの、以前IronRubyで書いた物が意外な程にそのまま動いた。ちなみにIronRubyはけっこうちゃんとRubyしてる。
Silverlight+IronRuby版のやつをそのまま移植してみたんだけど、さすがにWebGLのオブジェクトをいじる辺りはSilverlightとOpalでJavaScriptのオブジェクトへのアクセス方法が違うので作り直す必要があったんだけど、それ以上の部分は全部Rubyで書いてあって、それがほぼそのまま動いちゃった。
特にビュー行列とか射影行列とかモデル→ワールド行列とか作るのに当然行列とかベクトルのクラスがあって演算してるんだけど、それもそのまま動いた。 まあ演算つっても普通に浮動小数点数をいくらか保持して掛けたり足したりしてるだけなんでそりゃ動くんだろうけど、けっこうでかいクラスで苦労するだろうと覚悟してただけに拍子抜けだ。Opal完成度高い1。
しかし動かせた結果を上げてみたものの、コンパイル結果はソースを見ての通り、単にいかにも何かで生成しましたー的なJavaScriptファイルがあるだけで見た目的にはふーん回ってるねー普通にWebGLだねーというだけなんだわこれが。
opal-parser.js
てのを使えば<script type="text/ruby" src="hoge.rb"/>
で読み込めんのかなーとやってみると「現在scriptのsrc: hoge.rbは読み込めません」的なメッセージが出て読み込めない。メッセージの意味がわからんなーとソースを見たらscriptのsrc属性を使っての読み込みは未サポートだということだった。そう言えよ。
ちなみに<script type="text/ruby">puts 'Hoge World!'</script>
みたいなのは動く。でもこれで全部貼るのはためらわれるソースの量だしなぁ。
まあもちろん最終的に単一のJavaScriptファイルになってくれるってのは配置も楽だし何も考えなくてよくて安心ですけどね。 見た目的にはなにこれRubyで書いてあるんだけどキモい、というのが見えなくて残念ですね。
苦労したあたりはビルド環境整えるのがめんどうなのと、JavaScriptとのやりとりが難しい部分があったりするのと、たまにパーサがバグってるあたりかな。あとデバッグ超めんどい。まあそのあたりはまたおいおい書いていきたい。
とりあえずコンパイル結果だけ貼っておいたので見る人は見てください。WebGLが有効なブラウザだと立方体がくるくる回るのが見れます。ソース見てもただのJavaScriptになっちゃってるけど。
近いうちにソースとビルド環境をどこかに上げるつもりなんで詳しくはまたその時にでも書きますね。
ちなみにOpalのコンパイラはRubyで書かれているが、自分自身をJavaScriptにコンパイルできちゃうくらい完成度高い。かっこいい ↩