やはりソフトは発酵するものだと実感した話

最近、ClickableTooltipというちょっとしたツールを開発したのですが、その体験を通して、やはり今のソフトは発酵するものだと実感しました。

このソフトは、ブラウザ上に三つのブックマークサービスのブックマーク数を表示するものですが、これを最初にテスト公開した時には、三つのうちひとつ、はてなブックマークの件数しか実装していませんでした。MM/Memoとdel.ious.usの件数をアクセスするロジックはなくて、"?? users"という形で仮の表示をしていました。

それが、公開して数時間のうちに、コメントで残る二つのブックマークサービスの件数を取得する方法を教えていただきました。del.icio.usについては方法をズバリ教えてもらい、MM/Memoの方は、そのAPIの説明のページを教えてもらいました。どちらも、すぐにこの通りに実装して無事動作しました。

「書きかけのソフトを放置しておいたら、勝手に残りができていた」という感じで、自分で書いたWEB2.0サイト = 発酵食品説が現実であることを実感しました。

この手のソフトでは、必要なAPIを調査することに膨大な時間を取られます。実際、はてなブックマークを実装した時点で、残る二つのサービスのサイトや似たようなソフトの情報も自分でざっと調べてみたのですが、見つけることができませんでした。(いしなおさんの日記は読んでいるのですが、何故か見落してたようです)。

そこで、調査を継続するか、はてなだけ実装した状態で公開するか迷ったのですが、先に反応を見たいという気持ちもあって、そのまま公開してみました。そして、それをブログに書いて、しばらくたって見てみると、まさに私の必要な情報がそこに書いてあったのです。基本的な枠組みはできていたので、方式さえわかれば、残りは完成したも同然です。

実際には、その後、クライアント側のロジックを見直したり、ユニットテストを充実させたりで、かなりの時間がかかりましたが、自分の手を動かさずにひとつのヤマを越えた感覚がありました。これは初めての経験ですごく新鮮でした。単に他人に手伝ってもらったことは、もちろんたくさん経験していますが、「放置しておいた仕事が知らないうちに進んでいた」というのは初めてです。

おおざっぱに言うと、一番困難だったのはテスト公開までの段階ですが、その次の難所は他の二つを組みこむことで、そこを何の努力もなく抜けてしまったように感じています。発酵食品説のアナロジーで言えば、二つ目の工程は外気に晒すことで自動的に進行したようなものです。貴重な情報を提供してくださったしばたさんとACさんをバイ菌にたとえることになって申し訳ないですが、私のブログがそういう菌が繁殖する環境であり、最初のプロトタイプが菌を引きよせたということになるかと思います。

Web2.0時代のソフト開発は、このような「外気にさらす」工程がポイントになると思います。つまり、重要な所は自分の手を離れて発酵させて開発を進めるわけです。その為には、菌が繁殖する環境やエサを用意する工程と、発酵したものを無菌室内で後処理する工程も必要ですが、どちらも、「発酵」がスムーズに進まなければ意味がありません。「発酵」を最適化するように、プロジェクトをコントロールすることが必要なのでしょう。

今回のケースでは、プロトタイプの段階で、できてない所を省略するのではなく、"?? users"という形で枠だけ表示していたのが、「発酵の最適化」と言えるかもしれません。Web2.0以前だったら、プロトタイプを公開するとしても、未実装部分が目立たないようにしていたと思います。欠損部分をごまかしたり隠したりするのでなく、あえて未完成であることを強調するような表示方法を選択したことが、Web2.0的には正解だったような気がします。

もちろんこれはごく小規模な事例です。本格的な開発においては、菌に情報提供だけではなくてコーディングまでしてもらうことになるので、もっと周到な準備をして環境を整えることも必要かもしれませんが、それは、より「発酵」が重要になるということだと思います。

(l1/16 追記)

この記事の「ばい菌」という用語の使い方は、テクニカルタームとして見ると不適切であるというご指摘をいただきました。詳しくは、cavefishさんのコメントを参照してください。

「ばい菌」という言葉単独なら完全に一般用語なので問題ないと考えますが、「発酵」という言葉をアナロジーの重要なポイントとして使っていますので、その組合せで考えると、このご指摘は重要だと思います。cavefishさん、ありがとうございました。