今こそ使える! プロトタイピング

第3章 実践プロトタイピング──本当にできるのだろうか?という不安を取り除くプロトタイピングパターンとアンチパターン

2008年7月15日

この記事を読むのに必要な時間:およそ 2 分

前章では仕様の決定を助けるパターンを取り上げました。今回は図の赤い網掛け部分,もうひとつのプロトタイピングパターン,『本当にできるのだろうか?という不安を取り除くためのパターン」と,プロトタイピング時のアンチパターンを取り上げます。

図1 この章で解説する範囲

図1 この章で解説する範囲

本当にできるのだろうか?という不安を取り除くプロトタイピングパターン

スパイク
状況新しいフレームワークなどを採用する。
難しい問題を抱えている。
問題実装方法に自信がない。
解決狭くても関係する個所を一本通すコードを書いてみる。
必要なモノコードを書くための解決策

スパイクとはXPのプラクティスです。たとえばWebアプリケーションに新しいフレームワークを採用するときのことを想像してみてください。どうやったら実装できるのか,確認するためにプレゼンテーション層からパーシスタンス層までの,一通りのレイヤを実装してみることはないでしょうか? このように,範囲が狭いですが一本上から下まで通す実装のことを,スパイクと呼んでいます。細くても一通り実装をすることで,実装上のリスクを低減させます。

技術的に難しい課題を抱えているときも,同様にスパイクを行います。解決策は思い浮かぶのですが,実際にはやったことがないという状況でも行います。解決策が正しいかどうかを検証するために,狭い範囲しか通らないとしても一本細く実装を通すのです。そうすることで影響する範囲がわかり,本実装時のリスクを低減させます。

また一本通すことで本実装時の作業時間をより正確に見積もることができます。いつまでもスパイクを続けてしまわないよう,最初に終了時間となる締切を決めておきます。終了時間までにできなかった場合は別の実現方法がないか,再度検討するか,その機能自体あきらめます。そういう意味で,スパイクは仕様の決定を助けるプロトタイプパターンにも含みます。

ラーニングテスト
状況新しいライブラリを学習する。
問題ライブラリの正しい利用方法がわからない。
解決ライブラリの振る舞いを確認するテストコードを書く。
必要なモノ実験コードを書くための大まかな流れ

技術的な課題を解決するために,新たなライブラリを採用する状況を思い浮かべてください。その新しいライブラリの使用方法を学ぶために,ライブラリを使った簡単なプログラミングを行うことがないでしょうか。これがラーニングテストです。

筆者は新しいライブラリを利用する場合,テストコードを書くことでその利用方法を学ぶ習慣を身につけています。テストコードを利用するのは,ライブラリの振る舞いを確認するための検証コードを書くためです。またEclipse上にQuick JUnitプラグインをインストールした環境では,テストメソッドごとにテストを実行できます。プログラムを実行する入り口を簡単に作成する事ができるのです。

ライブラリの利用方法を説明する場合,抽象的な概念を伝える事も大事なのですが,具体的な利用方法を元に,説明をする相手が動かしながら学ぶ方がより素早く理解することができます。学習は目や耳だけで理解に努めるよりも,手を動かした方が確実に早いでしょう。

ラーニングテストをプロトタイピングのパターンに含んだのは,ラーニングテストから得た知見を使って製品コードに組み込んでいくコードを作成する,という意味ではプロトタイピングと変わらないためです。

複数選択肢を試す
状況同じ課題に対しいくつかの案がある。
難度の高い「機能/障害」「実現/修正」する。
パフォーマンスのトレードオフを検討する。
新しいプラットフォームを採用する。
問題技術上のリスクが高い。
いくつかあるどの案も,決定的に優位な点が見出せていない。
解決一定期間複数のプロトタイピング案を試してみる。
期間内でできた最善の案を選択し,製品へ組み込む。
必要なモノ複数のプロトタイピング案(難度と実装期間と価値でトレードオフを図れる案であること)

難しい課題を解決しようとする時に,複数の案を試してみることは無駄になりません。大抵の場合,難しい課題を解決する案は複数あり,その関係はトレードオフとなる場合が多いからです。とくに早期に修正しなければならない障害は,解決案として応急処置となる案と,実現には非常に時間がかかるが,根本的に問題を解決するための案の2つがあれば,応急処置を行った後に,落ち着いて根本的な問題を解決するための案を試すことができるでしょう。

もし,どちらの方法を使っても対応できなかったとしても,少なくとも同じ課題を複数の方法でプロトタイピングすることで,課題に対して違った視点からとらえられることができます。複数の別の視点から問題を捉えることで,プロトタイピングの方式検討時に出なかった案が生まれる場合もあります。

また,ある機能を実現するための案が複数ある場合も同様に複数試してみることも無駄になりません。トレードオフや,複数の視点から捉えられる利点の他にも,パフォーマンスの比較をすることができます。パフォーマンス問題が予見できる場合は,複数プロトタイピングを行うことで,そのリスクを低減させてください。

