ダメ出し駆動開発

何かモノを作るとき、ゼロから作るのは大変です。特にぼくはPCでエディタとwebブラウザとあと各種コンパイラ/ランタイムくらいあれば満足するくらいなので、アプリケーションに疎いところがあります。なので全く今は存在しないけれども、あったら良いような何かを思いつくのは難しいですし、ぼくが使いやすいと思うようなモノは多くの人にとっては使いやすくは無いと思います。

ぼくのわずかな経験によると、コンシューマ向けのアプリは、ドキュメントを読まなくても自然と使えるものが良しとされます。キーボードによるインプットよりもマウスを使った操作が好まれるようにも思います。このような選択は、不特定多数の人に使ってもらうためには必要だと思いますが、それは誰にとっても最適なものではありません。

そこでぼくを含むどんな凡人にも「ダメ出し」ができるわけです。ここが駄目だとか、ここをもっとこうすると良くなるだとか、いくらでも言えます。これをネタに自作アプリを作る行為を「ダメ出し駆動開発」とぼくは、たった今名づけました。

ぼくが今作っているwiki2htmlもダメ出し駆動開発で、多くのwikiエンジンの仕様としてwiki記法のパターンにマッチしない場合、エラーをほとんど出さずに入力された文字列をそのまま出力するというものがあります。しかし、ぼくはこれが嫌です。それでぼくはエラーを複数見つけて報告するような仕様のwiki記法parserを書きました。

作った後で気付きましたが、慣れればほとんどwiki記法ほど直感的な記法で入力ミスすることはありませんでした。ぼくが最初にしたダメ出し自体、ナンセンスなものだったかもしれません。でも、それは驚くことでもなんでもありません。元々使ってて、ちょっとここが気に入らないなという程度のことで作り始めたのですから。反対にWikiのこの仕様は、ワードカニンガムがおそらく注意深く見出した11のWiki設計原則の1つ「寛容性の原理」に由来するものです。

ダメ出し駆動開発の良いところは、短期的には非常に高いモチベーションで開発できることです。あとは、もしかしたら、自分に最適なアプリが手に入るかもしれません。

最後にダメ出しできるアプリを作るのはとても難しいことだと思っています。ぼくがどれだけ無能かは知りませんが、他人様がダメ出しできるほどのアプリは作れたためしがありません。ダメ出しできるうちは、それはダメなところを言葉で表現できるほどにイケてるアプリに近いか、万人に使われるために、仕方なくダメ出しされるような仕様に落ち着いているということだと思います。