最初は少なかったんですが,終わる頃にはかなりの大人数になってました.さすがは東京(?).当日は2時間早く出社して早めに変える変則シフトでがんばりましたヽ(´ー`)ノ.
それでは当日のログを.
==== ##それRubyでもやりたい @ 和田さん
- gihyoコラボ企画 TDD 講座
- デブサミ2009でコンテンツ委員やるらしい
###移植した中身のこと
- 問題意識
- テーブル構造が複雑
餅は餅屋
- SQLが書きたい
- 移植したのは S2Dao
- Seasar の DAO
- ここの 2 Way SQL の移植
- 手書きのSQL のサポート
- SQL を知っていれば書ける
- 2 Way SQL
代入コメント
- ビューのように 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
- 要は型指定
- やはり速度は遅いらしい