「システム開発」と一口に言っても、業務用基幹システムもあれば、toCのアプリもありゲームもあり、あるいはWEBページにしてもいくつものシステムと連携しながら動的に生成するものもあれば、ペライチで1枚だけ作られるLP制作なども、「システム開発」のギリギリ範囲内かもしれません。
規模も内容もかなり多様とはいえ、この「システム開発」というものをこなすには、どうすればいいのか。
大きく分けて、「内製」と「外注」という2つの考え方があります。
目次
システム開発の内製とは
これはつまり、システム開発をしたくなった場合、自社のリソースでその全てをまかなう、という事です。
大抵の場合「システム部」というものを持ち、システムエンジニア(SE、ITエンジニア)を自社の社員として雇います。
より広義に取れば、連結したグループ会社で開発するもの、SES(システムエンジニアリングサービス)で提供されるシステムエンジニアのリソースを使うことも、内製の一種と言えます。
自社のプロダクトがシステム開発によって作られるものの場合、つまり例えばゲームを販売するのがメインの会社の場合は、ほとんどの場合において内製である、そもそもに開発会社であるという事が少なくないでしょう。
しかしそうではない会社の場合、内製で全てのシステムが賄われることは稀であり、開発会社でさえも外注を使う事もあります。
かつては「IT」というものが今ほど当たり前の存在ではなく、PCを業務で使わない事さえあり得ましたから、社内に一切のシステムエンジニアがいない、という事もありました。システム開発の必要性は一般的にそうありませんでしたが、それでも必要な場合はごく限られた企業への外注が当たり前でした。
ところが現在において、会社の業務でPCを使わないことは、ほとんど不可能です。
したがって最低でも「情報システム部」略して情シスと呼ばれるような、PCのキッティング(セットアップすること)から社内インフラの整備(LANなど)までの最低限を担う部署は、どの会社でも一般的になりました。
しかしいわゆる情シスは、システム開発を担うわけではありません。
全く何も知らない人から見れば「パソコンに詳しい人」と一緒くたに見えるかもしれませんが、現代ではその「パソコンに詳しい人」も、得意なものそうでないものと、かなり大きく分かれています。
ですから、システム開発を自社内でやるためには、その作りたい物に応じた技術を持ったシステムエンジニアを抱えないとならないのです。
システム開発の外注とは
システム開発を外注するのは、これはもう読んで字のごとく、システム開発を請け負う開発会社に注文することです。
それを専門に行っているプロに任せるわけですから、餅は餅屋、ある意味ではとても安心できる形と言えます。
ただし、外注の場合、社内にはシステム開発を分かる人が全くいなくてもよいと思われる事もありますが、そんなことはありません。
どれほど相見積を取ったところで、内容の詳細を理解できなければ、結局基準になるのが「安さ」だけであり、そしてシステム開発で「安さ」を謳い文句にする開発会社は、だいたい後でなんらかのトラブルとなり、結果的には高くついたりします。
昨今では「オフショア開発」という、海外の開発会社に依頼するようなものもあります。
かつては中国やインド、現在ではベトナムやフィリピンあたりが使われますが、為替レートの都合でとても安くなる反面、もちろん言葉は直接には通じませんし、ブリッジエンジニアと呼ばれる通訳も兼ねる位置の人も完璧な日本語ではなかったり、そもそもの文化的な価値観が違ったりと、なかなか難しい面もあるようです(裏を返せば、上手くやればとても良い開発方法にもなりえますが)。
システム開発を内製することのメリット
内製のメリットを一口で言ってしまえば、「自社で全てをコントロールできる」という事に尽きます。
あくまでも自社の都合だけで動かす事ができますし、体制も自社に最もあった体制を作ることが出来ますので、効果を最大化する事ができます。
開発において今どうなっているのか、何が起きているのかといった事も、細部までチェックする事が可能です。
ただし、チェックするには相応の技術的知識が必要ですから、ここがあまりにも無いと、同じ社内の一部門にも関わらずまるで別の会社かのように意思疎通ができない、という状況も、よく見かけるものではあります。
とはいえ逆に言えば、コントロールする人がしっかりいれば、隠蔽されてしまうような事も無いのです。
費用が外注よりは安くつく、というのもメリットです。
全く同じ条件であれば、外注で開発会社が取るマージン分が無くなりますので、より安いコストで開発する事ができます。
システム開発を内製することのデメリット
システム開発を内製することの最大のデメリットは、単価の高いシステムエンジニアを自社に囲い込んでしまうこと、です。
そのシステムエンジニアの持つ能力をフルに使い続けられれば、それで問題はありません。
しかし、今ある計画のプログラムが出来てしまったら?その後に、ずっと余ることなく使い続ける事ができますか?
もし余らせてしまえば、それは即座に「無駄コスト」として響いてきます。単価的にも、他の作業をなんでもやらせればいいわけでもありませんので、この「稼働をいかに安定させるか」が、間違いなく最大の課題になります。
そのため巨大企業の場合は、内製でありながらもシステム開発部門をそのまま子会社にしてしまう事により、自社の仕事が無いタイミングでは外の仕事を請ける事によって、空きが生まれないようにします。
このような子会社にシステム開発会社を持つことは、とても理にかなったようでいて・・・外の仕事を請けているタイミングでは自社の仕事をする余裕が無いなど、結局は「使いやすい外注」という位置付けになってしまい、内製のデメリットを消せば消すほど、メリットも消え、外注に近づいていってしまうだけになります。
また、内製する場合のデメリットとして他には「そもそもシステムエンジニアを揃えることが難しい」というのもあります。
特定の技術を持ったシステムエンジニアを上手く採用できるとは限りませんし、ひょっとしたら辞めていってしまうかもしれません。
きちんと採用し、それを維持していかなければいけないその労力もまた、システム開発を内製することのデメリットになりえます。
しかも採用するとなれば、より深いエンジニアリングの知識が求められますので、それを引っ張っていくテックリーダーの存在は欠かせません。
システム開発を外注することのメリット
外注のメリットは内製のデメリットの真逆、自社でリソースを抱え込まなくて済むこと、これが最も大きいものです。
なにかしら作りたいシステム開発がある場合、それを作り終わればそれで終わりです。
終わった後に残ったリソースをどうするか考える必要はありません。
リソースをどのように配分するかは全く気にせず、あくまでも「どんなものを作りたいか」にだけ専念し、「どう作るか」という部分は、外部に丸投げで良いのです。
責任が伴わない、という事も外注のメリットです。
もし中核メンバーがプロジェクト進行中に離脱するなど、なんらかのトラブルが発生した際、内製では自社でその全てを負わねばなりません。
出来上がったシステムになんらかの不具合があった場合なども同様です。
しかし外注の場合、そういったものは基本的には開発会社の責任です。
「瑕疵担保責任」というものがありますので、開発会社にはきちんとしたものを納品する義務があり、その責任は開発会社に帰するのです。
システム開発を外注することのデメリット
では外注する際のデメリットは何かといえば、まず1つは高くなること、です。
開発会社にはリスクを負う面もありますし、内製に比べれば高くなります。
既に述べた通り安さで選ぶのは危険ですから、ある程度の平均的な金額になることは避けられないでしょう。
そしてそれ以上にデメリットになりうるのが「プロジェクトを主体的にコントロールできない」という事です。
契約内容にもよりますが、いま現在何がどう進行しているのか、請負企業はそこまで詳細に明かすとは限りません。
本当はプロジェクトが困難に直面しているのに開発会社から知らされず、納期間際になってから「間に合いません」などと言われる事もありえます。
もちろんそれによる損害は多少なり開発会社に負担してもらうとはいえ、全てを負担してもらえるかといえば、そうとも限りません。契約内容によっては上限が契約金額までだったりもしますので、それより大損をしてしまう、という事も珍しくはありません。
そもそもに発注時点で相手がどのくらい信用できるかどうか、初めての取引ではまず分かりません。システム開発となれば大抵はそれほど安くない規模ですが、その金額を闇雲に投げるようなギャンブルは、できればしたくないものです。
しかしシステム開発の場は、とにかくもめる、順風満帆に終わることのほうが珍しく、外部の会社とそのようなトラブルになれば、最後は法的に争う、などといった事にもなりえます。
システム開発の内製と外注、結局どちらが良いのか
この結論を端的に申し上げてしまえば「規模による」のは間違いありません。
ごく小規模あるいは短期間である場合、外注のほうが良いと言えます。そのためだけに内製するだけの体制を作るのは、ロスのほうが大きくなる可能性が高いからです。
しかし継続してずっと大規模な開発が発生する場合、それを外注すればみすみす利益を他社に与えるわけですから、相応の規模の開発部門を立ち上げたほうがよい、内製のほうが良いと言えます。
とはいえ現実には、規模も含めて状況は刻一刻と変わりますので、仮にあるタイミングでどちらかが正解だったとしても、ずっとそうとは限らないのです。
SESという「外部を使った内製」の可能性
内製のデメリットは、システムエンジニアを抱え込んでしまった場合のその後の稼働の問題であり、そもそもの調達の問題でした。
実はこれは、SESという外部のシステムエンジニアを使って内製すれば、解決します。
そもそもに抱え込んでいるわけではありませんので、その後の稼働の問題はありません。プロジェクトが終われば、そこでリリースされます。
調達にしても、数多あるSES企業から調達する事を考えれば、その時その時にあわせて最も適したシステムエンジニアをアサインする事ができます。
プロジェクトごとに技術領域が違ったとしても、それにあわせてチーム編成も自由自在なので、まさに最も柔軟なシステム開発の構図と言えます。
これが、システム開発においてSIerが強い理由であり、実は「外注」として発注したシステム開発の仕事も、受託企業においてはその下にいるSES企業から来たエンジニアでチームが作られていたりするのです。
であれば当然、自社においてSESを利用したチームが作れれば、そのまま「内製」という形になるわけです。
システム開発を内製した事のない会社にとっては、「そうは言っても、じゃぁそのチームを作る手配をどうすればいいのか」というお悩みはあることでしょう。
往々にしてこの部分は「ITコンサルタント」と称した人が受け持っていたりします。
でも、ITコンサルは単価も高く、それ自体が大きなコストになったりもするわけです。だったらいっそ、その部分もSESサービスに任せてみる、という手段もあります。
SESで全てを済ませてみる
とある会社が、システム開発をしたくなりました。しかし、自社にはそんな人材がいません。
ではまずは、そのプロジェクトのいわゆる上流部分、どういったものを作りたくて、そのためにはどういった技術が必要なのか、根本的なところを決める人、PMやPMOといった人材を、SESで調達します。
自社に来たPM(PMO)は、自社の中で活動し、チームを発足させるために必要なものを仕上げていきます。ここは、ITコンサルタントを雇った状況とほとんど同じですね。ただしITコンサルタントは有象無象が多いのですが、SESにおけるPMという人の多くはその道のプロの中のプロであり、怪しいコンサルタントよりは遥かに頼りになる地に足のついた人たちです。
PMがチーム発足までに必要なものをまとめたら、今度は順次システムエンジニアをSESで調達していきます。
こうしてチームが作られればもうそのまま強力な内製チームとして動いていきますし、同じようにすれば違うプロジェクトも出来、自社に誰かを雇い入れる時の参考意見も聞けます。
そして必要が無くなればそのまま解散していきますので、無駄なコストと化してしまう事もありません。
タイミングと企業によりますが、こういった立ち上げの部分を全てまとめて提案する、いわばチーム提案でまとめてこなしてくれる強力なリソースを持ったSES企業も少なくはありません。
そういった有力なSES企業をどこで知って引っ張ってこれるか、という問題はあれど、ひとたび関係性を築いてしまえば「ITのことを相談できる相手」として、内製と外注の間を埋める存在として、SES企業は助けてくれるのです。
内製と外注の良いところ取りをしたような「SES利用による内製」を、是非検討してみてください!
運営より
WhiteBoxは、2020年8月時点で400社超のSES企業様が登録されている、マッチングプラットフォームです。
どんな会社様であっても、こちらからシステムエンジニアの調達を行う事が可能です。
まずはお気軽に、お問い合わせよりご相談ください!!
(※編集部注:本コラムは執筆者の個人の考えによるものです。当サイト・運営会社の見解ではありませんので、予めご了承ください。)
▼編集部便り