ひがやすを技術ブログ

電通国際情報サービスのプログラマ

フレームワークの進化的開発

フレームワークは、多くのユーザのニーズに応えられるようにするために、汎用的で、最初から多くの機能が盛り込まれるというのが一般的ではないかと思います。
でも、本当にそうかなぁと私は思います。例えば、私がフレームワークを作るとします。多くのユーザのニーズを初めから把握できるでしょうか。たぶん、できないでしょう。ユーザのニーズを想像して機能を盛り込んでも実際に使われるかどうかは分かりません。それなら、ニーズを確実に把握できない機能は盛り込まないほうが良いでしょう。
ただ、このような考えはフレームワークに限っては落とし穴があります。機能の足りないフレームワークは誰にも使われない可能性があり、フィードバックがないかもしれないのです。
結局事前にどこまで機能を盛り込むかというのは、非常に難しい決断になります。そんなときに、私が使う方法は、「ユーザに使ってみたいと思わせるキラーな機能」は、事前に盛り込み、それ以外のニーズが確実に把握できない機能は、後回しにしてユーザのフィードバックを待つというものです。
実際にそうやって開発したのが、S2Daoです。2Way SQLと設定ファイルいらずというキラーな機能を最初に盛り込み、残りはユーザのフィードバックを待ちました。S2Daoは、今なお機能的に足りないところはあるのですが、実装されている部分はよりよくユーザのニーズが反映されているのではないかと思います。
進化的開発でもう1つ迷うのが、リリースのタイミングです。ある機能はユーザのニーズは把握しているけど、実装には少し時間がかかる、リリースを遅らせて実装するのか、今できている分でリリースしてしまうのかという問題です。
私は、仮に未完成の部分が残っていても、できている分を先にリリースしてしまったほうが良いと考えています。なぜなら、ユーザによっては今できている部分で困らないかもしれないからです。あるいは、既に修正済のバグフィックスを心待ちにしているかもしれない。ユーザへのフィードバックはできるだけ早いほうが良いと考えています。私の関連するプロダクトで、リリースのタイミングが早いのは、そういう理由です。
バージョンアップについていけないと思うユーザがいるのも知っています。ただ、細かいバージョンアップで恩恵を受けるユーザがいるなら、できるだけ早く新しいバージョンを提供してあげたいと思っています。