独学文系エンジニアな日々

機械音痴な文系大学生が独学でプログラミングを学んだブログ

【ファンクションポイント法(FP)】フリーランスも使える見積もりー 脱 !初心者

f:id:sooriy25:20210223182112p:plain

フリーランスでWebアプリケーションを作る場合、どのように金額を決めるか苦労していたりしないでしょうか。


この規模のメディアサイトなら代替15万かな?
Wordpressなら10万かな?


大体こんな感じで決めていたりしないでしょうか。


これでは機能が予想より膨れ上がった場合に大変辛い思いにすることになります。
これを機になんとなく見積もるのをやめて、ある程度自分で管理して見積もってはいかがでしょうか。

見積もり方の手法の一つにファンクションポイント法というのがあります。

以前にも一瞬だけ取り上げています。気が向いたらこちらの記事も読んでみてください。

soriblog.com



ファンクションポイントとは

ファンクションポイント法(ファンクションポイントほう、英: function point method)とは、1979年にIBMのアレン・J・アルブレヒト(A.J.Albrecht)が考案したソフトウェアの規模を測定する手法の1つ。ソフトウェアがもつ機能数や複雑さによって重みづけした点数(ファンクションポイント:FP)を付け、そのソフトウェアにおける合計点数から開発工数を見積もる。米国International Function Point Users Group(IFPUG)によってマニュアルが策定された。

ファンクションポイント法 - Wikipedia

wikipediaにも記載してある通り、作りたいものを機能ごとに分類し、難易度(評価点)と重み付け(調整係数)を行い、それに対して工数や金額を加点する方式です。

評価点

f:id:sooriy25:20210223182313p:plain

評価点とはどういう基準で決めるかという話ですが、基本的には難易度を軸に決定します。

一般的には、以下の5つに分類して見積もりを決めることが多いです。

機能分類

1.外部入力:データの入力

  例:ログイン、ユーザー登録フォームなど

2.外部出力:データを加工して出力

  例:ダウンロード処理、領収書など

3.外部照会:データを加工せずに出力

  例:検索、〇〇ランキング表示処理など

4.内部論理ファイル:データの追加・更新・削除といった操作を行うファイル。

  例:ユーザー登録処理

5.外部インタフェースファイル:外部アプリケーションから参照を行う

  例:位置情報、SNS取得


実際には、1〜3、4〜5で分けて考えます。

* トランザクションファンクション→1、2、3
* データファンクション→4、5

しかしながら全てをこれになぞる必要があるというわけではなく、企業などで活用する場合は、上記のようにある程度ルールを縛っても良いと思いますし フリーランスであれば自分が管理しやすいレベルまで落として管理すると良いと思います。
プロジェクトのメンバー数によっては基準をブラしたくないので臨機応変に対応するのが良いかと思います。

例(個人(フリーランスなど)小規模で行う場合)

具体的にはこんな感じになります。

※データ層も含んでいます。

f:id:sooriy25:20210223172925p:plain

基準があると決めやすいと思います。
例えば、ログイン機能が3点で一番簡単な機能であれば、それより難しいか難しくないかで判断します。
また、評価点の説明も用意しておくと便利です。

調整係数

f:id:sooriy25:20210223182442p:plain

調整係数は不確定の強い要素の計算です。 基本的には以下の14のシステム特性によって変化します。


システム14つの特性

  • データ通信

  • 分散データ処理

  • 性能

  • 高負荷構成

  • トランザクション

  • オンライン入力

  • エンドユーザ効率

  • オンライン更新

  • 複雑な処理

  • 再利用可能性

  • インストール容易性

  • 運用性

  • 複数サイト

  • 変更容易性


量が多いので多くは説明しませんが、0〜5点で評価します。 例えばデータ通信であれば、「アプリケーションの通信頻度」であり、

webアプリケーションとしてhttp通信だけを行うので4点。

というように決めていきます。

それぞれの説明は検索するとすぐに出てきます。

検索キーワード例 => FP法 調整係数

計算式は以下で、TDIに14項目の合計値を入れて決定し、
調整係数=(TDI*0.01)+0.65

算出された割合を評価点と掛け合わせて算出するというのが大枠の概要となります。

1点が1万円で評価点合計が100万だとしたら


評価点(100点)*調整係数(0.95)= 95万

という見積もりです。

メリット

メリット   プログラムに依存しないためクライアントにも説明しやすい
  自分でも機能を整理出来る
  ある程度は再利用できる


要件を整理するだけで上記のような恩恵を受けることもできます。
何より、説明的になっていればクライアントも納得してくれるし信頼してくれます。
まずは何もしないよりしっかりと見積もることを始めてみましょう。
以上がファンクションポイント法の概要になります。
導入してもっと具体的に知りたいという方は、検索してみてください。