Yahoo! JAPAN

「テスト駆動開発」は時を超える技術。凡人が天才と肩を並べるための秘密兵器【米マイクロソフト・牛尾 剛】

エンジニアtype

「テスト駆動開発」は時を超える技術。凡人が天才と肩を並べるための秘密兵器【米マイクロソフト・牛尾 剛】

プロフェッショナルたちの読書感想文

著名エンジニアが、独自の視点で「おすすめ書籍」の紹介を行う本連載。

今回は、米マイクロソフトのエンジニア・牛尾 剛さんによる『テスト駆動開発』(オーム社)の読書感想文を紹介する。

発売日:2017年10月14日
著者:Kent Beck 訳者:和田 卓人
定価:3080円 (本体2800円+税)
ISBN:978-4-274-21788-3
サイズ:A5
ページ数:344ページ
書籍概要:テスト駆動開発とは単にテスト自動化を行うことではなく、ユニットテストとリファクタリングを両輪とした小さいサイクルを回すことで不確実性を制御し、不断の設計進化を可能にする手法であることを、実例を通して学ぶことができる一冊。

目次

本書をピックアップした背景本書で得られた教訓・学びあとがき

本書をピックアップした背景

一般的に、コンピューターの書籍は常に新しいものが良いことは疑いようもありません。

ただ、自分が本を読んで身に付けた技術の中で、2024年の現在でも最高に役に立った本は何だろうと考えた時に、最終的に自分がピックアップしたのは『テスト駆動開発』(オーム社)です。これは相当古い本で、新しいバージョンが日本語では2017年に出ていますが、オリジナルが出版されたのは02年と、めちゃめちゃ古いです。

では、自分の流儀に沿わずなぜそれを推すかというと、ガチで自分のエンジニアライフに一番役に立ったからです。自分のエンジニア人生に最高に役に立った本は何かと聞かれたら、この本と『リファクタリング』(オーム社)という古い本を答えます。

