未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

ユーザー企業が開発するということ

ウェブ系のサービスを提供しているところは常識なんだけど、世間ではあまり知られていないことは、サービスは基本的には自社で作るということだ。

日本において、ITシステムはユーザー企業が作るのではなく、それを専業にしているベンダーが作る事が多い。SI (System Integrater)と呼ばれる企業だ。ハードウェアベンダーのSI部隊であったり、独立系と呼ばれるベンダーだったりする。統計では受注ソフトウェアの売上になる。 *1

わたしはSI企業にいた経験がないので、本当の実態を知る立場にはないけど、想像するに、大手ベンダーが受注したシステム開発の案件を、誰かが要求定義して、それを文書にして、その文書をもとに誰かが設計して、その設計書をもとに、誰かが実装をする。テスト仕様書を誰かが作って、誰かがテストをする。発注側とシステムを受注する企業が別の場合は、何をいくらでいつまでに作るかというのを契約で文書化(別紙)せざるおえないので、何かと文書が増えるということは想像に難くない。

ウォーターフォール開発が行われるのは、この受注発注型ソフトウェア開発に適しているからなのではないかと想像する。

自社で開発するとすると、発注側と受注側というのが、事業部と開発部と言うくくりはあるものの、同じ組織なので、いいシステムを作れば、会社が儲かって、みんなの利益になるという意味で利害関係は一致する。何を作るかという問題についても、文書化して契約に落とし込むという作業は必要ないので、開発スピードも向上する。もちろん、双方でプロジェクトのゴールの共有とか、どのような機能を作り込むかという合意はなんらかの方法でとる必要はあるが、契約文書に比べれば遥かに軽いカジュアルなものになる。

SIは納品すれば終わりである。検収を受けて発注側の確認が取れれば終わる。

自社開発のサービスの場合は終わりはない。運用している限り、変更される。ビジネス環境の変化に応じてサービスを日夜改良する。その日夜の改良はもちろん自前でする。そのような作業を外注するということは、スピード的にもコスト的にも見合わないので、通常は行われない。

一方外注して作られたシステムの運用や変更は、同じ会社が受注したとしても別の契約になる。環境の変化に追従するために、要件を定義して、設計して、実装して、テストして、検収を受けてということを、数ヶ月単位でやるので、スピード的も遅いし、コスト的にも高いものになる。

極論するとそーゆーような図式になる。

じゃあ、ユーザー企業が自社開発すればいいじゃないかというと、ベンダーに丸投げしていたユーザー企業のIT部門には、コードを書ける人がいなかったりして、簡単にはいかない。自業自得のような気がしないでもないけど、それが実情だったりする。

昔は、ハードウェアベンダーがITの動向のイニシアチブをとっていたので、ベンダー抜きにシステム設計をするということは難しかったけど、インターネットの時代には、ハードウェアやインフラの調達はクラウドでいけるし、自前で開発できる環境は整ってきている。

システム開発というのが特殊な時代は、自社にシステム部門を丸抱えするのは、コスト的にも人材利用の観点からも経済合理性がなかった。銀行などの大手ユーザー企業は自社のシステム部門を切り離し情報サービス子会社にしたという歴史的な経緯がある。

クラウドの時代になってシステム開発は少人数で素早くできるので、このSIというビジネスそのものが、難しくなるのではないかと、余計なお世話だけど思う。

サービスを自社開発する事が競争力の源泉になるというビジネスモデルである。ウェブの業界では当たり前なんだけど、他の業界ではあまり当たり前ではないようなのであえて記してみた。