プロトタイピングとアジャイル開発

アジャイル開発とプロトタイピング、割と近い文脈ででてくる用語なのだけれど、それぞれ別のものなんじゃないかと考えている。別、というよりもフェイズが違うというべきか。アジャイル開発はあくまで開発であり、プロダクションレベルのものをよりスマートに作り上げるための手法であるのに対し、プロトタイピングはアイデアを出す、またはぼんやりとしたアイデアの形を作るためのものなのだと思う。(ちなみにアジャイルといってもアジャイルUCDという用語もあるけれど、とりあえずここで触れているアジャイルはアジャイル・デベロップメントのことです)

先日のPivotal LabsのIan McFarlandさんと伊藤 穰一の対談(詳しくは安藤日記へ)にてIanが「プロトタイプのコードは絶対に捨てる」と言ったのを聞いた時はハッとさせられる思いだった。曰く、プロトタイプはユーザーストーリーを決めるものでコードはその発展系としてプロダクションに進んではいけない。ユーザーストーリーが決まったらテストを書いてTDD(テスト駆動開発)で作り直す、のだそうだ。確かに納得である。

burndown-chart
Photo by kakutani
バーンダウンチャート: そのチームがどのくらいの速度でストリーポイント(工数見積もりの単位)をこなしているかを可視化するチャート

アジャイル開発のフェーズでは、ソフトウェアに限ったことかもしれないけれど、テスト駆動開発であることがすごく重要だと思っている。テストがあることで、今日やるべきことが決まる。なのでチームの状態が見えるようになる。チームのヴェロシティ(開発速度)を見る上では、一つの実装に区切りができないといけない。なので、ここまでできればこのユーザースートリーは完成、ということをコードレベルで先に定義してしまうことはとても有効なプラクティスだ。そして、結果的に、テストがあることで、その後に変更を加えても丈夫なコードになる。

Paper prototype
Photo by cesarastudillo
ペーパープロトタイプの例

逆にいうとアジャイル開発に入った時点では(それほど)ユーザー視点を持つ必要はなくて、あくまで既にイメージが共有されているユーザーストリーを効率的に消化することに注力することになる。プロトタイピングは、そのユーザーストリーをチームで共有するために作る。なので、捨てることが前提で素早く作ることが最も重要となる。多くの人が紙ではじめるのもそのためだ。もちろん、本物に近い動くプロトタイプが一番イメージがはっきりするし、インタラクションの気持ちよさなんかは動かしてみないと分らないところが多いので、実際にコーディングするのは大変よいことなのだけれど、それはクオリティは度外視したものとなりがちである(クオリティにとらわれるべきではない)。例えば、データベースに無駄なスキーマが増えたり、使われないアクションや、ネーミングとして適切でない変数が偏在することとなる。なので「プロトタイプのコードは絶対に捨てる」というモットーは大変いさぎよい。そこからツジツマを合わせつつプロダクションに持って行くよりも効率はよいのかもしれない。

[アジャイル開発のおすすめ本]

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中