自分の性格を一言で説明すると、僕はADHDです。注意欠陥症候群ですので、めっちゃくちゃ不注意でケアレスミスを良くします。だから、似たような人がもしいたらと思って筆を執っています。このような人にとって、テスト駆動は心強い助けになります。(ちなみにC#は、Visual Studioで開発することを前提に設計されており、IDEのサポートがえぐいので、僕のような人には最高です)

僕は現在、Azure Functionsというサーバーレスのサービスの中の人をやっています。過去のキャリアでは、プログラマーになりたくても才能がなく日本でも通用しませんでしたが、今アメリカで楽しく働いています。

そんな、才能もなんもなくADHDの自分を救ってくれたのが、この「テスト駆動開発」で得た習慣なのです。

本書で得られた教訓・学び

現在Public Preview段階にある、新しいプラットフォーム「Flex Consumption」の開発において、僕はHttp Scalingという重要な機能の実装を任せてもらえました。ここのコードがバグっていると、サービス全体の評価が大きく下がる可能性があるため、かなり責任の大きな仕事です。

そこで僕は、『テスト駆動開発』で学んだ習慣でコードを書きました。

まずは小さなステップごとにテストコードを記述し、それに合わせた実装を進める。そして、再度テストを追加してから実装を更新し、重複部分があればリファクタリングする。現代の分散システムではこのスタイルが難しい場合もありますが、現代的な『Unit Testing』の本がその方法を補完してくれます。

このように、最初にスケールのシミュレーションコードから始め、全ての本番コードをテスト駆動で開発しました。他の人より開発スピードが遅く見えるかもしれませんが、そうすることでめちゃくちゃケアレスミスの多い僕でも、少しずつ確実にプログラミングを進められます

あまり才能が無いので設計も下手くそですが、テスト駆動の習慣で設計をしていくと、考えることが小さくなるので、最初はそうでもありませんが、徐々に良い設計になっていきます。テストがあるので、リファクタリングをするのにも躊躇がありません。

そうしてプログラミングを進めていき、Balaという同僚の書いたコードと統合を行ったときのこと。その過程で起こった驚くべき結果に、僕は非常に感動しました。

自分から見たら、Balaはまさしく天才といえる、高度な技術力を持ったプログラマーです。彼の作ったコードと僕が書いたコードは、どちらも全く新しいもので大規模な統合になるため、当初その統合には時間が掛かると思われていました。

ところが、その天才プログラマー・Bala、そしてADHDで才能のかけらもない僕のコードは、一発で動作しました。しかも、なんの問題もなく。周りの同僚たちも、統合のスムーズさに驚いていました。

僕にはいまだに、才能のかけらもありません。しかし周りの人と唯一違う事が、テスト駆動の「習慣」を身に付けていることでした。全員ではありませんが、自分のチームで最高のデザインをするMathewはテスト駆動のことを「時を超える技術」といっていました。自分のメンターのChrisも、テスト駆動はめっちゃ役に立つと口を揃えます。

現在のアーキテクチャでは、テスト駆動は常に使わなくても良いと思いますが、あなたが僕のような凡人なら、この「習慣」を練習してポケットに入れておくだけで、天才と肩を並べることが出来る秘密兵器になります。

本の内容に関しては、あまりここでは述べません。なぜならネタバレするよりも、読んで楽しんでほしいからです。

テスト駆動は、テストを書くことでもなく、テストに駆動されて開発をする習慣です。ぜひ皆さんも、この秘密兵器を手に入れてみませんか? 古い本ですが、最新の本と組み合わせるとものすごい力を発揮しますよ。

あとがき

ちなみに、僕が読書感想文を書こうと思って最初に頭に浮かんだのは、『Good Code Bad Code』と『Unit Testing Principles Practices and Patterns: Effective testing styles patterns and reliable automation for unit testing mocking and integration testing with examples in C#』でした。

『Good Code Bad Code』の素晴らしさは、現代的なコードを対象に書いてあるところです。

この手の本では『リーダブルコード』(‎オライリージャパン)が有名ですけど、これは日本語版で2012年に書かれたものなので、残念ながら現代のコーディングスタイルからすると少し古いところがあると思います。

その点『Good Code Bad Code』には、かなり現代的なコーディングスタイルでの良いコードと悪いコードが書かれています。10年もたつと、どんな言語でも言語仕様がもの凄くアップデートされていますので、過去からいろいろあった良いコードやデザインについて知りたいなら、新しい良書を読むといいでしょう。

『Unit Testing』についても同様に、「現代的」な分散システムでのC#のコーディングにおける様々なUnit Testの考え方、パターンが整理されています。C#使いの人なら、ぜひ読んでいただきたい素晴らしい本です。

このように、コンピューターの書籍は考え方のアップデートが激しいので、新しい書籍を継続的にアップデートして読んでおくのがお勧めです。例えばC#とかにしても、毎年新しいバージョンが出てきて新しいコーディングスタイルが導入されます。昔良かったコードが良くないコードになるケースはよくあるので、自分自身のアップデートを継続することが大切です。

【語り手】
『世界一流エンジニアの思考法』著者
牛尾 剛さん(

@sandayuu⁠⁠⁠

1971年、大阪府生まれ。米マイクロソフトAzure Functionsプロダクトチーム シニアソフトウェアエンジニア。シアトル在住。関西大学卒業後、日本電気株式会社でITエンジニアをはじめ、その後オブジェクト指向やアジャイル開発に傾倒し、株式会社豆蔵を経由し、独立。アジャイル、DevOpsのコンサルタントとして数多くのコンサルティングや講演を手掛けてきた。2015年、米国マイクロソフトに入社。エバンジェリストとしての活躍を経て、19年より米国本社でAzure Functionsの開発に従事する。ソフトウェア開発の最前線での学びを伝えるnoteが人気を博す

文/牛尾 剛 写真/赤松洋太 編集/今中康達(編集部)

▼牛尾 剛氏 書籍『世界一流エンジニアの思考法』(文藝春秋)

「怠惰であれ!」「早く失敗せよ」――

米マイクロソフトの現役ソフトウェアエンジニアの著者が、超巨大クラウドの開発の最前線で学んだ思考法とは? “三流プログラマ”でもできた〈生産性爆上がり〉の技術!

・試行錯誤は「悪」。“基礎の理解”に時間をかける
・より少ない時間で価値を最大化する考え方とは?
・「準備」と「持ち帰り」をやめて、その場で解決する
・マルチタスクは生産性が最低なのでやらない
・“脳の負荷を減らす”コミュニケーションの極意
・コントリビュート文化で「感謝」の好循環を生む etc

仕事と人生を「自分の手でコントロールする」最高のスキルがここに!

>>購入はこちら

【関連記事】

おすすめの記事

新着記事

  1. ツルッとモチっと食感はこだわりの証!田んぼの中の行列ができるうどん屋さん『がいな製麺所』 加西市

    Kiss PRESS
  2. <やめる家事、最有力候補!?>旦那の朝食、作りますか?各家庭でさまざまな朝ごはん事情

    ママスタセレクト
  3. 集中治療室の父親に会うため試験を受けなかった中学生、教師の心ない言葉に傷つく(マレーシア)

    Techinsight
  4. Foxtechの水上救助ドローン「U-Fin 120」、危険な水域で迅速に移動でき大人2人に浮力を提供できる

    DRONE
  5. 【ホテルの朝食】穴子丼に姫路おでん…兵庫の幸が食べ放題! 姫路城が見えるロケーションも最高 / ホテルモントレ姫路

    ロケットニュース24
  6. 菊正宗の『日本酒の化粧水』と人気オンラインゲーム『刀剣乱舞ONLINE』 のコラボ商品が販売されるみたい。3種類のポーチセット

    神戸ジャーナル
  7. 【京都】妖怪ストリートの老舗コロッケ店 名物「妖怪コロッケ」をご紹介

    キョウトピ
  8. お父さんが出張から帰宅し、犬が大喜びするかと思いきや…『そっちかいw』完全に逆な光景が136万再生「爆笑」「気持ちわかるw」共感の声も

    わんちゃんホンポ
  9. 関西で活躍するジャズプレーヤーたちが兵庫津に!「クリスマス JAZZ Night」 神戸市

    Kiss PRESS
  10. 西武が前ソフトバンクの仲田慶介を育成で獲得、今季一軍初出場のスイッチヒッター

    SPAIA