プロトタイピングのアンチパターン

プロトタイピングを行う上で,良くないと思われるパターン(アンチパターン)も簡単にご紹介しましょう。

残骸コード

実際にはもう使われることがないプロトタイプが製品コードの中に残っていると,製品コードに対して悪影響しか及ぼしません。たとえば新たなメンバーが勘違いをして,使われることのないプロトタイプを,これから実現していく仕様と思うことも考えられます。古くて使われることのなくなったアイディアは,かけた労力を気にせずに削除しましょう。作成したプロトタイプを作った経験は確実にあなた方の中に残っています。

テスト駆動開発(TDD)への固執

プロトタイピング時は大抵「何を持って正しいとするか」という仕様が固まっていません。プロトタイプを作成するための仮決めされた仕様があれば,そこからテストを作成できますが,プロトタイピングでは「仕様を作成している」状況であるため,TDDを行っても無駄になってしまうことが多いでしょう。もちろんその状況でも,実装者が正しく実装できていることを確認するためのTDDは,行った方が良いでしょう。

仕様が固まった後で,回帰テストをするためのテストコードは,一度作成すればテストで常に利用されるので,一定の効果があります。しかしプロトタイピングの段階では,UIの構成や操作,動作を確認するためのテストコードは,一般に作成に多大な労力がかかり,すぐに変更されてしまう状況では無駄となってしまうことが多いでしょう。

ただし技術的なリスクを低減するためのスパイクに関しては,動作が正しく行われているかどうかを検証する目的があるため,テストコードから作成するTDDをする方が効果的です。テストコードから検証する内容を検討してください。


ソフトウェア開発をしていると,なんだか霧の中を進んでいるような気分にさせられることはないでしょうか。そういったどこに向かっているのかわからない,不安な状況にプロトタイピングはとても効果的です。次章では筆者らがプロトタイプを使った成功/失敗事例をご紹介します。

著者プロフィール

近藤寛喜(こんどう ひろき)

株式会社チェンジビジョン TRICHORD開発チーム
プロジェクトの現在を見える化し,状況を共有することで現場で起きている問題を解決するためのツールTRICHORDを開発しています。またEclipse好きが講じてEclipsePlugin開発勉強会をやっています。

URL http://groups.google.co.jp/group/eclipse-plugin-dev

ご興味のある方はぜひ参加してください。

コメント

コメントの記入

ピックアップ

EC事業者が注目,.shopドメインとドメイン名をとりまく新たな流れ

インターネットの可能性を広げる新たな動きが,ドメイン名をめぐって起こりつつあります。

エンジニア特化型Q&Aサイト「teratail」のトップランカーたちが語る,確実な力を付けるための“質問力”

エンジニア特化型Q&Aサイト「teratail」のトップランカーの方々に集まっていただき,座談会を開催しました。

Webサイトに“安心”をプラス―知らないでは済まされないSSLサーバ証明書の仕組み

いまやユーザといえでも必須の知識となったWeb通信の暗号化と,その信頼性を確保するための「SSL証明書」のしくみについて紹介します。

リクルートライフスタイルの技術力を追え!

ビジネスを拡大し続けるリクルートライフスタイルの技術力を,編集部の徹底取材により紐解きます。

開発スピードに限界を感じたときの処方箋

「JIRA」をはじめとするアトラシアンのツール群。多くのオープンソースソフトウェアを継続して提供する支えとなっている使い易さを探ってみます。

デジタルコンテンツを日本から世界へ―MyCommerceで始める越境EC

自社開発ソフトウェアを海外も含めてオンラインで販売したいというニーズに即したサービス「MyCommerce」を用いて,誰もが手軽に越境ECを実現するためのノウハウを紹介します。

バックナンバー

No12(2009.04)

今回のSoulHackで主に取りあげるのは,梅田望夫の「ウェブ時代をゆく」という本です。

No11(2009.03)

今回のSoulHackで取りあげるのは,阿部謹也の「世間学への招待」と他1冊の本です。

No10(2009.02)

今回のSoulHackで取りあげるのは,山本七平の「空気の研究」という本です。

No9(2009.01)

今回のSoulHackで取りあげるのは,アーノルド・ミンデルの「紛争の心理学」という本です。

No8(2008.12)

今回のSoulHackで取りあげるのは,河合隼雄氏の「カウンセリングを語る」という本です。

No7(2008.11)

特集:2008年度日本OSS貢献者賞受賞者インタビュー

No6(2008.10)

特集:エンジニアの実践的キャリアアップ思考法

No5(2008.09)

特集:事例でわかる,プロジェクトを失敗させない業務分析のコツ

No4(2008.08)

特集:ゼロからはじめるPSP

No3(2008.07)

特集:今こそ使える! プロトタイピング

No2(2008.06)

特集:「開発スタイル」開発法

No1(2008.05)

特集:エンジニアが身につけたい基本スキル 2008

-->