DebTab

  • ホーム
  • DevTabとは
  • 記事一覧
    • きたえる
    • かえる
    • つくる
    • みちびく
    • たばねる
    • つたえる
かんたんログイン
Githubでログイン
Githubアカウントでかんたんにログインして、DevTabをもっと便利に使おう。

DebTab成長しつづけるデベロッパーのための情報タブロイド

DebTab

ログイン

検索 検索

TDD Kataのすゝめ

写真前川 博志

きたえる

  • #TDD

2017.12.03

ポイントポイント

0

この記事は、 ギルドワークス アドベントカレンダーの三日目の記事です。

テスト駆動開発は難しい

テスト駆動開発とは、もう殆どの皆さんには説明の必要はないでしょうが、 テストを先に書き、その後に実装を行う という開発方法です。 テスト駆動開発を行うことで、素早いフィードバックを得ながらコードを書き、そして洗練させていくことができると 言われています。

ですが、テスト駆動開発を取り組むにあたって、いきなりうまく回していくのは、かなり難しいです。

一体どれくらいの粒度のテストを書けばいいのか? テストが通らない「レッド」状態をどう抜け出せばいいのか? リファクタをどんなタイミングでどんな規模でやっていけばいいのか?

こういった疑問や不安が、TDDをやり始めると浮かんでくると思います。

TDD Kata をやろう!

そこで、TDD Kata です。

Kata とは 「方」、すなわち、武道などで行われる「形稽古」のことです。

形稽古では、決められた動きを決められた手順でトレースすることで、動きを体に覚え込ませます。そこに一切のアレンジを入れてはいけません。 守破離の「守」を徹底的に行う稽古ですね。

同様に、TDD Kata とは、TDDの基礎的なプラクティスを、守るべき「方」として定義しています。

しかし、プログラミングの方ってどういうものか、ちょっとわからないですよね? それでは、いくつか例を見てみましょう

TDD Kata の実例

今回取り上げるのは、TDDの父の一人でもある、"アンクル・ボブ" Bob Martin氏が公開している、以下のTDD Kata を見ていきましょう。

  • ArticleS.UncleBob.TheBowlingGameKata

  • BowlingGameKata という名前のとおり、ボウリングのスコア計算を行うものです。

Kataというからには、本当に一挙手一投足まで、細かく定義されています。 例えば、このような具合です。

はじめに

  • BowlingGameKata という名前のProjectを作成する
  • BowlingGameKataTest というテストクラスを作成する
  • この時点で、まずテストを実行すると、"No tests found in BowlingGameTest" というエラーが発生する

このように、プロジェクトの名前だけでなく、 どのタイミングでコンパイルを行い、どのタイミングでテストの実行を行うのか といった、プログラミングの所作まで定義しています。 コードそのものについては、どこを消すか、どこを増やすかというのを各ステップごとに分かるように、ステップごとのコード全体を以下のように表示しています。

このように、各ステップその通りにコードを書いていくことになります。この例だと、「この段階ではテストが失敗する」ということも示されていますね。

TDDの悩みの一つである、リファクタリングをいつ行うかについても、ステップの中で行うタイミングや行うポイントをわかりやすく示しています。以下のような場面でリファクタリングが行われています。

  • 重複処理をまとめてメソッド化する
  • setup メソッドにテストの初期化処理を集約する
  • 説明的なコメントを含む処理をメソッドに切り出す

最後に

ここまで紹介してきましたが、実際には自分で手を動かしてみるのが一番です。 本家であるJava版はパワーポイントをダウンロードできますので、是非それを参考にKataをやってみてください。

また、他の言語についても、Githubに様々なポーティングが投稿されています。

是非、試してみて下さい。

ただし、大切なことは、「方」を守ること。そして、繰り返し行うこと。 慣れてくれば30分で終わる方です。私はお昼休みに一ヶ月間解き続けて、TDDの呼吸がなんとなく掴み取れたかな、と思っています。

これからTDDする方も、一度諦めた方も、いまやっている方も、ぜひ一度形稽古を!

共感した

ポイントポイント

0

取り消す

この記事に共感したら、何度でも押してこの記事のポイントをみんなでアップしよう。

自分の感想を残す

この感想は、サイトに公開されることはなく自分にしか見えません。自分の考えのログを残すために感じたことを登録し、のこしておきましょう。あとで振り返ったときに、あのとき自分はこう考えていたのかということを知ることにより、あなたの成長へとつながります。

Githubでログイン

Githubアカウントでかんたんにログインして、DevTabをもっと便利に使おう。

  • ひとつ前の記事

    価値探索とUXデザイン・その2:インタビューで他者の世界を理解する

  • ひとつ後の記事

    関係の質を上げるスモールトーク

この記事もどうですか?

「俺のエクストリームプログラミング入門 」を合宿で聞いた

先日、ギルドワークスの合宿の一コマで永和システムマネジメントの木下 史彦さんに「俺の エクストリーム…

きたえる

2016.07.19

ポイント
0

リモートワークチームが越境したら、ただの同席ワークだった(だが、それがイイ)

逆リモートワーク、一周回って同席ワーク  1月24日、25日と開発合宿を開きました。場所は静岡県のい…

きたえる

2019.01.28

ポイント
4

なかなか身につけるのが難しい開発の習慣

世の中には色々な開発に関するプラクティスがあります。特にアジャイル開発の文脈では、テスト駆動開発やペ…

きたえる

2017.03.01

ポイント
0

シェア
  • Twitter
  • このエントリーをはてなブックマークに追加
  • Google Plus

ログインして
ブックマーク

  • Twitter
  • このエントリーをはてなブックマークに追加
  • Google Plus
  • ログイン
LINE@

新しい記事が出たときや、注目の記事などを
定期的にLINEでお知らせしていきます

LINEで登録

LINEイメージ

DevTab
成長しつづけるデベロッパーのための情報タブロイド

株式会社ギルドワークス
https://guildworks.jp
  • プライバシーポリシー
  • お問い合わせ

Copyright © GuildWorks Inc. All Rights Reserved.

ページのトップへ