連載
NAgileで始める実践アジャイル開発

第6回 ソフトウェア開発の秘伝 "Development Baseline 2007"

NAgiler 黒石 高広
2007/04/06
Page1 Page2 Page3 Page4

■■7. テスト駆動開発■■

テスト駆動開発については、以前にも説明したことと思う。しかし、ここでいうテスト駆動開発は、もっと広い意味でのテスト駆動開発だ。

 

広い意味ですか?

 

そうだ。以前説明したNUnitを利用したテスト駆動開発は、開発者テストとも呼ばれるもので、開発者が設計の観点からテストを記述しプログラミングを行うものだ。Development Baselineでのテスト駆動開発は、その開発者テストに加えて、顧客テストによるテスト駆動開発(顧客テスト駆動開発)を行うものだ。

 

顧客テスト??

 

顧客テスト駆動開発とは、例えばストーリーで表現されたソフトウェア要求を顧客テストとして記述し、その顧客テストが正常に動作するように開発者テストを作成してテスト駆動開発を実践する開発手法だ。顧客テスト駆動開発は、開発者テスト駆動開発(開発者テストによるテスト駆動開発)よりも一回り粒度の大きなテストともいえるだろう。この顧客テスト駆動開発を行うことで、現在の実装がどれだけのストーリーを実現しているか追跡できるようになるし、実際に顧客が入力するデータの組み合わせをシミュレーションすることもできるのだ。

 

ほほ〜。

 

顧客テスト駆動開発では、“FitNesse”というツールを利用する。FitNesseは、オープンソースのソフトウェアであり、下記URLから入手することが可能だ。英語の資料になるがガイダンスの資料も公開されているので、そちらも参考にしてみるとよいだろう。

 FitNesseの実行画面は次のようになる。

FitNesseの実行結果
作成した顧客テストをFitNesseのWikiから呼び出し、その実行結果を緑色(成功)、赤色(失敗)でグラフィカル表示する。
 

Webベースのユーザー・インターフェイスが付いてるんですね。しかもExcelに入力したテスト・データを貼り付けて変換する機能まで付いてる!

 

そうだ。顧客テストを記述する際にはコードを記述する必要があるので、実際の顧客(エンド・ユーザー)がそのままこのツールを使用するのは難しいだろうが、開発者がこのツールを利用することで、ストーリー(要求)から実装まで一貫した手法で開発でき、それらを追跡できるようになるのだ。

 

はい。さっそく勉強したいと思いました。

 

よかろう。では、最後のゼロ機能リリースについて説明しよう。

■■8. ゼロ機能リリース■■

さて、ゼロ機能リリースという言葉を聞いて、一体どんなものであるか想像できるか?

 

え? いきなり質問ですか……えっと、ゼロの機能をリリースするということで、「まったく機能を持たないままリリースしちゃえ!」ってこととか……違うか……。

 

もっと自信を持ってよい。そのとおりだ。

 

え? 本当ですか? そのまんまですね。宮崎県知事ですか。

 

……ひと言余計だな……。まぁよい。ゼロ機能リリースとは、最初のバージョンではまったく機能を持たないソフトウェアとしてリリースするというやり方だ。もちろん、モックアップの画面は作成するが、ボタンを押してもデータベースへ登録を行ったり、データベースから実際の値を取得してきたりはしないという意味でのゼロ機能リリースだ。

 

なるほど、さすがにモックアップの画面は作るんですね。

 

それはそうだ。画面もないと何もなくなってしまうだろう。ゼロ機能リリースを行うことで、まず全体感がつかめるようになる。最終的なゴールと開発のボリュームが見えてくるからな。また、進捗しんちょくも見えやすくなるというメリットもある。例えば、100画面中50画面が完成したとすると、それは進捗の指標としてかなり分かりやすいものだろう。

 

なるほど。

 

それにゼロ機能リリースには、基盤構築のための期間という意味も込められている。プロジェクトの最初でその開発に必要な構成管理やプロジェクト管理、自動化などの基盤を構築する。また、その作業と並行してソフトウェア開発に必要な技術のトレーニングも行う。何事にも準備の期間は必要であり、良い仕事をするためには良い準備を行うことが大切だ。それがゼロ機能リリースを行うもう1つの意味でもあるのだ。

 

そうですね。準備は大切ですよね。

■■9. 終わりに■■

どうだ。以上がDevelopment Baselineの全貌ぜんぼうだ。理解できたか?

 

もうお腹いっぱいです。

 

一度にすべてを理解できなくてもよい。理解できる部分から深めていくのだ。このDevelopment Baselineの秘伝の書は下記URLにも公開されているので、そちらも参考にしてみることだ。

はい、確かに受け取りました。

 

ゴホッゴホッ……頼んだぞ、滝よ。お前にしてやれることはもう何もない。

 

何いってんですか、師匠。これで最後みたいないい方しないでくださいよ。

 

もう時間がないのだ、滝よ……最後にお前にこの言葉を贈ろう。

 

