RubyKaigi2008いってきた。
つくばは思ったより近かった。下手すると幕張より近いんじゃないだろうか。
印象に残った奴とか。1日目がもう忘れかけてるんですが。
朝から実装系の話。最初から一番面白い話でテンション上がりまくりますね。
MultiVMがホット、というか目先の目標っぽい。 MultiVMがあると開発ツールとかでべんりやよね。
Rubyレベルでは書き方は変わらんだろうけど、たぶん拡張ライブラリは変わりそう。
俺としては今の拡張ライブラリの作りが枷になって何も変更できないぐらいなら、作るのがちょっと面倒になってでも新機能をいれた方がいいと思う。あんまり面倒になると困るけど。
現状でもC APIの名前がひどいから面倒だしね!
CRubyもいろいろ研究してるらしい。面白そうだ。
モジュール化みたいなのも出来るようになると、組込みみたいないろんな所で動かせて楽しいね。PalmとかGBAとか。
JRubyもよさげではあるものの、MacとかWindowsのクライアントとしてJavaを入れるのは面倒そうなのが悩みどころ。
Macは最初から入ってはいるもののあんまりサポート良くないし。GUIがね。
Rubiniusはコンパイラも大部分がRubyでかいてあるらしい。道理でCソースを見てもどこでコンパイルしてるのかよくわからないわけだ。
仕組的にはシンプルそうでいいなぁ。いじりやすそうなだけに寄ってたかってカオスにされそうな気がしないでもないが面白くもなりそうだ。
Matzの基調講演は技術の話をすると嫌がられるからと言ってあんまり技術じゃない話。なんか内容はよく覚えてないが、ああ、なんかやっぱり凄いひとなんだなぁとは思った。
文字コードの話。1.9の文字コードはなんか大変そうだと思ってたけど、やっぱり大変そうだった。早く1.9つかわないとよくわからないことになりそうだ。
拡張ライブラリから文字列返したりとか、バイナリファイル開いたときとかね。
1日目はあと何かあったっけ。いろいろあったけど。
拡張ライブラリの話。遅れていったので途中からだったけど、GC可視化の拡張ライブラリは凄かった。
拡張ライブラリのテンプレート作ってくれるものもあったみたいだけど、最近は俺が拡張ライブラリ作るのに手慣れてきてるのであんまり興味は湧かなかった。特に名前が気にくわないというのもあったのかも。
RubyCocoa。ソースに書いたib_outletとかがなにもしなくてもInterfaceBuilderに反映されるようにいつのまにかなっていた。
これはすごい。 知らずにattrと同じだと思ってattr使ってました。
MacRuby。RubyCocoaはブリッジだからちょっと気持ち悪いし、メソッド名の変換とかダサいよね、そこでObj-Cとシームレスに動くMacRubyですよ。という話。
それだけだったらかっこいいなー、本当に出来たらいいねー、つかもう結構動いてんのかよすごすぎ、ぐらいで済むんだが、RubyCocoaではObj-C2.0のGCと混ぜられないからMacRubyではそれも統合するらしい。
そうかそれは切実だな。今後Obj-C2.0のGC使ったフレームワークとか出たときに使えないと困るもんね。
型推論の話。いい時間でもあったこともあり半分寝…いいえ、ちゃんと聞いてましたよ。
難しい話はよくわからなかったけど、どうやって推論しようとしたのかはなんとなくわかった。あとやはり完全に推論するのはかなり難しそうだというのもわかった。
本当に推論できたらすごくいろいろできそうなので発展してほしい技術だね。
ゲーム系の話。
Rubyで作られたゲームとか。こんなのがありますよという紹介ぐらいだった。みんなRubyでゲーム作ろうぜとな。コミュニティとか欲しいよねとか。
それはいいんだが条件も提示せず単にRuby遅いとかいうな。だから誰もRubyでゲーム作らないんじゃない。
あとStar Rubyの紹介。特に凄そうな所は無かった。フィルタはいいなーと思ったけど、それこそ十分な速度出るんだろうか。
あと画像回転が左上基準で全く使えそうに無いんだが回転の基準位置は指定できるんだろうか。いや調べりゃいいだけだが。
つかインターフェースが全然Rubyっぽくなくて、SDLのラッパー以上のものでもない気が。サーフェスのことをテクスチャと呼び替える必要はあったんかな。どうせならイメージとかピクチャーでいいんじゃないかと。
自分では使い易いといっていたけど、そりゃそうだろうよ。
とはいえ他に何かいい物があるのかというとないんだけど。だから誰も作らない。
あと質問で遅いとか言う所につっこんどいた。結局何をやって重いといってたのかわからないので何ともいえないんだけど、オブジェクトのアロケーションが重いとかいってたけど本当かな。
一応スーファミ程度のゲームのオブジェクト生成数なら今のPCスペックなら全然問題ないとのこと。そりゃ重くないじゃん。
と思ったが、スーファミ程度のゲームのオブジェクトってどんなもんよ。今のゲームとSFCのゲームで同時に動いてるゲームオブジェクトの数ってそんなに変わるのかな。
SDLでの描画じゃなくて本当にRubyだから重いのかな。Cなんかとの比較が無いとわからんね。
しかしスーファミスーファミって20年も昔のゲーム機を強調するのはなんでなんだぜ?SFC大好きなだけかも知らんけど。ゲーム作ってみたいって人にはあんまり訴求しないんじゃないかと。
全然関係ないけど、ゲーム用ライブラリのShuttered Rubyをひさびさに見たら、Ogre.rbとShuttered Lightとやらに表面上分かれてた。
Ogre自体がどうなのか分からんけど、結構名前はきくからちゃんと全機能がRubyから触れるなら便利そうだ。
それは置いといて、次はゲームブックの話。本当にアナログのゲームブックの解説を延々して、自作のゲームブックの宣伝をしただけだった。なんだったんだ。
Ruby関係あるのはパラグラフをExcelでCSVに書いてRubyで読んでシャッフルしましたということくらい。
ある程度構造化された文章のレコードみたいなのにExcelとCSV使うってのは、Ruby会議で発表する内容なのかと。
もうちょい、XMLとかYAMLで書いたのをシャッフルしてInDesignに流し込むまでやりましたとか、ついでにHTMLも吐きますとか、swf吐きますとか、それこそMiyakoベースのコード吐いてすぐゲームになっちゃうとかあればまだ良かったのに。つかInDesignのXML吐くのは青木さんのセッションでちょっぴり出てたな。
GCの話。GCの話自体はなぜか日常的にチェックしてたのでそれほど目新しいことも無かったが、途中ゲームが出てきて、GCちょっと改造したら停止時間が短くなってプレイし易くなった!というデモがあった。非常にわかりやすいなぁ。
俺のゲームももはやプロファイル取ってもどこを速くすればいいのかわからなくなってきたが、GCの時間を取らなきゃいけないなぁと気づかされた。
ところでGCの停止時間をどうやって取るのかわからないんだが、聞いときゃ良かった。
あ、でも、あのデモはGC中の画像を表示してから明示的にGC.startして、終わったら消してるだけかな?
俺のゲームではオブジェクトの使い捨てが激しいのでGC時間は効いてそうだが、しかし本当にそうだった場合プールするのも面倒だわね。
SVGを作るためのDSL、SVuGyの話。スウィージーと読むらしい。
IEはまだAdobeのSVGプラグインいれないとSVG表示できないのねとか。 つかSVGプラグインってサポート終了してなかったっけ?気のせいかも。
SVuGy自体はかなりやりすぎ感が漂う。
method_missingで要素名を受けたらその要素を作るとかはまだ分かるが、色名とかまでmethod_missingでとかおかしいだろ。
さらに要素にidつけるとそれもmethod_missingで拾うから変数に代入もしてないのにどこからでも参照できるよ!ってそれは素直にグローバル変数使えよ。
しかし気になったのが、method_missing使ってること。method_missingだと使いたい名前がすでに定義されてた場合その名前を使うには直接method_missingを呼ぶとかいう本末転倒な事が必要になる。
あとmethodsで出てこないとかいろいろ不便なんだがなんで前もって定義しちゃいけないんだろう。SVGの仕様なんて実行する前から決まってるはずなんだけど。
cho45さんの発表でもあったけどなんでもDSLってのは逆に不便じゃないのかなぁ。Rubyでいいじゃん。
ダサく書けるってのもいいんだが、その場合は綺麗に書ける方法があった上での事にしてもらえると嬉しい。
RejectKaigiとRejectRejectKaigiはどっちにしようか悩んだけどとりあえずRejectRejectに。なんつーか、普通のセッションでやればいいのにというくらいのものもあった。
しかし入れ換えがLTよりスムーズなんだが。
当たり外れもあったけど楽しかった。
早い所1.9はいじっとかないとやばいと思った。
俺もゲームできたら、ゲームを作ったことでなんか発表出来たらいいなと思った。ゲームを作ることでなく作ったことで。
ニコ厨自重と思ったPeCa厨が最低二人いた。
そういえばXREAの広告サーバがクラックされてウィルス騒ぎが発生してたらしい。
俺の持ってるアカウントは全部金払ってるから安心だけど、怖いねぇ。
Flashって自動アップデートなんかもあった気がするけど、動かないもんなのかね。