Skip to content

Instantly share code, notes, and snippets.

@kozy4324
Created January 23, 2012 03:44
Show Gist options
  • Save kozy4324/1660400 to your computer and use it in GitHub Desktop.
Save kozy4324/1660400 to your computer and use it in GitHub Desktop.
Review_Test-Driven_JavaScript_Development

[書評]テスト駆動JavaScript

テスト駆動JavaScript(Amazon)

テスト駆動JavaScript

table of contents

  1. 章立て
  2. この本を読むべき人
  3. オススメな読み方
  4. 所感
  5. まとめ

1.章立て

  • 第1部 テスト駆動開発
    • 第 1章 自動テスト
    • 第 2章 テスト駆動開発プロセス
    • 第 3章 現役で使われているツール
    • 第 4章 学ぶためのテスト
  • 第2部 プログラマのためのJavaScript
    • 第 5章 関数
    • 第 6章 関数とクロージャの応用
    • 第 7章 オブジェクトとプロトタイプの継承
    • 第 8章 ECMAScript第5版
    • 第 9章 控えめなJavaScript
    • 第10章 機能検出
  • 第3部 JavaScriptテスト駆動開発の実際
    • 第11章 Observerパターン
    • 第12章 ブラウザ間の違いの吸収:Ajax
    • 第13章 AjaxとCometによるデータのストリーミング
    • 第14章 Node.jsによるサーバーサイドJavaScript
    • 第15章 TDDとDOM操作:チャットクライアント
  • 第4部 テストのパターン
    • 第16章 モックとスタブ
    • 第17章 優れた単体テストを書く

2.この本を読むべき人

各章ごとに分かれます。

第1部

「導入」です。読みべき人は以下。

  • 「TDDなにそれ?おいしいの?」な人
  • 「JSでTDD?Javaならやったことあるけど...」な人
  • TDDに懐疑的な人

TDDは「テスト手法」ではなく「設計と開発のためのプラクティス」です。第1部ではそれに対する理解の足がかりが得られ、JSでのTDDを始めるにあたって必要な情報が解説されています。

第2部

JSを扱う上での他言語と特に異なる点について解説しています。この章はTDD関係ありません。JSについて深い知識を有している人は読み飛ばしてOK。以下に当てはまる人は読んでおくといいです。

  • 「JSの関数はファーストクラスオブジェクト」の意味がよく分からない
  • 「実行コンテキスト」「スコープ」がよく分からない
  • 「クロージャとその利点」「即時実行関数の使い所」がよく分からない
  • 「プロトタイプ継承」がよく分からない
  • 「ECMAScript5」がよく分からない
  • 「UA文字列判定よりもよりよい機能検出(feature detection)」について知りたい人

第3部

様々なモジュールの実装についてTDDでどのように行うかを解説しています。

  • 「TDDによるJS実装の詳細」を学びたい
  • 「イベントドリブンなJSでのTDDが分からない」という人
  • 「Hostオブジェクトが絡むとTDDどうやるの?」という人
  • 「Node.jsでのTDDプラクティスってどうなの?」な人

この本のメインコンテンツです。第1部を読んでTDDに興味が出た、詳細が知りたい、という人が理解を深めるためにこの章を熟読するべきです。

第4部

よりよいTDDを行うため、

  1. モックとスタブについての考察
  2. テストの品質を上げるためのガイドライン

について解説しています。「TDD実践をもう始めた、そこからさらによいTDDを書きたい」という人が読むべき章です。

3.オススメな読み方

各章の最後にある「まとめ」がよくまとまっているので、まずは各章の導入部分とまとめだけを読めば良いです(30分ぐらいで全容が把握できる)。第3部以降はまとめを読んで気になる章から読んでいけばよいです。

またTDDに興味沸かないという人でもJSの知識として第2部は読んでおくほうがよいです。

4.所感

TDDは「テスト手法」ではなく「設計と開発のためのプラクティス」という認識が深まった。

うまく書かれたユニットテストはJSで直面する問題(クロスブラウザロジックの隠蔽やHostオブジェクトが絡むロジックの設計)に対してのよい設計を導いてくれる(気がしてきた)。

また外部から見たオブジェクトの仕様(IN/OUT、状態遷移、振る舞い)を表現する手法としてユニットテストは有効である。本書でも一貫してテストコードファーストでの解説がなされておりそれが実感できる。

ぶっちゃけ「JSのTDDはこうすればよい!」という銀の弾丸的なTDD方法論が分かったわけではない。それはおそらく書くプロダクトコードでケースバイケース。ただイベントドリブンなJSにおいてどういった設計をしながらTDDで開発するのが良いか、という指針は理解出来たと思う。

5.まとめ

構成のまとまり具合と網羅しているJS情報が秀逸。良書。 JSでTDDをしたい人は必読 。そうじゃなくても JSデベロッパーは第2部必読

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment