東京Ruby会議01に参加してきた.

最初は少なかったんですが,終わる頃にはかなりの大人数になってました.さすがは東京(?).当日は2時間早く出社して早めに変える変則シフトでがんばりましたヽ(´ー`)ノ.

それでは当日のログを.

それRubyでもやりたい @ 和田さん

  • gihyoコラボ企画 TDD 講座
  • デブサミ2009でコンテンツ委員やるらしい
移植した中身のこと
  • 問題意識
    • テーブル構造が複雑
  • 餅は餅屋
    • SQLが書きたい
    • 移植したのは S2Dao
      • Seasar の DAO
      • ここの 2 Way SQL の移植
        • 手書きのSQL のサポート
        • SQL を知っていれば書ける
    • 2 Way SQL
      1. 代入コメント
        • ビューのように SQL を扱う
        • プレースホルダーをと配列を使う
        • IF文が書ける
        • BEGIN/END
          • 内部的にいろいろ処理してくれる
移植した方法のこと
  • まず検討
    • 定番ライブラリでダメか?代替案は?
  • 次は全部移植するべきか?
    • その美点と既存のものとの融合なども検討
  • 最初に確認すること
    • テストがあるか?
    • 欲する機能の切り出し可能か?
  • 大原則 : 一度に複数を相手にしない by 宮本武蔵
    • だんだん動くように書き直す手法
  • 逐次訳的移植
    • 名前などはそのまま
  • 逐次訳的テスト移植
    • これも語意などを変えずに移植
    • SDao は JUnit
      • xUnit が共通語彙
      • interface は Ruby にはないので移植しない
  • 変えたもの
    • 言語間の違いは変更した
  • PTSCTCPW
    • 単純なテストから移植していく
      • それ以外は pending
  • Characterization Test
    • 移行元の振る舞いに不明な点がある
    • 移行元コードの現在の振る舞いを自動テストに落とし込む
  • 洗練する
    • TDDのサイクル
  • 実装のテストから仕様に対するテスト
  • 郷に入っては郷に従え
    • Ruby っぽいコード変換していく
  • 王道を知る
    • 王道があればそれを取り入れる
  • パーサジェネレータ racc
    • 割愛されたのであとで調べる
  • 恩返し
    • 移植時にわかった点やいいコードなどを元に Feedback する
Q&A
  • 期間と人数は?
    • 1人で2日.ちょっと動くところまで
  • Java -> Ruby での豆知識とかは?
    • OO なのでわかりやすかった部分がある

Sexy development with ClassX

  • ClassX
    • perlMoose っぽいインターフェイス
    • Class::MOP のラッパー
    • Role
    • Attribute
      • ここにフォーカス
    • Moose っぽい感じ
      • :has とか
      • :validate -> proc {|val| val.is_a? Fixnum} とかで validate できる
        • :kind_of => Fixnum
        • 要は型指定
  • やはり速度は遅いらしい