今年 2012 年春の Open Networking Summit (ONS) での Trema の発表ビデオが公開されていました。この発表について、見落しがちですが重要な点について説明したいと思います。
生産性に着目
この発表はぱっと見オーソドックスなチュートリアルですが、そのポイントは最初の部分にあります。発表者の下西さん曰く「Trema の位置付けは、プログラマの生産性を第一に置いたプログラミングフレームワークである」と説明しています。そして、私の知る限りでは Trema だけが唯一この生産性に着目しているのです。
プロダクトポジショニング
こういう位置付けをよくプロダクトポジショニングと呼びますが、ポジショニングにはひとつの鉄則があります:
必ずナンバーワンを取れるようなセグメントを狙う
なぜなら、ナンバーワン以外は人に覚えてもらえないからです。たとえば、マヨネーズ界のナンバーワンは誰もがキューピーだと答えると思いますが、じゃあナンバーツーやナンバースリーはどこか? と言われるとぱっと出てきません。ナンバーワン以外は本当に誰も知らない、つまり認知してもらえないのです。
もしも、あるセグメントでナンバーワンが取れないということが明らかなときは、ナンバーワンを取れるようにセグメントをせばめる必要があります。Eric Sink on the Business of Software という本におもしろい話がありました。
ラジオ放送局はポジショニングというものをとてもよく理解している。(略) どのラジオ局も特定のマーケットでナンバーワンであると主張しているのがわかるだろう。45 歳以上の男性の間でナンバーワンのラジオ局というのがある。別な局は仕事中に聞く秘書の間でナンバーワンだという。また別な局はクラシックロックに関するナンバーワンという具合だ。
Trema のポジショニング
Trema もラジオ局と同じ作戦を取っています。OpenFlow の主な戦場に「性能」「スケーラビリティ」がありますが、ここではすでに Floodlight や NOX、そして Google などが熾烈な争いをしています。もしそこに Trema が入っていっても、大変なわりに勝てる保証はまったくありません。
そこで Trema は主戦場として「生産性」を選びました。意外なことですが、誰もまだそこを狙っていなかったのです (そしてなぜか、今でもそうです)。というわけで、少しがんばっただけで Trema は「生産的な OpenFlow フレームワーク部門」のナンバーワンを取れたのです。
「生産性に重きを置く」というポジショニングを決めたおかげで、正しいデザインチョイスができました。
- C++ や Java ではなく Ruby
- 短く書ける API
- すぐに動かせるためのネットワークエミュレータ
- アジャイル開発のためのテストフレームワーク
このようにポジショニングをきちんと決めておくと、それに合わせてソフトウェアを正しくデザインすることができます。そこに余計な機能が入る余地は無いので、開発工数もぐっと絞ることができます。ポジショニングは大事というお話でした。