🚀

ファンクションポイントって何?ざっくりだけど役立つ規模見積もり

に公開2件

はじめに

先日、業務で「画面ごとにファンクションポイント(FP)をつける」作業をしました。
やってみて感じたのは、「かなりざっくりした指標だな」 ということ。
でも調べてみると、ざっくりだからこそ意味がある、という背景が見えてきました。
この記事では、ファンクションポイントをつける理由や使い道、具体例や他の方法との比較をまとめてみます。

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

ファンクションポイント(FP)は、ソフトウェア規模を測る国際的な指標です。
プログラムの行数ではなく、ユーザーに提供する機能に注目して「規模感」を数値化します。

分類は以下の5つ:

  • 外部入力(EI):データを入力する機能
  • 外部出力(EO):帳票や画面表示などの出力機能
  • 外部照会(EQ):検索や問い合わせ(入力+結果返却)
  • 内部論理ファイル(ILF):システム内の保持データ
  • 外部インターフェースファイル(EIF):外部システムから参照するデータ

さらに、それぞれ「低・中・高」の複雑度を判定して点数化します。

なぜファンクションポイントをつけるのか?

  1. 見積もり精度を上げるため
    「この画面はどれくらい工数がかかるのか?」を客観的に見積もる基準になります。
    経験や勘に頼らず、標準化された物差しで算定できるのが利点です。

  2. プロジェクト全体の規模管理
    画面やバッチ単位でFPを合計すれば、システム全体の規模感を数字で把握できます。
    進捗も「今スプリントで30FP分の開発を完了」といった形で表せます。

  3. 過去実績との比較
    過去プロジェクトのFPと工数を紐づけておけば、次回見積もりの根拠になります。
    「前回100FPで2か月かかった。今回は150FPだから3か月程度必要」といった判断が可能です。

実務で感じた「さっくり感」

FPは便利な一方で、かなり大まかな指標です。

  • 工数の違いが反映されにくい
    例:ログイン画面はFP上は数点ですが、セキュリティ要件次第で工数は大きく変わる。

  • 技術差やチーム差は考慮されない
    経験豊富なチームと新人中心のチームでは、同じFPでも工数が倍違うこともある。

FPは「細かい見積もり」には向かないが、「全体規模感の把握」や「案件比較」には有効。

具体例で見るFPのつけ方

ログイン画面

  • 入力:ユーザーID+パスワード → 外部入力(EI)低=3点
  • 出力:エラーメッセージ → 外部出力(EO)低=4点
  • 合計:7 FP

商品検索画面

  • 入力:検索条件(商品名・カテゴリ・価格帯など4項目) → 外部照会(EQ)中=4点
  • 出力:検索結果一覧(10列表示) → 外部出力(EO)中=5点
  • 合計:9 FP

単純に「画面数」でなく、項目数や参照ファイル数でFPが変わるのがポイント。

他の見積もり手法との比較

FP以外にもソフトウェア見積もりの方法はあります。

手法 特徴 メリット デメリット
LOC法 行数ベース 分かりやすい 言語依存が大きい
FP法 機能ベース 標準化され比較可能 ざっくりしすぎる
UCP法 ユースケースベース UMLと相性良い モデリング依存
COCOMO法 数理モデル 理論的に算出 入力精度に依存
ストーリーポイント 相対見積もり アジャイルに最適 他案件と比較できない

まとめ

ファンクションポイントをつける作業は、

  • 見積もりの妥当性を高める
  • プロジェクト規模を客観的に管理する
  • 過去実績との比較に役立つ

といった目的があります。

一方で、工数の細かい差や技術的難易度は吸収されてしまうため、「さっくり感」は避けられません。
それでも、標準化された“共通言語”として、見積もりや進捗管理の基盤を支える大事な手法だと感じました。

Discussion

naganaga

面白い記事ですね。
FPはかなりざっくりとありますが、FPの流儀も色々あって、最近ではifpug法に変わって、SimpleFP法が普及して来てきますので、より、ざっくりになるかもしれません。

ざっくりを言い換えると『プロジェクトの早い段階から見積に使える』と言う事です。精緻な見積りをしても、その時に既に予算や納期が決まっていたら、時すでに遅し、です。

また、非機能は反映されないはそのとおり、ですが、そこは複数の見積り方法を部分的にでも併用するのが現実的です。例えば、縦書きのエディター画面などの特殊要件は普通にWBSによるタスク積み上げで見積り、それ以外の画面はFPといった具合です。システム全体の非機能要件はアプリのというより基盤・アーキ設計する人が担うべき事なので、そもそも開発工数算出のScope外として整理すると良いでしょう。

生産性がFPに反映されない、もそのとおりですが、アーキテクチャ、言語、開発スキルに依存しないのがFPの利点、FP÷基準生産性で工数を算出するので、仮にFPが1,000だとしても、基準生産性が10fp/人月なら工数は100人月ですし、20fp/人月なら50人月です。規模と生産性を分けて考える、関心事の分離はソフトウェアエンジニアリングでは大切な考え方です。

詳しくはITシステム可視化協議会(MCIS)のwebサイトをご確認下さい。MCISはFP統括団体であるifpugの日本支部であり、ソフトウェアメトリックスを研究・推進して31年になる団体です。
https://www.mcis-jp.org/

2
hirumahiruma

コメントありがとうございます!とても勉強になりました。

特に「ざっくり=プロジェクトの早い段階から見積に使える」という捉え方がすごく腑に落ちました。精緻に作っても予算や納期が先に固定されていると活かしづらい、という現実面も含めて納得です。

また、非機能や特殊要件はFPだけに寄せず、必要に応じてWBSで積み上げるなど併用する、という考え方も実務的で参考になりました。

教えていただいたMCISのサイトも確認して理解を深めます。貴重な補足をありがとうございました!

1