どうも更新が滞りがちですが、いよいよ新サービスのリリース・カウントダウンが始まりました。寝ても覚めても開発とバグ取りにいそしむ中毒状態で、メールにさえろくに返事ができておらず、ゴメンなさい!いましばらくご辛抱下さい!
近況としては、IRS(米国税局)から「キミはちゃんと確定申告を期日までに行わなかったからペナルティじゃ」という、折り目正しくきちんと納税した人間に対してありえない通告があったので、先方が真っ先に小切手を振り出した記録をこれでもかと全部コピーして送りつけて、お前たちはドロボーかと詰問して謝罪をとりつけたり、相棒のダニーが唐突に投票権を持つ米国民の義務であるJury Duty(陪審員義務)に駆り出されて一週間まるまる留守になったり、歯医者に行ってチェックアップしてもらったら$800/月もの医療保険に加入しているにもかかわらず$4,000という高額な治療費の見積もりをもらって開いた口が塞がらないでいると日本人の係の人に「まだ日本で保険が残ってるのなら日本で治療したほうがいいですよ」と耳打ちされたり、相変わらずアメリカという国にビックリ驚きおののきつつ奮闘中です。
そんな日々ですが、またひとつ、過ちを重ねてしまいましたので、懺悔を兼ねて今回はそのお話。
最近、Ruby on Railsのテストフレームワークを使ってレグレッション・テストを行っているのですが、ぼくのローカルの開発環境+ブラウザでは動いていて、でもなぜかテストでは失敗してしまうというソースをコミットして帰ってしまいました。その日は朝8時から夜10時までぶっ通しでガリガリと書いていたので、テストのコードも読んだのだけど問題も見あたらず、それ以上追い込む気力もなく、まぁ動いているのだからいいだろうというわけで帰ってしまったのです。
すると、われらがアーキテクトのダニーが、「おめでとう。あなたはテストに失敗するようなソースをコミットしてしまった最初の人間です。その栄冠を次の人に渡せるよう、すみやかに修正してください。」という嫌みたっぷりなメールをよこしてきたのです。
そこでぶち切れですよ。「テストごときに失敗していようと、実際には動いているんだからいいじゃないか。現実のアプリのユーザエクスペリエンスに集中させてくれ。俺はマシンに食わせるためにコードを書いてるわけじゃない。」と、このあたりでやめておけばいいものを、「こんなテストならやめちまえ」みたいな話まで持っていってしまったのです。
テストフレームワークといっても、よく言われるように、開発者自身が思いつきで書くアサーションなんてのは所詮は八百長というか、ヒューマンリーダブルなコメント未満みたいなのばかりで、本質的にはテストっていうのは実運用を初めてから発見された「変な」ケースを追加したり(これはFlickrのCal Hendersonも言ってた)、開発者の裏をかくようなことを思いつく専門職の人間にやらせないと実効性はほとんどなくて、つまりテストに通るようにテスト自体を書き換えることもできちゃうような状況なのです。だから、まだリリースする前の現時点でのテストの効力については常々疑問があって、テストフレームワークそのものを学習するためだけに費やす時間も左脳的なテストケースを考えるために右脳を使う時間を減らすのもバカバカしい、かける時間にもテストコードの量にも価値が見合ってない、テストドリブンなんて欺瞞だ、Design by ContractなんてStatically Typed Languageのものだ、エンタープライジーだ、Overkillだ!!と、深夜のナチュラル・ハイをいいことに、メールでありったけぶちまけてしまったのです。
そして翌早朝、返信が。
「以下の手順を実際やってみろ。1.トップページに行く、2.ログイン、3.エラー。まさに今お前が全力で否定しようとしているテストのおかげで、バグの再現手順まで特定できた。」
そう、実際にそれはバグだったのです。なぜ、ぼくのブラウザ環境ではそのとき動いていたかは定かではありません。しかし、現時点でやってみると、たしかにエラーなのです。同じ頃に届いたデザイナーのクリスからのメールも猛反発。コテンパンですよ、ええ。大恥ですよ。
急いでバグを特定して、自宅でSVNにコミットしてから出社。スタックトレースを読めばすぐに気がつき修正できるバグでした。でも、前日には動いていたから疑わなかったわけです。ダニーに会って、「昨日は動いてたんだ、ブラウザでは。」「コードにもテストコードにもどちらも問題はなさそうだったし、実際ブラウザでは動いていたのだから、テストフレームワーク自体のバグか何かだろうとたかをくくって、それ以上追わなかった」などと色々と言い訳をして自己弁護してしまう自分。。。自分の弱さを感じながら。
で、色々と激論になったのですが、最後にダニーから一言。「過去のことは過去のことだ。同じ失敗を二度起こさなければそれでいい。今回の件で、お前はテストの有用性を学んだだろう?」
現時点でのテストの有用性にはいまだ疑問を持ち続けていても、今回の結果が示しているのはその有用性です。
くやしいけれど、残念ながら、完敗でした。返事は「イエス」でした。
恥をかくことでしかできない種類の成長というものがある。今回の件を通じて、印象論ではなく、リアルなものとしてレグレッション・テストの価値を真剣に考えました。考えて考えて考え抜きました。その結果、全否定するでもなく、全依存するでもなく、今ぐらいの予備的な運用は結構いい線をいっているかも知れない、実際に大規模運用を始める前のウォーミングアップとして十分価値があるかも知れない、と思うようになってきました。
失敗は、早く犯すに限る。泣きそうなほど悔しい思いを噛みしめながら、またひとつ階段をのぼったのでした。
♪ Maroon 5 vs Beyonce / This Naughty Love (The weirdest mashup ever!)
※このエントリは CNET Japan ブロガーにより投稿されたものです。シーネットネットワークスジャパン および CNET Japan 編集部の見解・意向を示すものではありません。
あの on 2006/08/24
tamago on 2006/08/21
tamago on 2006/08/21
テストフレームワークは、本当に大事なUser Experienceに開発者が集中するためにこそ必要。
「それ以前」のバグでUser Experienceを台無しにするのは最悪。
テストフレームワークでできないことを「考え、確かめる」のが開発者の仕事。
テストフレームワークにやらせればよいものをいつまでも開発者にやらせるのは怠慢。
開発者がした仕事はそれを受け取る人が安心して受け取れるもの。
開発者は世の中を幸せにするためにいる。自分の幸せは後からついてくる。
・・・なんてね。良い話だったので、つい。
komuro on 2006/08/17
ゾフィ on 2006/08/15
Yasu on 2006/08/13
a on 2006/08/12
kenn on 2006/08/11
江島さん、こんばんは
なかなか更新されていないのでどうしたのかな?と
少し心配しました。
ユーザエクスペアリエンスって甘美な響きですよね。
折角、作ったんですから早く実践投入したいですよね。
最近はこんなことやってます。
http://www.teamknox.com/EZ-CNC/EZ-CNCj.html
工作機械の改造なんですけど、ちゃんとテストしないと
マジやばいんですよ。最高2500RPMで回転している
ダイヤモンドの次の次?位に硬い刃が折れて
飛んでくるかもしれないんです。
で、テストスクリプトをシコシコ書いて、
色々とやっています。それも繰り返し。ええ。
失敗したら、命は無いぞ!!みたいな気持ちで
やるとテストガンガンやるようになりますよ。
では
TeamKNOx on 2006/08/09
kenn on 2006/08/09
いい感じですね。一歩一歩プロフェッショナルに近付いて
いく姿に共感を覚えます。
リグレッションテストは無駄だというエントリーでしたら
釣られて、渾身のチカラを込めてコメントしようと思った
のですが、そうでもないようなので、ひとつ階段をのぼっ
た江島さんにエールをこめて。
hyoshiok on 2006/08/09
ブログにコメントするにはCNET_IDにログインしてください。
この記事に対するTrackBackのURL:
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
コンテンツ学会 〜コンテンツ概念の功罪と未来
iPhonista Nightの事後報告
プロジェクトの情報リソースとしてwikiを使う
PCを自作してみた
東芝からネットブック
2010 年代の電波政策(意見募集)
Norton Internet Security 2009 2回目以降のスキャンが早くなる
「どこでもWi-Fi」でアレを使いたい
ナチュラルケアーズを美容系ポータルサイトに登録みんなのお題では、ブロガー同士で質問を出し合いそれに対する回答や意見を集めています。今日はどんな話題が盛り上がっているでしょう?
エンタメCGM「gooメーカー☆メーカー」CNET Japan ブログネットワークは、元はCNET Japanの一読者であった読者ブロガーと、編集部の依頼により執筆されているアルファブロガーたちが、ブログを通じてオンタイムに批評や意見を発信する場である「オピニオンプレイス」、また、オピニオンを交換するブロガーたちが集うソサエティです。
広い視野と鋭い目を持ったブロガーたちが、今日のIT業界や製品に対するビジョンや見解について日々熱く語っています。
CNET Japanやその他サイトが提供するITニュースやコンテンツへの意見や分析、 ビジネスやテクノロジーに対するビジョンや見解について語っていただける方を 募集しています。ご応募はこちらから
ブログの投稿はこちらから(※ブロガー専用)
今年最も活躍したブロガーを表彰します。詳細はこちらから
これは、CNET Japan 編集部の依頼に基づいて執筆されているCNET Japan アルファブロガーによるブログの印です。
CNET Japan ブログネットワーク内で拍手の代わりに使用する機能です。ブログを読んで、感激した・役に立ったなど、うれしいと思ったときにクリックしてください。多くGood!を獲得した記事は、より多くの人に読まれるように表示されます。
今週の新製品総チェック:新PS3が登場!ニコンが発表した映像製品「UP」とは?
[レビュー]2011年画質を備えた高画質、多機能Blu-ray--ソニー「BDZ-X95」
今週の新製品総チェック:よりモバイルPCとして進化した「Let's note」が登場
今週の新製品総チェック:フルサイズCMOS搭載のキヤノン「EOS 5D Mark II」が登場
ナルシストですか?IT系には、経営者として大成したいのか、タレント志望なのか分からん人が多いですね。