FP法とは
FP法(Function Point法)は、ソフトウェアの規模を機能の観点から定量化する手法です。
特徴は、プログラムの行数や工数ではなく、ユーザに提供する機能の数と複雑さをもとに見積もりを行う点にあります。
この手法は1979年にIBMのアラン・アルブレヒト(Allan Albrecht)氏によって提案され、現在では国際標準化され、ISO/IEC 20926:2003、その日本版として JIS X 0142:2010 に規定されています。
特にJIS規格は、IFPUG(International Function Point Users Group)のCounting Practices Manual ver.4.1 を基にしており、国内外の見積りで広く利用されています。
FP法の目的は次の通りです。
- 開発の早い段階から規模見積もりを行える
- 言語や技術に依存しない客観的な指標を持てる
- 過去プロジェクトと比較可能な規模を算出できる
FP法で使われる用語
FP法の理解に必要な基本用語を整理します。
データ機能
- ILF(Internal Logical File:内部論理ファイル)
システム内部で維持・管理する論理的なデータ群。例:顧客マスタ、商品マスタ。 - EIF(External Interface File:外部インタフェースファイル)
外部システムが管理しているが、参照だけを行うデータ群。例:外部提供される税率マスタ。
トランザクション機能
- EI(External Input:外部入力)
システムにデータを入力し、ILFを更新する処理。例:顧客登録、受注入力。 - EO(External Output:外部出力)
計算や集計を行い、外部へデータを出力する処理。例:帳票出力、集計レポート。 - EQ(External Inquiry:外部参照)
データを検索・照会して表示する処理。例:顧客検索画面、商品照会。
複雑度判定に使う要素
- DET(Data Element Type:データ項目数)
ユーザに意味がある最小単位のデータ項目。例:顧客ID、氏名、住所など。 - RET(Record Element Type:レコード種類数)
ILF/EIFを構成するサブグループ。例:受注データの「ヘッダ」「明細」。 - FTR(File Type Referenced:関連ファイル数)
トランザクション機能で参照または更新されるファイル(ILF/EIF)の種類数。
その他
- UFP(Unadjusted Function Point:未調整ファンクションポイント)
複雑度ごとの重み付けを合計した「未調整FP」。 - VAF(Value Adjustment Factor:調整要因)
一般システム特性(GSC)を評価して調整する係数(0.65〜1.35)。
※近年はUFPをそのまま使う場合も多い。
FP法を用いた計算の概要
FP法の計算手順は次の5ステップです。
1. システム境界を決める
どこからどこまでを対象システムとするかを明確にします。
内部で管理するデータはILF、外部にあるが参照するだけのデータはEIFとなります。
2. 機能を分類する
対象システムの機能を5種類(ILF/EIF/EI/EO/EQ)に振り分けます。
3. 複雑度を判定する
DET, RET, FTRの数を基準にして、各機能を 低 / 中 / 高 に分類します。
例:ILF の判定表(IFPUG 4.1 / JIS X 0142:2010)
DET\RET | 1 | 2〜5 | 6以上 |
---|---|---|---|
1〜19 | 低 | 低 | 中 |
20〜50 | 低 | 中 | 高 |
51以上 | 中 | 高 | 高 |
同様に、EI/EO/EQについてもFTR×DETの判定表が用意されています。
4. 重みを当ててUFPを算出する
判定結果(低 / 中 / 高)に応じて、以下の重みを割り当てます。
機能タイプ | 低 | 中 | 高 |
---|---|---|---|
ILF | 7 | 10 | 15 |
EIF | 5 | 7 | 10 |
EI | 3 | 4 | 6 |
EO | 4 | 5 | 7 |
EQ | 3 | 4 | 6 |
すべての機能の重みを合計すると、未調整FP(UFP)が求まります。
5. (任意)VAFで調整する
14個の一般システム特性(GSC)を0〜5で評価し、その合計からVAFを計算します。
- VAF = 0.65 + 0.01 × TDI(TDIは特性の合計値)
- 調整済みFP = UFP × VAF
ただしVAFは任意適用であり、ISO/IEC標準ではUFPのみが機能規模とされます。
複雑度判定表(詳細)
ILF/EIF
DET\RET | 1 | 2〜5 | 6以上 |
---|---|---|---|
1〜19 | 低 | 低 | 中 |
20〜50 | 低 | 中 | 高 |
51以上 | 中 | 高 | 高 |
EI(External Input:外部入力)
DET\FTR | 0〜1 | 2 | 3以上 |
---|---|---|---|
1〜4 | 低 | 低 | 中 |
5〜15 | 低 | 中 | 高 |
16以上 | 中 | 高 | 高 |
EO(External Output:外部出力)
DET\FTR | 0〜1 | 2〜3 | 4以上 |
---|---|---|---|
1〜5 | 低 | 低 | 中 |
6〜19 | 低 | 中 | 高 |
20以上 | 中 | 高 | 高 |
EQ(External Inquiry:外部参照)
DET\FTR | 0〜1 | 2〜3 | 4以上 |
---|---|---|---|
1〜5 | 低 | 低 | 中 |
6〜19 | 低 | 中 | 高 |
20以上 | 中 | 高 | 高 |
計算の具体例
例として、小規模な「受注管理システム」を対象にしてみます。
データ機能
- 顧客マスタ(ILF):RET=1、DET=12 → 低 → 7 FP
- 商品マスタ(ILF):RET=1、DET=20 → 低 → 7 FP
- 受注(ILF:ヘッダ+明細):RET=2、DET=28 → 中 → 10 FP
- 税率マスタ(EIF):RET=1、DET=8 → 低 → 5 FP
小計:29 FP
トランザクション機能
- 顧客登録(EI):FTR=1、DET=10 → 低 → 3 FP
- 受注登録(EI):FTR=2、DET=20 → 高 → 6 FP
- 商品メンテ(EI):FTR=1、DET=12 → 低 → 3 FP
- 受注確認書出力(EO):FTR=2、DET=12 → 中 → 5 FP
- 売上集計レポート(EO):FTR=2、DET=25 → 高 → 7 FP
- 商品検索(EQ):FTR=1、DET=6 → 低 → 3 FP
小計:27 FP
合計
- UFP = 29 + 27 = 56 FP
もしTDI=35(VAF=1.00)であれば、調整済みFPも56 FPとなります。
見積りへの変換
実際の見積もりでは、FPを工数やコストに換算します。
- 工数(人時) = FP × PDR(時間/FP)
- コスト = 工数 × 単価
PDR(Productivity Delivery Rate)は、開発手法・規模・組織の生産性により大きく変動するため、過去実績やISBSGなどのベンチマークを用いて設定します。
まとめ
FP法は、ユーザに提供する機能の数と複雑度をもとに、言語や開発環境に依存しない規模の定量化を可能にする手法です。
計算手順は以下の通りです。
- システム境界を決める
- 機能をILF/EIF/EI/EO/EQに分類する
- DET/RET/FTRを数えて複雑度を判定する
- 重みを当ててUFPを合計する
- 必要に応じてVAFで調整する
この方法により、開発初期の段階でも比較的客観的な見積もりが可能になります。
また、他のプロジェクトと横断的に比較できるため、見積りの妥当性検証や実績分析にも有効です。
FP法は規格化されていることで一貫性のある計測が可能ですが、同時に「DETやRETの数え方」といった解釈に幅があるため、プロジェクトごとのカウントルールを明文化することが成功のポイントになります。

コメント