システム開発における工数(人月)と単価で知っておくべきこと

未分類

システム・アプリ開発で開発費用の見積もりを出すときに、工数や人月という一見してどういう意味か分からりづい言葉が出てきます。特に人月は人数を表すようにも期間を表すようにも見えます。

工数や人月はシステム開発で費用の見積もりを作成するさいに使われる用語です。どのような意味があるか知ることで費用の見積もりを確認するさいに注意する点も見えてきます。

これから、工数や人月ついての意味や注意点を解説していきます。

工数(人月)とは開発時の作業量を表す単位

工数とは作業量を意味します。作業を行う人数と作業を行う時間を掛け合わせた値が作業量となります。

  • 工数 = 人数 × 時間

人数に対してかける時間は時、日、月などの単位があります。工数の単位は以下のようにかける時間の単位がそのまま使用されます。

  • 1人時(にんじ) = 1人 × 1時間
  • 1人日(にんにち) = 1人 × 1日
  • 1人月(にんげつ) = 1人 × 1ヶ月

2人月といった場合、それは1人で2ヶ月間かかる作業量、もしくは2人で1ヶ月かかる作業量という可能性があります。

  • 2人月 = 1人 × 2ヶ月
  • 2人月 = 2人 × 1ヶ月

これは1人では2ヶ月かかる作業量があるとして、それを倍の人数で行えば半分の期間で終えられるだろうということを表現しています。

一般的には1日は8時間、1ヶ月は20日として計算しています。

  • 1人× 8時間 = 8人時 = 1人日
  • 1人× 20日(8時間×20) = 20人日 = 1人月

注意する点として1ヶ月を30日で表す場合もあるということです。1ヶ月を20日とする場合と30日とする場合では、同じ1人月と表現しても業量は以下のように異なります。

  • 1ヶ月 = 20日とする場合 : 1人月 = 20人日
  • 1ヶ月 = 30日とする場合 : 1人月 = 30人日

システム開発の初期にどのくらいの作業量が発生するかを工数見積もりとして出します。システム開発は数ヶ月はかかるものなので、一般的に工数見積もりでは人月という単位が使用されます。

開発費用の内訳の大部分は人件費

工数見積もりの結果を用いてシステム開発の費用見積もりが算出されます。システム開発の費用の内訳はおおまかに固定費用と人件費で構成されています。

図1. システム開発費用の内訳

固定費用は、システムを構築するさいに必須となる費用があてはまります。システムを構築するサーバーやネットワーク機器などの費用、システム上にいれるOSのライセンス料などになります。

これらの費用は必要な機器やソフトウェアを購入するのに必要な費用だけが発注者に請求されます。開発者の利益を上乗せされることはないため、一度決まれば基本的に変動しません。

一方、人件費はシステム開発の費用の大部分を占めるものであり、様々な要員で変動するものです。

システム開発は1人のエンジニアで作成できるものではありません。必ず複数人のエンジニアが協力して開発していくことになります。

この開発に関わるエンジニアに支払う費用が人件費であり、開発会社はこの費用から利益を出していくことになります。

複数の開発会社の見積もりを比較するさい、固定費用は妥当かどうか判断する基準が比較的明確です。サーバーの費用なら、必要以上の性能の機器を選んで費用が高くなっていないか確認すればいいとわかります。

一方、人件費は開発会社によって費用に差が出やすく、その要因も分かりにくいものになっています。複数の開発会社の費用見積もりを比較して選ぶさいの判断基準は明確ではありません。

人件費がどのような要素で決まるかを知ることで、見積もりを元に開発会社を選ぶさいの判断材料になります。

人件費は工数(人月)と単価で決まる

人件費は以下の計算で決まります。

  • 人件費 = 工数 × 単価

工数の単位が人月の場合、単価とは1人のエンジニアに1ヶ月間作業を依頼するさいにかかる費用を意味します。

単価はエンジニアの職種や技能によって変わります。責任が大きい役割を持つエンジニアや需要の高いことができるエンジニアほど単価は高くなります。

設計書を元にプログラムを作成するプログラマーよりも、設計書を作成するシステムエンジニアの方が単価は高くなる傾向があります。設計書を作成する方がより責任の重い業務だからです。

同じプログラマーという職種でも扱えるプログラミング言語が多かったり、需要の高いプログラミング言語を扱えたりする方が単価が高くなります。

一方、工数も開発会社ごとに変わります。複数の開発会社に見積もりを依頼した場合、開発会社はシステム開発に必要な作業量を予想します。この作業量を予想するさいに開発会社ごとに違いが出てきます。

発注者が欲しいシステムの要望を伝えた段階で、正確な作業量を見積もるのはとても難しいことです。作業量は様々な見積もり手法を用いて予想することになります。

どのような手法を使うかは開発会社によって違います。使う手法が違えば算出される作業量も当然変わるため、開発会社ごとに工数の見積もりに差が出てきます。

このように単価と工数のそれぞれが開発会社によって異なる値になるため、人件費は開発会社によって全く違う値になるということが良くあります。

工数見積もりが少ない場合に注意すべき点

複数の開発会社に工数の見積もりを依頼した場合、開発会社によって工数に差がでます。単価が同じ場合、工数が少ない方が費用は安くなります。

工数が少ないほど費用が安くなるのでそちらを選びたくなりますが、注意が必要です。工数見積もりが少なくなるのは様々な理由があります。その理由によってはシステム開発が失敗する危険があります。

工数見積もりが少なくなる理由のうち、注意すべきものを解説していきます。

ベテランと新人のどちらか

工数(人月)は人数×時間です。同じ作業を同じ人数で行う場合、作業速度が早いとその分だけ工数(人月)が少なくなります。

人月という数え方は対象とするエンジニアの作業速度は均等なものであるとみなします。しかし、実際はエンジニアごとに作業速度は違います。

新人のエンジニアよりもベテランのエンジニアの方が、開発業務に慣れていて作業速度は速くなると考えられます。作業中に何か問題に直面した場合も、経験の多いベテランの方が速く解決して次の作業へと移ることができます。

企業に所属するエンジニアが経験豊富なベテランだった場合、作業速度は速くなると予想する分、工数も少なくなります。

逆にエンジニアが対象の開発業務を経験したことない新人だった場合、業務を理解するための時間も考慮して工数を多めに見積もります。

同じ開発業務に対して見積もった工数に差が出ている場合は、担当予定のエンジニアの熟練度や今までの開発経験を確認しておきましょう。担当エンジニアが特に経験豊富というわけでもないのに工数が少なくなっている場合は、正しく見積もれていない可能性があるためです。

開発に必要な工数を正しく見積もれているのか

工数を正確に見積もるためには、開発でどのような作業をするか正確に把握している必要があります。

複数の開発会社に見積もりを依頼する段階では、まだシステムの要件が決まっていないことが多いでしょう。開発者は発注者の要望を聞いて、どのような開発作業が必要になるか予想します。開発作業を予想する手法には様々な方法があります。

過去に請け負った似たような開発の経験を元にどのくらいの作業量になるか予想する方法や、必要になりそうな機能の数から作業量を予想する方法などがあります。

対象の開発内容に対する知識や経験があるほど、より正確に作業量を予想することができます。逆に対象の開発分野の開発経験がほとんどない場合、どのような作業が必要か把握できていない可能性が高くなります。

工数を正しく見積もれているか判断するためには、開発作業をどの程度予想できているのか確認する必要があります。どのような作業が必要か、その作業にどのくらい時間がかかると判断したのかなど聞いてみましょう。

過去の開発実績も確認してみて、依頼するシステムとは全く異なる開発経験しかないようなら注意しましょう。正確に開発作業を予想できていない可能性があります。

直接開発する以外の工数を見積もりに入れているか

システム開発では開発作業以外に以下のような作業も発生します。

  • 業務の現状を把握するために調査・分析作業
  • 作業の進み具合を管理する進捗管理作業
  • 成果物の品質を管理する品質管理作業

これらの開発以外の作業が工数見積もりに含まれていないと、見積もった期間内に開発が終わらなかったり、終わったとしても品質が低いシステムになる可能性があります。

品質を維持するために、見積もりになかった調査・分析作業や管理作業をしていれば、見積もった作業期間以上に開発に時間がかかることになります。

システムの品質低下や納期遅れを防ぐためにも、工数見積もりに調査・分析作業や管理作業がどのくらいの割合で入っているかを確認しましょう。

能力が高いから単価が高いとは限らない

エンジニアの単価はシステム開発の人件費を算出する要素の一つです。工数と同様に単価の値も開発会社ごとに異なる傾向にあります。

単価が高ければそのエンジニアの能力が高いと思うかもしれません。確かに能力の高さは単価に影響しますが、それ以外にも様々な要素が単価の値に影響します。

単価が高くなる要素について知らずに、システムの品質を良くするためには単価の高いエンジニアに依頼すればよいと考えてはいけません。

依頼するエンジニアの単価について判断する基準として、単価に影響を与える要素を説明していきます。

役職や技能が高いと単価は高くなる

エンジニアの単価はそのエンジニアに支払う報酬額を決めます。単価から会社の利益や必要経費を抜いたものがそのエンジニアの給料になります。

有用なエンジニアを雇うためには相応の給料を支払わなければなりません。そのため、基本的に有用なエンジニアの単価は高くなります。有用かどうかはエンジニアの役職や技能から判断できます。

エンジニアの単価について、責任が大きい役割だったり需要の高いことができたりするエンジニアほど高くなることはすでに述べたと思います。これらはエンジニアの役職からも判断できます。

設計書に従って実際にプログラムを構築するプログラマーよりも、その設計書を作成するシステムエンジニアの役職の方が上になる傾向が多いです。指示通りに作業する一般社員よりも、指示を出す管理職の方が役職は高くなります。

エンジニアの持っている技能は、そのエンジニアが担当できる開発の難易度や規模に影響します。難易度の高い開発をこなすことのできるエンジニアの方が、簡単な開発しかできないエンジニアよりも技能は高いと判断できます。

これらの役職や技能の高いエンジニアほど価値は高くなります。価値の高いエンジニアに相応の報酬を支払う必要があるため、そのようなエンジニアの単価は高くなるのが一般的です。

エンジニアの単価が高い場合、そのエンジニアはシステムの設計や案件の管理などの難易度の高いことができるエンジニアである可能性があります。

企業規模が大きいと単価は高くなる

エンジニアの単価は所属する企業の規模が大きいほど高くなりやすい傾向があります。企業規模が大きくなるとエンジニアにかかる費用が増えてくるからです。

企業規模が大きいほど福利厚生や施設が充実していることが多くなります。それらを維持するための費用を利益から出す必要があります。利益を上げる方法の一つが単価を高くすることです。

また、企業規模が大きいとエンジニアの教育に力を入れるようになります。研修を充実させたり、今までの開発のノウハウを蓄積して共有したりすることでエンジニアの能力を底上げします。エンジニアの能力が高くなれば単価も高くなります。

システム開発をするさい、一つの企業だけで進めるのではなく複数の企業のエンジニアがチームを組んで取り組むことはよくあります。その場合、規模が大きい企業が発注者から依頼を受けて、他の中規模の会社に作業を割り振ることになります。

大企業が依頼を受けて中小企業に作業を割り振る場合、発注者が支払う報酬は中小企業のエンジニアに対する報酬に加えて大企業の仲介料が上乗せされます。そのため、大企業に依頼した場合、中小企業に依頼するよりも単価が高くなります。

図2. 大企業のエンジニア単価に上乗せされる費用

これらの理由で大企業に開発を依頼すると単価が高くなる傾向があります。

大規模なシステム開発をする場合は実績を多く積んでいる大企業に依頼するのも手です。しかし、規模が大きくないシステム開発の場合は、技能が同じでも単価は安くなりやすい中小企業に依頼することも検討しましょう。

都心より地方の企業の方が単価は安くなる

都心よりも地方に本社がある企業の方が所属するエンジニアの単価が安くなる傾向があります。

都心の方が地方よりも地価が高いため、都心に建物を持つ企業の方が払わなければいけない家賃が高くなります。その費用の分だけ利益を出さなければならないため、エンジニア一人当たりで稼がなければならない額も大きくなります。

また、都心の物価は地方よりも高くなります。企業の経営に必要な備品の購入は物価に比例して高くなります。都心の企業は物価の差により高くなる様々な費用の分も利益を出す必要があります。

雇われるエンジニアについても都心と地方で違いがあります。地方は都心と比べて最低賃金が低くなっています。先に述べた通り地方は地価や物価が安くなるので最低賃金が低くても生活が成り立ちます。最低賃金が低いということは、エンジニアに支払う報酬に影響する単価も安くできます。

これまで述べた地価や物価の違いはエンジニアの能力には影響しません。しかし、経営に必要な利益を出すためにエンジニアの単価をその分高くする必要があります。同じ能力のエンジニアであっても地価や物価の分だけ都心のエンジニアの方が単価は高くなってくるのです。

システム開発会社は地方よりも都心の方が断然多いので、都心の会社にシステム開発を依頼する場合が多いでしょう。ただ、地方に居を構える企業の場合、都心のシステム開発会社に依頼すると連携が取りづらくなります。

連携しやすさも考慮すると地方のシステム開発会社に依頼するのも一つの手です。そのさい、都心のエンジニアよりも地方のエンジニアの単価が安い点が懸念になるかもしれません。

しかし、都心と地方の地価や物価の違いというエンジニアの能力とは別の要因で単価が安くなっているだけということもあります。安いから能力が低いのではと安易に判断しないようにしましょう。

人数を増やせば開発が早くなるわけではない

工数の単位である人月について説明してきましたが、人月を扱う上で注意すべき点があります。

人月は作業量というものを数字として表すものです。しかし、実際の案件では人月という数字だけで判断してはいけない点があります。

例えば、1人のエンジニアが5か月かけて行う作業は5人月です。数字的には5人で1ヶ月の作業をする場合も5人月となります。では前者の1人で行う5人月の作業を5人で行えば1ヶ月で終わるのでしょうか。

実際はそのような単純な話にはなりません。同じ作業を5ヶ月もするわけではなく、その内訳は現状の調査・分析に1ヶ月、設計に1ヶ月、開発に2ヶ月、テスト・修正に1ヶ月と見積もっているかもしれません。

その場合、調査・分析が終わらなければ終わらなければ設計を始めることはできません。以下の図のように5人で各工程を同時並行で進めるということはできないのです。

図3. 人数と期間の入れ替え例

このような実情を考えずに納期に余裕がないからといって人数を増やして期間を短くしようとしてはいけません。

人数を増やしても期間を短くできない理由は他にもあります。増員するさいの問題として、追加した人員がすぐに既存の人員と同じパフォーマンスで作業を進められないという点があります。

システム開発をするには、開発する対象の業務について理解しておく必要があります。開発に使用するツールの使い方や開発するさいのルール等、開発を進める上で覚えなければならないことは多岐にわたります。

既存の人員は工数見積もりの段階でこれらの理解・学習の工数も含まれているので習得する余裕があります。一方、急遽増員された人員の場合、そういった工数を入れる余裕がすでにない場合がほとんどです。

じっくり時間をかけて理解する余裕がないので、既存の人員が追加人員に対して必要な知識やルールを教育する必要があります。そうなると、既存の人員の工数が教育に割かれてしまい、結局全体の工数は増えないという結果になります。

人月は人数と時間をかけることで算出する作業量です。しかし、数字上では人数を増やして時間を短くするということはできますが、実際は想定通りの結果にはならないことを理解しておく必要があります。

まとめ

複数のシステム開発会社に費用見積もりを依頼すると、会社ごとに大きく異なる見積もりになる場合があります。それは、開発費用の計算に使用する工数(人月)と単価が様々な要因で変わってくるためです。費用が安いものを単純に選ぶのではなく、工数(人月)や単価も判断基準にするべきです。

作業量である工数(人月)の見積もりが少ないものを安易に選んではいけません。どうしてその工数(人月)になると予想したのか根拠を開発者に確認してみましょう。開発予定のシステムについて開発者の知識や経験が少ない場合は、余裕をもった工数(人月)でないと失敗する危険があります。開発作業以外の調査・分析作業や管理作業に工数(人月)をあまりとっていない場合も納期遅れや品質低下の可能性があります。

単価が高いほどエンジニアの能力も高くて安全というわけではありません。単価が上がる要因にはエンジニアの役職や技能とは関係ないものもあるからです。企業規模が大きい場合や所在地が都心の場合は維持費の分が上乗せされて単価が高くなっている場合があります。地方の中小企業に依頼した場合の方が同じ能力でも単価が低くなる可能性があります。大企業で単価が高いから安心と思考停止せずに、中小企業にも目を向けて、依頼する開発会社を探してみのも手です。

工数(人月)は人数と時間をかけて得られる作業量ですが、人数を増やせば必ず時間が減るというような単純なものではありません。実際の開発作業は均等に分割できるものばかりではありません。また、人数を増やしても、既存の人が追加の人に教育する時間により全体の作業時間はたいして減らないことが多いです。

工数(人月)や単価は様々な要因で変化するものであり、単純に判断できないものです。どのような点に注意すべきかを知っておいてください。

コメント

タイトルとURLをコピーしました