ユーザ企業がITを活用したサービスビジネスをする場合、ソフトウェア開発を一括発注してもうまくいかないケースが多いです。また、それまで受託開発をしてきたようなベンダー企業がクラウドビジネスに取り組む場合も、苦労が多いようです。それらは「ソフトウェアの品質がいつ決まるのか」という観点から考えると説明できそうです。ITサービスを一括発注で作るのが難しいのには理由があるのです。
これまで、ソフトウェア開発は製造業だと考えられてきました。顧客から発注を受けた機能を、指定された期日に向けて製造を行い、最終的には納品をして検収を受けるという流れです。完成されたソフトウェアを受け取った顧客は、それを使い続けて、いつかは新しいものに置き換えるというサイクルになっています。ユーザ企業は作られたソフトウェアを自分たちの資産として所有するため、完成し受け取る瞬間の品質を重視します。ベンダ企業にとって見れば、それは製造業そのものです。その製造業における品質の考え方は「Point of Sales」つまり「納品時点を最高にもってくる」という考え方です。(図左側)
しかし、ソフトウェアは実際には使われ始めてから、利用者のニーズに応じて対応していかなければいけません。もしそのソフトウェアを使ったビジネスがサービス業であれば、なおさらです。サービス業というのは、無形の経験を提供する業態のことです。消費者はモノを買って自分のモノにする、というのではなく、提供された環境などを利用して便益を享受します。例えば、タクシーは購入するのではなく利用しますし、新幹線や飛行機なども同じでしょう。他に、レストランや映画館などもサービスと言えます。サービス業に共通する品質の考え方は「Point of Use」つまり「使われる瞬間を最高にする」というものです。(図右側)
サービスビジネスでは、利用者はいつでも使い始めることが出来ることが重要です。長距離の移動したいと思ったときに、それから新幹線や飛行機を作るということはありえません。また、利用するという考え方の裏側には、複数の利用者でシェアをするということが含まれています。利用者は自分にとって必要な分だけを利用することで、所有することに比べて安いコストで利用することが出来るのです。そう考えると、ソフトウェアの世界でクラウドと呼ばれている提供形態も、サービス業と言えます。ハードウェアやソフトウェアを購入するのではなく、利用することをクラウドと呼んでいるからです。
「Point of Sales」と「Point of Use」の違いは、ビジネスにおける重要視するポイントに大きく影響を与えます。製造業の場合は、一度の販売のタイミングのために品質は作りこむものですが、タイミングは一度だけなので、そこまでの工程は分業して進めていく方が効率的です。一方、サービス業の場合、常に高い品質を維持するために、工程による分業は非効率になってしまいます。これからサービスビジネスをしようと考えているのであれば、ソフトウェアを一括発注してしまうと、製造業で作られたモノを手に入れることになります。それは仕様変更に弱く、日々の改善を反映していくことは難しくなります。
ユーザ企業がITを活用したサービスビジネスをする場合、そのビジネスで重視する品質は「Point of Use」です。その基幹システムを「Point of Sales」の一括発注で作るといえば、うまくいかないのも納得がいきます。また、受託開発をしてきたベンダー企業はこれまで「Point of Sales」で培ってきたノウハウを活かそうとするので、クラウドで求められる「Point of Use」のサービスが出来なくても理解できます。
アジャイル開発の根底にある考えかたは、動くソフトウェアを作り小さくリリースを繰り返していくことです。その考えかたと「Point of Sales」の相性がよくないのはわかります。ビジネスにおいてソフトウェア開発を製造業と捉えているのであれば、製造業のエンジニアリングを追求することが正しいはずで、ウォーターフォールと分業というのは最も効率的でした。しかし、それで作られたソフトウェアは「Point of Use」のビジネスでは使いものになりません。
資金力のあるIT企業(ITを活用するユーザ企業)の多くが、優秀なプログラマを雇用して、アジャイル開発による内製化をしていこうとしているのは、こうした品質の考えかたの違いに気づき始めたからでしょう。ソフトウェアを外部から購入するのではなく、自社の中で開発することで、エンドユーザへの「Point of Use」を実現しようとしているのです。
では、そのように内製化することができないユーザ企業はどうすれば良いのでしょうか。ITを本業としない企業にとって、プログラマを雇用することは、容易に解雇できない雇用リスクもあるし、優秀なプログラマかどうか判定することも難しい。その課題は「Point of Use」を実現する納品しない受託開発で解決できると考えています。
私は、ソフトウェアの品質は本質的に「Point of Use」なのではないか、と考えています。ソフトウェアなのにハードウェアのように後から直すことが出来ないのはナンセンスだと思っています。クラウドという納品しない提供形態を採用すれば、ソフトウェアはソフトであり続けることができます。SonicGardenでは、クラウドの強みを活かすことで、一括発注/請負をしない「Point of Use」を実現する納品しない受託開発に取り組んでいます。