師匠……。

 

そうだ。いままで私が求めてきたNAgileとは何かという答えだ。これは、ひょっとすると答えのない問いかもしれんし、人によってまったく答えが違うものだとも思う。しかし、それでも現在の私がこう考えるに至った答えをお前に伝えておこうと思う。ゴホッゴホッ……心して聞くがよい。

 

はい。師匠。お願いします。

 

NAgileとふは死ぬ事と見つけたり

 

……。

 

どうだ?

 

……武士道じゃん。

 

何か不満か?

 

ここまで引っ張っておいて、ふざけないでくださいよ、師匠。

 

私は大まじめだ。お前は何かこの言葉を誤解していないか?

 

え〜だって、「武士道と云ふは死ぬ事と見つけたり」って言葉は、“武士なら死んでその名を残せ”とか“細く長く生きるより太く短く生きる”的な意味じゃないんですか?

 

そうではない。実は“武士道と云ふは〜”の文の後に続く1文があって、そこを読むと本来の意味が分かってくる。ここは古文の授業ではないので、その1文は省略するが簡潔にいうと“武士道を極めることは死を覚悟することから始まる。明日はないという覚悟ができることで、その日を一生懸命に生きることができる……”というのだ。かなりの意訳だが。

 

それはどういうことですか?

 

つまり、いまできることを一生懸命やるということだ。できないことばかり考えても仕方がないし、過去のことや未来のことばかり考えても仕方がない。いまの積み重ねこそが将来につながるということだ。武士道の言葉は、道は違うとはいえ1つの道を極めたものの言葉であり重みが違う。まぁ、死を覚悟というのはソフトウェア開発では行き過ぎだがな。

なるほど、意味は分かりましたが、でもNAgileとどんな関係が……?

同じことだ。アジャイル(NAgile)でもその日に行うべきことを決定し、それを集中して行う。それが1日、1週間、1イテレーション……というように徐々に積み重なっていき、将来のソフトウェアを生み出していくのだ。しかも、ただ行うだけでなく、毎日/毎週振り返りを行い、自分が目指している方向やいままでやってきたやり方で改善すべき点はないかを確認しながら、道に迷わないように1歩ずつ進んでいくのだ。それがNAgileということだ。

なるほど。師匠がふざけていったのではないことは分かりました。

 

分かってくれたようだな……ゴホッゴホッ。

 

大丈夫ですか? 師匠。

 

……ゴホッゴホッ。これで、私から伝えられるものはすべて伝えた……ゴホッゴホッ。

 

師匠、しっかりしてください……(涙目)。

 

私は大丈夫だ。滝よこれを……。

 

これは?

 

NAgile免許皆伝の書だ。お前は十分に成長した。もう私がついていなくても大丈夫だ。……ゴホッゴホッ。

 

大丈夫じゃないです。私なんてまだまだです。師匠の指導がないと、すぐに勘違いして違う方向に行っちゃうし……リファクタリングもまだ奇麗にできないし……。

 

……時間がない。滝よ、その書を早く見るのだ……。

 

……(涙をぬぐって)分かりました。師匠の指導は一生忘れません。

“免許皆伝? はぁ? そんなもんありまへんがな。”

 なんじゃこりゃ……(汗)。

 

そこに書いてあるとおりだ。NAgileの世界にゴール……免許皆伝なんてものは存在しない。自分たちはいま何をすべきか考え、やるべきことを実践し、その改善を行っていく。その繰り返しこそがNAgileだ。そのことをいつまでも忘れるでないぞ。

 

……はい。(うまく丸め込まれている気もしますが)分かりました。ところで、師匠の病気は大丈夫なんですか?

 

ん? この咳か……?

 

はい。いまにも死んじゃいそうです。

 

これは花粉症だ。最近、花粉の飛散量が多くてな。

 

花粉?? え……じゃあ時間がないといってたのは……?

 

ああ、それか。伝えるのが最後になってしまったが、このNAgile連載は今回で最終回ということだ。残りのページもわずかなようだな。

 

がーん、そっちですか……! てっきり師匠が重い病気にかかっていて、余命が少ないものだと思ってました。

 

馬鹿もん。私はまだまだ元気だ。いいか、ソフトウェア開発の世界はもっと広くて深い。連載としては今回が最後だが、われわれのやるべきことはまだまだたくさんある。これからもビシビシ指導していくぞ。覚悟しておけ。

 

はい!! 師匠。これからもよろしくお願いします。End of Article

(Illustrated by 正木茶丸)

 

 INDEX
  NAgileで始める実践アジャイル開発
  第6回 ソフトウェア開発の秘伝“Development Baseline 2007”
    1.Development Baselineとは
    2.プロジェクト管理とソフトウェア構成管理
    3.自動化と標準化
  4.テスト駆動開発、ゼロ機能リリース
 
インデックス・ページヘ  「NAgileで始める実践アジャイル開発」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間