C# テスト駆動開発の実践方法:はじめに #1

これまでの連載企画の中でC#というプログラミング言語を深堀してきました。入門向けから中級レベル、そしてオブジェクト指向とC#のレベルを一段ずつ上がりながらスキルアップできる内容を解説しています。

そこからさらに一歩進んで、C#での実装スキルを挙げていく内容に進みたいと考えて、新しい連載企画を考えました。内容は「テスト駆動開発をする方法」になります。テスト駆動開発とは「テスト駆動開発」というKent Beckの著作で紹介された開発手法で、プログラマーとして仕事をする人は知っておくべき内容になります。

テスト駆動開発とは

「テスト駆動開発(Test-Driven Development: TDD)」とは、テストコードを中心軸に据えた「テストファースト」を採用する開発手法です。コーディングの前に要件・機能から読み取れるテストコードをはじめに書き(テストファースト)、テストコードを満たす実装を行っていく開発スタイルを指しています。

テスト駆動開発をすることでテストコードを記述する癖がつき、さらに実装とテスト、修正を短いサイクルで繰り返すことができるので、フィードバック・改善をより効率的に行うことができます。

また、テストコードを先に書くということは、そのテストを満たせれば実装済みの機能が保証されるのでリファクタリングを行う際にも問題がないかどうかを確認しながら実装作業を進めることができます。

テスト駆動開発を学ぶ理由

「プログラムを修正する度にデグレードに怯えている」という開発者は少なくないと思います。実際に保守運用されてきたソースコードや、アプリケーション開発がある程度進んできたときの修正作業などでソースコードを修正するのは念入りな調査が必要になりますよね。

そういった「予期せぬ影響」から身を守るための一つの方法として挙げられるのが「テスト駆動開発」の手法です。テストファーストな開発手法なので、記述済のテストコードを満たせれば機能も満たせるという「安心」も得ることができます。

テスト駆動開発を学ぶことで「デグレード」から身を守ることができるだけでなく、これまでの実装とは別に「新たなる視点」から実装を考えることができるようになります。要するに「機能を満たすには、どのようなテストに合格すればいいか?」というゴールからのアプローチもできるよになります。

また、テスト駆動開発はテストを書きながら開発を進めていくので、様々な機能を満たす小さな部品を作っていく作業が先行していきます。小さな部品の方がテストコードが書きやすいので、自然とソースコードが短くなり、可読性の高いコードに仕上がっていくというメリットも得ることができます。

そうした様々な理由からプログラマーとして働いていくならば、是非ともテスト駆動開発は学んでいて損がありません。単純に機能を実装するだけでなく、小さい変更に耐えられて、フィードバックを小さく行いながら進められる快適な開発でもあるのです。

テスト駆動開発をはじめよう

さて、ここまで記述してきた内容でテスト駆動開発について、少しでもイメージがわいてきたでしょうか。「かなり便利そうだな」と思った人も多いかもしれません。実際、テスト駆動開発を学ぶことはソースコードにも良い影響を与えます。

そんなテスト駆動開発を一緒に学んでいきたいと思います。C#はテスト駆動開発を行うのに十分な環境が提供されているため、とても始めやすいと思います。Visual Studioの使い方から簡単なサンプルを通して、テスト駆動開発を実践する方法を学んでいきましょう。