東京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のサイクル
  • 実装のテストから仕様に対するテスト
    • ホワイトボックステストからブラックボックステストに変換
    • RSpec でやってみる
    • 外部仕様の記述に切り替える
  • 郷に入っては郷に従え
    • Ruby っぽいコード変換していく
  • 王道を知る
    • 王道があればそれを取り入れる
  • パーサジェネレータ racc
    • 割愛されたのであとで調べる
  • 恩返し
    • 移植時にわかった点やいいコードなどを元に Feedback する

###Q&A

  • 期間と人数は?
    • 1人で2日.ちょっと動くところまで
  • Java -> Ruby での豆知識とかは?
    • OO なのでわかりやすかった部分がある

##Sexy development with ClassX

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