アジャイルなフレームワーク開発

継続的リリースは、さらなるアジャイルさを与えてくれるか?

早く頻繁なリリースにはメリットもデメリットもあります。
メリットは

  • ユーザが素早いフィードバックを得られる。
  • 開発者が素早いフィードバックを得られる。
  • 開発のサイクルが早くなり、より市場にあった機能が提供できる。

デメリットは

  • リリース回数が増えるとそれだけ開発者(リリース作業を行なう人)の負荷が大きくなる。
  • リリース回数が多いと不安に思う人がいる。

私は、もちろん、早く頻繁なリリースは必要だと思う派です。
私の根本には常にXPの教えがあります。

  • 開発者のモチベーションが最も重要。
  • 先のことは無理に予想せずに見えている範囲で作業を進める。(YAGNI)
  • 状況に応じて臨機応変に対応する。
  • 素早くユーザにフィードバックする。
  • テストをすることでコードからフィードバックを得る。

この辺が、私が、いつも心がけていることです。実際のプラクティスがどうのというより、スピリッツを理解していればいいと思っています。
私がかかわった幾つかのフレームワークの開発にとって、もっとチャレンジングだったのは、YAGNIの考えだと思います。
一般的にフレームワークは、「みんながこんなことを必要とするだろう」という予測をもとに作られるものだからです。
まったく予測ゼロでは、フレームワークは作れないので、「自分の経験上、最低これくらいは必要だよね」というミニマムレベルで、フレームワークを公開し、後は素早いフィードバックにもとづいて開発していくのです。
その典型的な例が、S2Daoでしょうね。バージョンが47まであがるなんて、そうはないことです。「最初に良く考えていないからむやみにバージョンが上がったんだろう」という人もいました。「最初から良く考えても正解はわからないから必要最小限で実装し、わかってくるにつれて実装範囲を広げていった」というのが、実際のところですね。
後1つ、いっておきたいことがあります。「軸がぶれない」って重要なことだと思うでしょ。でもね。危険なことでもあるんです。予想できない未来に対する方針を決めて、それを変えないって意味だから。
ある時点で、未来を予想し方針を立てたとします。もちろんその方針を立てた根拠はあるはずです。それから時間が過ぎたある時点で、根拠が間違っていると思ったら、素直に間違いを認めて、方針を変えたほうがいい。
根拠も無しに方針を変えるのは、失敗する典型だと思いますが、状況の変化に対応して、方針を変えるのは間違ったことではないと思っています。
私はマーケットを良く観察し、必要だと思ったら方針を変えます。それが、現場の人のためになると信じているからです。