2003-09-01(Mon) [Edit]
■1 TDD, Eclipse, DB/UML
『テスト駆動開発入門 TDD:TEST-DRIVEN DEVELOPMENT BY EXAMPLE』(9/4)
「Synapse」経由。やっと、やっとである。今となっては、オブジェクト倶楽部の『車窓からのTDD』を読んでおけばTDDの基礎的なところは充分な気もするが、ともあれ。大型書店店頭でのフライング販売はあるのだろうか。
で。『Agile Software Development Ecosystems』の邦訳はまだなのか。
『Eclipseパーフェクトマニュアル Vol.2』(9/15)
「新・たけぞう瀕死の日記」経由。 Strutsはお腹いっぱいだし、EJBは当面使わないし……けど、巻頭企画/特別企画は面白そうだし……と、悩ましい。
『データベース設計のためのUML』(9/9)
まだ目次がない。アジャイル・モデリング的には別にUMLで書かなくてもいいじゃん、ってことになろうかと思うのだが、UMLで書けるならそれはそれでいいのかも。
■2 オブジェクト・リレーショナル・マッピング技術ML
「Thread.sleep()」経由。イキオイで全部subscribreしてしまった。
■3 「山形浩生はいかにして作られたか」@Excite books
部室経由。バックナンバーの面構えも興味深い。みうらじゅん、D.T.を語るは見逃していたなあ。
■4 todoプラグインのパッチ
またぞろ細かいパッチをMLに投げてみよう。……と思って帰宅したら、既にMLに投稿あり。もうひとつ、パッチ投げてみようかと思っている細かいネタがあるので、cvs updateしたら、案の定、いつまでたっても終わらない……。
2006-09-01(Fri) [Edit]
■1 明日のXP祭り2006
なんだかxpjug.orgに繋がらないんだけど、明日はXP祭り2006。
xpjugのサイトに繋がらない場合は、KKDさんが用意した避難所から申し込みができるとのこと。
満員間近だけれども、まだ申し込み可能だそう。
私はコンテストトラックにもチームでエントリー。 当日は3時間で3イテレーションを回しながら仕様変更を抱擁するらしい。 ネットに繋がらない状態でちゃんと変化を抱擁できるかなあ。お手柔らかに。
ライトニングトークスにも出ます。
2007-09-01(Sat) [Edit]
■1 XP祭り2007でドリームチームの一員として参加
心身ともに絶不調。咳さんとペアプロということで朝から緊張し通し。はじまってからは緊張しすぎてもはや狼狽の域に。気持ちばかり焦る。全然手が動かない。もうだめ。
「落ち着け・・・心を平静にして考えるんだ・・・こんな時どうするか・・・落ち着くんだ・・『テスト』を書いて落ち着くんだ・・・『テスト』はテストに失敗した場合にしか『プロダクトコード』を書いてはいけないプログラマの偉大な習慣・・・わたしに勇気を与えてくれる」
レッド。グリーン。リファクタ。レッド。グリーン。リファクタ。レッド。グリーン。リファクタ。
ディレクトリ構造
+ lib/ +-- chatdb.rb + spec/ +-- chatdb_spec.rb +-- spec.opts + spec_helper.rb
chatdb_spec.rb
require File.dirname(__FILE__) + '/../spec_helper' describe ChatDb do before do @db = ChatDb.new end it { @db.add("kakutani", "Hello") @db.add("m_seki", "druby") @db.head.collect do |x| x[1] end.should == ["druby", "Hello"] } end
大したことのない殴り書きのテストたが、このおかげで咳さんと認識に自分の気持ちを追いつかせることができた。
chatdb.rb
class ChatLeaf attr_accessor :author, :text, :time def initialize(author, text) @author, @text, @time = author, text, Time.now end def to_a [@author, @text, @time] end end class ChatDb def initialize @strage = [] end def add(author, text) @strage.unshift(ChatLeaf.new(author, text));nil end def head(size=10) @strage.first(size).collect { |e| e.to_a} end end if $0 == __FILE__ require 'drb/drb' DRb.start_service('druby://:12345', ChatDb.new) gets end
劣化したサンプルみたいなコードだ……。咳さんお付き合いありがとうございました。
使いかた
まずchatdbを起動させます。
$ ruby chatdb.rb
何にも表示されません。別コンソールでchatクライアントを起動させます。
$ irb --simple-prompt -rdrb/drb >> c = DRbObject.new_with_uri('druby://localhost:12345') => #<DRb::DRbObject:0x10a0504 @ref=nil, @uri="druby://localhost:12345"> >> c.add('kakutani', 'Hello, ChatDb') => nil >> c.head.add('kakutani', 'dRuby is awesome!")) => nil >> c.head.each {|author,text,time| p "(#{time.strftime('%H:%M:%S')})[#{author}] #{text}"};nil "(11:16:35)[kakutani] dRuby is awesome!" "(11:16:26)[kakutani] Hello, Chatdb" => nil
ChatDb#headでせっかく取得したChatLeafにto_aしているのは、CGIは咳さんのMacで動かしていたので、ChatDb関連クラスを配布するのが面倒だったから。私の環境がqdbmをちゃんと動かせる状態になっておらず、永続化までやれませんでした。準備重要。
感想
- 咳さんとペアプロできて幸せだった。
- ライブコーディングはまったくアジャイルではない
- ライブコーディングを楽しんでもらうには、やり方を考えておかないと勿体ない
- コンテンツとして提供するつもりなら、ちゃんと仕込みが必要。
- ライブ感だけを伝えたいなら、ユルい雰囲気でやったほうがよい。懇親会の片隅や、専用の場所など(中継とかあるといいのかも)。
■2 XP祭り2007のライトニングトークス
チェックリストの12項目に該当したらTDD脳
「Testing Will Challange Your Conventions」の12項目を淡々と紹介しようとして失敗したトークス。LTの順番はトリをつとめる角野"五十六"泰次の直前。露払い。
全トークスのビデオ(後述)がgoogle videoで公開されてます。そのうち、自分のしゃべった分だけニコニコ動画に置きました。コメントしてもらえると嬉しいです。
スライドはslideshareと、PDFで置いておきます。
全トークスのビデオ
Akiyah GJ!
Before...
○ うしお [いやいや、私も楽しかったですが、準備不足ですんませんでした。 咳さんとかくたにさんが、コードと解説を後からアップし..]
○ TrackBack [http://buy-tramadol-online-price.blogandorra.com/ Buy tram..]
○ TrackBack [http://phentermine-free-shipping.50webs.com/index.html Phe..]
○ TrackBack [http://freewebs.com/hydrocodone111 Hydrocodone. Hydrocodon..]
○ tsune [トークスかっこいい。だってテストしづらいもん最高。]