“test && commit || revert” by Kent Beck

角 征典 (@kdmsnr)
Aug 14 · 5 min read
以下は、Kent Beckによる「test && commit || revert」の翻訳です。本人の許可を得て掲載します。
新しいスタイル VS テスト駆動開発

Limbo on the Cheap」のなかで、新しいプログラミングワークフローを考案しました。テストが成功するたびにコードをコミットする「test && commit」というものです。Oddmund Strømme(私が最初に出会った、私と同じく対称性に取り憑かれたプログラマ)が、テストが失敗したらコードをリバートすべきだと提案してくれました。私はこのアイデアが大嫌いだったので、とりあえず試してみることにしました。

そのコマンドは「test && commit || revert」になります。テストが失敗したら、コードはテストが最後にパスしたときの状態に戻るのです。

私は「test && commit || revert」に賛同はしていませんし、そのトレードオフについて説明するつもりもありません。動作はするでしょうけど、あんまりうまくいかないんじゃないかと思います。まあ、みなさんも試してみてはいかがでしょうか(新しいプログラミングワークフローなら何でも試してみたい人向け)。

とは言ってみたものの

「test && commit || revert」はうまくいかない、そんなふうに考えていた時期が私にもありました。常にテストを動かさなければならないとしたら、どうやって進捗するのだろう。ときどきミスをするんじゃないの?コードを大量に書いたあとで、それが全部消えたらどうなるだろう。絶対イライラするでしょ?

その驚くべき答えは、いずれも「はい」になります。あなたは以下のようにコードを書くこともできるのです。

ときどきミスをするんじゃないの?

はい、ときどきミスをするでしょうけど(埋没コストの誤りをしなければ)間違ったコードがすぐに削除されるのはよいことです。大量のコードを消されたくないなら、グリーンとグリーンのあいだに大量のコードを書かなければいいでしょう。

絶対イライラするでしょ?

はい、コードが消えたらイライラするでしょうけど、同じことをもっとうまく、もっと確実に、もっとインクリメンタルにやれる方法が見つかるはずです。

インクリメント

Limboは、小さな変更を即座に伝えることで、技術的なコラボレーションを拡大させるものです。TDDはLimboでは機能しないでしょう。プログラマが10万人いたとして、1つのテストの失敗で他のすべてのプログラマに負担をかけることなどできないからです。テストが大量に失敗していたら、誰も何が起きているのかを把握できないでしょう。変更を反映するには、すべてのテストをパスさせる必要があります。

一方、「test && commit || revert」は、すべてのテストをグリーンに保ちます。ですが、大きな問題を小さなステップで一気に解決することなどできません。では、「test && commit || revert」を使うときの「ステップ」とは何でしょうか?

TCRのインクリメント

これらの戦略に違反すると変更が即座にリバートされるため、わざわざ差分を小さくするために悩む必要がありません。

試してみよう

「test && commit || revert」のほうが現状よりも優れているからという理由で、みなさんに試してもらいたいわけではありません。私が提案しているのは、以下の理由からです。

まずは小さなプロジェクトを選択しましょう。フィボナッチ数を扱うようなものでも構いません。そこから開発を始めてください。変更がどれだけ小さくできるかを確認しましょう。そのなかのいくつかは失敗するでしょう。さらに小さくできるかを確認しましょう。あなたが頻繁に使っているワークフローの小さな部分に注目してください。そのなかで「リアルな」仕事に適用できるものを確認しましょう。

このCode CampをスポンサーをしてくれたIterate社と、TCRについて深堀り、考え、試し、話してくれた、Oddmund Strømme、Lars Barlindhaug、Ole Johannessenに改めて感謝します。

Waicrew

ワイクル株式会社は、アジャイル開発やリーンスタートアップの導入を支援します。 https://waicrew.com

角 征典 (@kdmsnr)

Written by

ワイクル株式会社 代表取締役 / 東京工業大学 特任講師 / 翻訳『リーダブルコード』『Running Lean』『Team Geek』『エクストリームプログラミング』他多数

Waicrew

Waicrew

ワイクル株式会社は、アジャイル開発やリーンスタートアップの導入を支援します。 https://waicrew.com

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade