SIerやITベンダーにとって、システム開発の見積というと基本「人月商売」となります。
この商売方法は、システムの価値で値段が決まるのではなく、開発に必要な人数と時間で値段が決まります。
その開発に必要な人数と時間を「工数」と呼び、その数え方として「1人が1ヶ月かけて行える作業量」…つまり「人月」という単位が用いられます。また、1人月あたりの値段については、あらかじめ「人月単価」として取り決めをしておくのが一般的となっております。
そして、「工数(人月)」と「人月単価」が決まれば値段…つまり、見積金額が決まることとなります。
そこから「人月商売」と呼ばれている訳です。
システムを完成させた後に、必要な工数からお客さんにお金を貰う…とは出来ないのが「人月商売」の難しいところになります。
なぜなら、実際に作業を行う前に見積金額をお客さんに提示しなくてはならないからです。そして、それ以上の金額は基本的には貰えません。
そのため、見積工数より多くの時間をかけて開発すると赤字になります。
例えば、人月単価が100万円、工数を5人月で見積もっていて、予想より開発が難しく、システム完成に10人月かかりました…となると、見積金額ベースでは500万円もの大赤字になります。これは特殊な例ではなく、普通にあり得る事なのです。
さらに、お客さんは安い金額で多機能なシステムが欲しい…自社の営業は金額を安くして競合他社に勝って受注したい…という意図が入り込んできます。
工数見積はシステムの開発者が行うことが多いですが、過去の経験から感覚で見積もってしまう人も多いのではないでしょうか?そうすると、見積根拠が不十分の為、「多くの機能を少ない工数で開発できるはずだ」と言いくるめられる事が多々あります。
それは、見積もりを行ったシステム開発者にとっては、地獄への入り口であり、後で死にたくなるほど精神的に追い詰められることになります。
それぐらい、見積を行うのはリスクが高く非常に嫌な作業です。
そのリスクの高さから、高度な知識と経験がある人材が、より正確な見積を算出するために、必要以上に調査時間をかけて見積を行うと、さらにその工数分赤字となってしまうのです。
また、見積を受け取る発注側にとっては、金額の妥当性が分からないため、相場より高額なお金を払ってしまう事も考えられます。
前置きが長くなりましたが、このブログは、時間をかけず、技術も知らず、それなりに根拠のある見積をChatGPT(GPT-4)に行ってもらおう!という試みとなります。
システムの規模を求める単位としてファンクションポイント(FP)という指標があります。FPとは、ソフトウェアの機能を評価するための数値です。ユーザーが必要とする機能に必要な開発作業の量を推定して計測し、ソフトウェアがどのくらいの機能を提供するかを数値化したものとなります。
このFPを求める為のFP法という計算方法があります。
それについては、下記のページを参考にして下さい。
https://wa3.i-3-i.info/word16040.html
https://www.ipa.go.jp/files/000005108.pdf
そのFP法の中でも、最も精度が高いと言われるIFPUG法を用いてFP値を計算したいと思います。
FP法は一般的に見積手法ではないと言われていますが、それは見積がそれだけ難しいという事であり、突き詰めていくと「人月商売」の否定にまで発展しかねないので考えるのはやめましょう。非常に有用な計算方法ですし、無理な要求でも仕事ならばやらなくてはいけません。
下記がChatGPTへの入力文字になります。
【要件start】から【要件end】までのシステムをIFPUG法を用いてFP値を簡単な根拠を含めて提案してください。
調整係数は【要件start】から【要件end】の内容から予想してマトリクス形式で調整係数の簡単な説明と値を提示して下さい。
最終的に調整係数を含めたFP値を求めて下さい。
【要件start】
[開発対象]:ユーザーマスターメンテナンス
[プラットフォーム]:インターネットに公開するBtoCのWEBシステム
[必要機能]:登録、更新、参照、ユーザー検索の為の一覧、パスワードリセットのお知らせメール送信
[変更ありデータ]:ユーザー情報(10項目程度)
[読込のみデータ]:会社情報(2項目程度)
[特記事項]:管理者が利用する機能の為、UI/UXは簡単なものでよい
【要件end】
【要件start】から【要件end】の間にある項目を、見積を行いたいシステムに合わせ、分かる範囲で変更して埋めて下さい。詳細に記述するほど精度が上がります。
埋めたら回答を見てみましょう!
※GPT-3.5は精度が落ちるのでオススメしません。
これでFP値が算出できました。もし貴方がITベンダー社員かつ、過去の開発実績工数が分かるなら、そのシステムのFP値を算出し、実績工数(人月)で割れば、1人月あたりのFP値が取得出来るはずです。
また、人月単価は決まってると思いますので
対象システムのFP値 ÷ 1人月あたりのFP値 × 人月単価
で費用も算出できます。
それらの情報を持っていない場合は、下記の質問をChatGPTへの入力してみましょう。
【要件start】から【要件end】までのシステムに対して、【条件start】から【条件end】までの条件を元に、ITベンダーが客先に提出する金額を出してください。
【条件start】
[必要人材]【要件start】から【要件end】までのシステム開発が行える技術力がある日本企業に属しているエンジニア
[開発場所]:日本の名古屋市の1か所
[人月単位FP値]:[必要人材]の1人月で作業可能なFP値
[人月単価]:[必要人材]の1人月あたりの単価
[求める金額]:ITベンダーが[必要人材]にお金を払ったとしても赤字にならず利益が出るような見積金額
【条件end】
【条件start】から【条件end】はとりあえず、開発場所だけ編集して下さい。よく分からなければ、その項目ごと消しても大丈夫です。
156.24万円という金額が出ました。
この金額が高いと思うのか、安いと思うのかは人それぞれかもしれません。
ただひとつの目安としては使えそうな気がします。
例えば貴方が見積を行う担当者で、この金額が高いと感じるなら、それより少し見積を下げて「AIが見積もった金額より頑張って安くしてます!」と胸を張って言えます。
貴方がシステム開発を発注する側で、ベンダーが提出してきた見積が、これで算出した金額より高いならば「AIが見積もった金額より高いのは何故?」と疑問を投げかけ、その回答を元に入力値を変更しながら価格の交渉をするのも良いかもしれません。
この通りの見積が通る事は難しいかもしれませんが、見積に根拠を求められた時は、ChatGPTを利用して根拠を説明出来るようにしてみては、いかがでしょうか?