東京Ruby会議01

ニフティ本社にて、RegionalRubyKaigi の最初の instance である東京Ruby会議01に参加してきました。

会社に私物の MacBook 持っていくのは少々重いし、今日は豪雨になるかもということで濡れ対策の自信がなかったので、マシンは持っていかずに iPod touch でメモ取ってた。途中で日本語変換がもっさりしてきて、なるほどこれが巷で噂のメモリリーク疑惑かと。なので後半にいくにつれてメモが少なくなってく……。

気力と記憶の続く範囲で箇条書き。

  • 角谷さんによるオープニング
  • t-wada さん。他言語のライブラリをRubyに移植するノウハウ話
    • テスト駆動開発動画の人
    • 移植してみたのは JavaSQL のなんかするやつ。S2Dao の 2WaySQL というもの。
      • SQL のコメント部分に条件分岐など埋め込める。SQL 専用のテンプレートエンジンみたいな感じ?
    • 作業する前に考察すること
      • 本当に移植すべきか?
        • 既に同じことができるライブラリがないかとか
      • 全部移植すべきか?
        • そのライブラリのうまみはどこか。そこのところだけ持ってきて、他の部分は既存のライブラリ等で代替するといったソリューションはできないか。
      • テストはあるか?
        • テストの存在しないコードは Legacy Code である。
    • 大原則:一度に複数を相手にしない。
    • 2つのアプローチ
      • きれいに(Ruby らしいコード)
      • (とりあえず)動く
    • 逐語的移植
      • とりあえず動くように
      • 型付けや文法、予約語の違いなど最低限の差異にだけ対応して、アルゴリズムや設計はそのまま丸写しするように移植
      • テストも逐語的に移植
      • テストを移植したら単純はテストケースから順に green にしていく
    • 洗練フェーズ
      • Ruby らしく。racc を使ってみたらしい。でもその話は略
    • 恩返し
    • 質疑応答より。RubyJava は結構近い。(逐語的)移植はそんなに大変じゃない。
  • よしみさん classX の紹介
    • Perl で最近流行ってる Moose みたいなことをす
    • attr_reader をもっとスマートにしたような。
class A < ClassX
  has :a
end

これで

class A
  def initialize(opt={})
    @a = opt[:a]
  end
  attr_reader :a
end

のような感じになる(インスタンス変数に入れるようになっているかどうかは未確認。Hash のままかも)。変更も可能にしたり、値の validation や省略時のデフォルト指定なども。

    • Hash引数をオプションにするのはよくやる手法だけど、なんていうオプションを受け付けるのかすぐに分からなかったりするけど、これなら宣言的だから読めばすぐわかる。
    • 個人的にこれには大変感心した。さっそく使えないか試してみたい。
    • ただやはりインスタンス作成が遅くなる。昨日ベンチマーク取ってみたら2000倍とかだったけど今は35倍くらい
      • 今わたしが業務でやってるのは基本的にデーモン化するので、長生きするオブジェクトが多いから A.new が少し遅くなる程度なら許容範囲かも。
  • こしばさん。 Win32OLE で Excel との連携話
    • 手書きのイラストによる図でのプレゼン
    • エクセルの構造化データエディタとしての底力はすごい
    • xls.rb というのを作った。Excel を読み取って、ハッシュで返す。あとは好きに料理。
  • LT
  • 柳澤さん RailsOutliner
    • Rails で多人数で共有するアウトラインエディタのプロトタイプ作っている
    • 変更はだいたいリアルタイムにみんなに通知される(ShootingStarプラグイン使ってる。確か Comet のライブラリだったっけ)
    • とかデモしていると舞波が乱入。みつけるの早っ
  • ogijun さん。 Mac 愛を語る
    • 正式な名称は「あなたがMacRubyを使うべき10の理由」
    • Unix ベースの堅牢な OS
    • TextMate が使えるのは Mac だけ。よく聞くけどそんなにいいのかしら
    • RubyCocoa
    • MacRuby が使えるのは Mac だけ。
    • Growl(Notification framework)
    • enthusiasm。 確かに RubyMac も「なんかとにかくすごく好き」っていう人が多い気がする。
  • 須藤さん Rabbit 2008
    • プレゼンツール Rabbit の思想を語る
    • 大きい文字
      • 100 を知り 10 を語る
    • 抽象化
      • いろんな方法で表示できたり、アクセスできたり。
    • dRuby で繋げて制御したりもできる!
    • 死なないためではなくて、生き続けるためのメンテナンス=新規機能の追加
      • Rabbit は進化しつづける
    • 訥々とした語り口だけど、さすがによく伝わるプレゼンだったなー。記憶にちゃんと残ってる(気がする)。
  • Yugui さん 1.9.1 リリースについて語る
    • 1.9 はいいものだ(VM、ブロック引数など新規文法、M17Nなど。くわしくは「初めてのRuby」かwebで)
    • 1.9 を使おう
      • 安定しないと使われないが、使われないとなかなか安定しないよ。
    • 1.9 のバグレポートを出そう
    • RubySpec で仕様を明確に(1.8 は既にできてる。1.9 は頑張ってる途中)
    • サポートレベルという概念を導入する。メンテナがいないと supported や best effort になれない。メンテナ募集(BeOS, OS/2 とか。あと x86_64/Debian)
    • お金も必要。パトロン募集
    • まだ目玉も足りてない。ruby のソースを読もう。

一応これで全発表のぶんメモと記憶を吐き出したと思う。やっぱり楽しかったし、classX みたいな結構すぐに使える便利そうなものもあれば、移植ノウハウ話のような為になる話も聴けて、これで無料だったとはかなりお得。主催者様、会場提供のニフティ株式会社様、発表者のみなさまに感謝。現地に行ったわたし達は勝ち組。

そして終了後 takkaw さんにお会いして夕食を一緒にして帰りました。KORG DS-10 を持ってたのでみせたり、拡張ライブラリの作り方について 1.8 と 1.9 の違いってどこかにまとまってるのかなとか、Ruby/SDLサウンド再生部分をいじりたいとかそんな話をしたりしていました。というかなんかわたしが一方的に喋ってばっかりだったような。すみません。。。

Kaigi に出るとなんか作りたくなりますよね。Kaigi駆動開発(KDD)。よし、また頑張るか。