オルタナティブ・ブログ > 森崎修司の「どうやってはかるの?」 >

計測できそうでできない多くのこと。エンピリカル(実証的)アプローチで。

Twitterの「ダークモード」はリリースと開発の分離の幕開けになるか?

»

Velocity 2010の講演"In the Belly of the Whale: Operations at Twitter"で紹介されているTwitterの「Darkmode」。講演のビデオはここから見ることができる。Publickeyの記事から日本語訳を読める。私はPublickeyの記事で知った。

記事と動画によるとTwitterにはDarkmodeと呼ぶ機能があり、Twitterの個々の機能を有効化したり無効化できるそうだ。最近、Tweet数が表示されない(誤った値が表示されるのではなく、そもそも表示されない)ということがあったが、この機能によるものかもしれない(推測なので、真偽はわからない)。

Darkmodeはソフトウェア開発の側面からみても、非常に興味深い。特定機能のリリースをコントロールできることは、開発とリリースを分離することができることを意味する。実現するためにはそれなりの仕組みと開発の手間が必要になるだろうが、特定のクラスタやユーザ等、段階的かつ実験的なリリースが可能になったり、いったんリリースした機能に不備や不具合があれば、元に戻すことができる。

これは、開発とリリースを分離する第一歩と位置づけることができる。分離されていない状況では開発担当者やテストエンジニアがリリースの可否を検討する。開発とリリースを分離できれば、リリースエンジニアと呼ばれる役割のエンジニアが機能の利用状況、負荷、不具合をモニタしながら、リリースの可否を決めることができそうだ。もちろん開発担当者がリリースエンジニアを兼任することもできる。

Darkmodeのような機能は「継続的リリース」のためのツールと呼べるだろう。アジャイルのようなイテレーティブな開発との親和性が高そうだが、必ずしも開発プロセスを限定しない点でも興味深い。継続的リリースはこれまでのソフトウェアのtime to marketの概念を変えてしまう可能性もある。たとえば、「機能Aは既に実現できているが、品質に問題があるためリリースしない」「機能Bは品質に懸念事項が残るもののリリースする」というような判断ができる。

継続的リリースが可能なソフトウェアの条件を列挙するのは簡単ではなさそうだが、少なくとも、次のような条件を満たすソフトウェアではないだろうか。このあたりの条件をどのように捉え、どのように定義していくかがソフトウェアを使った新たなビジネスのはじまりになるのではないかと思う。

  • サービスとして提供される
    (ソフトウェアを配布する場合でも外部から瞬時に入れ替えたり、有効化、無効化できれば可能)
  • 有効化、無効化する機能はミッションクリティカルなものではない。
  • 有効化、無効化する機能に対して、ユーザから直接対価を回収しない。

ご自身のソフトウェア開発では、継続的リリースは可能だろうか。「ウチは組込みだから関係ない」と即断するのはひょっとすると尚早かもしれない。ネットワーク等、外部から機能を実現するプログラムの変更、有効化、無効化ができれば上述は実現できるだろう。あとは、それに見合うような価値がユーザから認められるかどうかではないだろうか。

過去に類似のエントリとして「制約の設計力」というエントリを書いたので、参考にしていただければと思う。

Comment(0)