トップ «前の日記(2017-10-07) 最新 次の日記(2017-10-22)» 編集

日々の破片

著作一覧

2017-10-09

_ @t_wadaとケントベックのテスト駆動開発

長らく絶版となっていたケントベックのテスト駆動開発(入門)が、オーム社から装いと訳者もあらたに再刊されて、しかも嬉しいことに、編集の森田さんから頂けたので早速紹介する。

くだくだしいことなどは後のほうで書くことにして(このページ群はおれにとってはその時考えたことなどを記す日記でもあるからだ)、まず本書の要点について書く。

原著は2003年、本書はそれの翻訳なので15年以上の歳月を経た準古典だ。何についての準古典かといえば、題名からわかるように開発についてで、なんの開発かと言えばプログラムだ。

一言で言えば、1人でプログラムを開発するときに、どのように開発へのモチベーションを維持しながら、開発そのものをゲーム化して楽しみながら(まあ、1人でプログラムを開発しようとした時点で、それはゲームなのだが、さらにルールをいくつか導入することでゲーム性を高めているとも言える)、しかも適切な粒度やインターフェイスを発見してプログラムのコードの質を高めながら、完成してからのデバッグ地獄に苦しむより前にバグを減らしながら、1つの関数や変数のレベルで(大げさではない)命名であったりパラメータであったり戻り値であったり大域変数などの状態であったりをどう設計するのが良いかの知見を高めながら、グレートなコードを生み出すかについての方法論とプラクティスを説明したものだ。

全然一言ではなくなってしまった。

本当に一言で書けば、こうだ。

いかにかっこいいコードを生み出すかについての方法と実践の指南書。(入門書ではないね)

命令型言語であれば、すべてに適用できる開発方法なので、サンプルもJavaありPythonありだ。わりとミクロレベルのテクニックが多いので、JavaもPythonも読めなくても問題ない。ふつうに命令型言語のどれか1つを知っていれば、自分のジャンルに翻案できる(くらいの芸当ができるのは読者としての前提となる)。

本書で重要なのは、準古典なだけに、どこまで価値を持つ本なのか、一体、どれだけポジティブ方向であれば発展や革新が、ネガティブ方向であれば誤解や曲解が生まれたかについて、歴史的な俯瞰を訳者の和田さんんが付録Cとして10ページほどの『訳者解説:テスト駆動開発の現在』を付けている点だ。

これ読めば、あっというまに、テスト駆動開発(TDD)批評家になれる。つまり、TDDという手法はこの文章の冒頭で準古典と決めつけたように、既にして批評の対象足り得るほどの広がりを持つ存在となった。つまり周縁を持つ(=パラダイムが形成された)存在であり、TDDを知らずにプログラムを開発するのはド素人だ。

要するに、読めということ。それも手を使って、エディターに打ち込み、追体験しながらだ。

(t_wadaの上記の訳者解説では、いや、そこまではしねぇだろうというような極端な読み方を勧めているが、なぜそこまで極端なんだろう? と考えて、はっと、そうかTDDの実インスタンスとしてのテストファーストはXP(eXtreaming programming ――極端プログラミング)のプラクティスでもあったなぁと気づいたり。今この瞬間の思いつきに過ぎないが)

テスト駆動開発(Kent Beck)

ちなみに、artonx.orgには訳者解説にロンドン学派の代表みたいに出てくるフリーマンの初期の文書(DevelopingJdbcApplicatonsTestFirstのおれさま翻訳)があったりするのでこちらはあまりにレガシー化しているけど興味があれば読んでみてね。

#t_wadaのまさーるさんへの言及には泣けるところがある。

_ オーム社の同時代ソフトウェア技術者叢書(の終焉)

ポールグレアムとかジョエルスポルスキーとかチャドファウラーとか、その時点で息して飯食って多分プログラムを書いている人(少なくともその本が出る5年くらい前までは)のソフトウェア開発にまつわる思い出やら見識やら考察やら実験結果やらのエッセーがやたらと出てきた時代があった。どれもどえらくおもしろく、訳も飛び切り良く、選択のセンスが良い(と、読者に感じさせるわけだから、ぴったりトレンドそのものかちょっと先っぽだったということだ)。

そういう一群の書籍にふさわしい名称を「叢書」と呼び、そのトレンド性をして同時代性と読み替えて、何気なくオーム社の同時代ソフトウェア技術者叢書と名付けたのだった。

11年前か。10年一昔のさらに1年がたったのだなぁ。

_ t_wadaとTDDとIoCとJavaカンブリア期

Javaにはかってカンブリア期があって、あまりのSunの迷走っぷり(あるいはIBMの横やりっぷりかも知れない)に爆発が起きた。

で、おれもその爆発に少し巻き込まれて2.3mほど吹き飛ばされたのだった。

日本での爆発の中心にいたのが、ひがやすおさんと羽生章洋さんで、媒体としては中心にWEB+DBがあって(今でも常に爆発の中心にいるところが稲尾さんのすごさだ)、t_wadaさんとはそのころ出会った(というか、羽生さんのところだった)。上のほうでフリーマンの翻訳があるが、あれは確かt_wadaにそそのかされて翻訳したはずだ。

ということは、2003~4年くらいだな。

ロッドジョンソンのExpert One-on-One J2EE Design and Develpmentが2002年10月だから、爆風は半年もたたずに日本にも吹き荒れたってわけだ(21世紀のはじめは、半年で爆風が吹き荒れるというのにずいぶんとスピード感があるなと思ったが、今は一瞬で爆風が届く。ネットワーク技術の発展はすげぇなぁ)。

この爆発で、バイナリーORPCが死んでXML+HTTP時代が来たわけだが(動きが遅いのはエンタープライズ系だからだな)、それもあっという間に淘汰されてしまったなぁ。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

ジェズイットを見習え