非機能要件とは、システムが「何をするか(機能)」ではなく「どれくらいの品質で動くか」を決める要件で、可用性・性能・運用・移行・セキュリティ・環境の6つに整理するのが定番です。 この6分類は、IPA(情報処理推進機構)が公開している「非機能要求グレード2018」の大項目にもとづいています。

この記事では、6大項目×35中項目の一覧表、モデルシステム3種で目標水準を決める手順、そのまま使える非機能要件定義書テンプレート(Markdown)、ヒアリング用チェックリストを1ページにまとめました。さらに、稼働率と停止時間の換算や応答時間のパーセンタイルを Python で計算した結果を載せ、「99.9%と99.99%で何が変わるのか」「平均だけで性能目標を書くと何が起きるのか」を数字で確認できるようにしています。

非機能要件の一覧(6大項目の早見表)

記号 大項目 決めること(一言) 代表的な要件の例 数値で書く指標の例
A 可用性 止まらない・止まっても戻せる 運用時間、稼働率、RPO/RTO、冗長化、バックアップ 稼働率 99.9%、RTO 4時間
B 性能・拡張性 速さと、増えたときの余裕 利用者数、同時アクセス数、応答時間、データ量の伸び p95 応答 1秒以内、同時 500 セッション
C 運用・保守性 日々の運用と保守のやり方 監視、バックアップ運用、障害時の連絡体制、保守時間帯 監視間隔 1分、障害連絡 30分以内
D 移行性 今のシステムからの切り替え方 移行時期、移行方式、データ量、リハーサル回数 切替停止 12時間以内、移行データ 500万件
E セキュリティ 守るべき情報と守り方 認証、権限、暗号化、ログ監視、脆弱性診断 ログ保存 1年、診断 年1回
F システム環境・エコロジー 動かす環境と制約 設置場所、準拠する規格、消費電力、利用者の端末 対応ブラウザ、設置スペース

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「非機能要件一覧|IPA非機能要求グレード6大項目と定義書テンプレート」

出典:IPA「非機能要求グレード2018」(大項目・中項目の名称)。各列の「例」は本記事で用意した説明用の例です。

非機能要件と機能要件の違い

機能要件は「タスクを登録できる」のような“できること”、非機能要件は「登録が1秒以内に終わる」「平日日中は止まらない」のような“どのくらいの品質か”を決めます。 非機能要件は利用者から言葉で出てきにくく、後から決めると設計や費用に大きく影響するため、要件定義の早い段階で一覧を使って漏れなく確認するのがポイントです。

観点 機能要件 非機能要件
問い 何ができるか どれくらいの品質でできるか
例 在庫を検索できる 検索結果が p95 で 1秒以内に返る
出てきやすさ 利用者から自然に出てくる 聞かないと出てこないことが多い
確認方法 機能テスト 性能テスト、障害試験、運用試験、セキュリティ診断
影響する工程 画面・処理の設計 構成・インフラ・運用設計、費用

IPA 非機能要求グレードとは

非機能要求グレードは、発注者と開発者が非機能要件を同じ物差しで話し合うための「項目一覧」と「段階(レベル)」のセットです。 IPA が公開しており、2018年版が最新です(IPA のページには、2018年版をもって更新を終えており、問い合わせは受け付けていない旨が記載されています。資料は引き続きダウンロードできます)。

構成資料

IPA のダウンロードページによると、2018年版は次の資料で構成されています。

資料 内容 使いどころ
利用ガイド[活用編] 使い方の手順 最初に読む
利用ガイド[解説編] 項目ごとの説明 項目の意味を確認するとき
グレード表 モデルシステムごとの重要項目とレベル 目標水準の初期値を決めるとき
項目一覧 大項目〜メトリクスの一覧 漏れの確認
樹系図 項目の階層を図にしたもの 全体像の把握
様式(カスタマイズ用シート) 自分たちの値を書き込む表 定義書の作成
利用ガイド[事例編] 使い方の例 進め方の参考

階層構造(大項目→中項目→小項目→メトリクス)

項目は4階層で、いちばん下の「メトリクス」ごとにレベル0〜5の段階が定義されています。 例えば「A 可用性 → A.1 継続性 → 小項目 → A.1.1.1 運用時間」のように、記号でたどれるのが特徴です。

flowchart LR
    A[大項目 A 可用性] --> A1[中項目 A.1 継続性]
    A1 --> A11[小項目 A.1.1 運用スケジュール]
    A11 --> M1[メトリクス A.1.1.1 運用時間(通常)]
    M1 --> L[レベル0〜5 の段階]
階層 数・例 役割
大項目 6(A〜F) 分類の入り口
中項目 35(A.1〜F.5) 検討の単位
小項目 中項目をさらに分けたもの 何を決めるか
メトリクス A.1.1.1 など 段階(レベル)で値を選ぶ単位

6大項目×中項目の一覧表

次の表が、非機能要求グレード2018の中項目35個です。 ヒアリングや定義書の章立てにそのまま使えます。「何を決めるか」の列は、本記事で中項目の趣旨を短くまとめたものです。

A 可用性

記号 中項目 何を決めるか
A.1 継続性 運用時間、計画停止、RPO・RTO・RLO、稼働率
A.2 耐障害性 サーバー・ネットワーク・ストレージ・データの冗長化
A.3 災害対策 遠隔地のバックアップ、代替拠点、復旧の方針
A.4 回復性 復旧作業の範囲、手順の準備、訓練

B 性能・拡張性

記号 中項目 何を決めるか
B.1 業務処理量 利用者数、同時アクセス数、データ量、処理件数と伸び率
B.2 性能目標値 オンラインの応答時間、バッチの処理時間、順守率
B.3 リソース拡張性 CPU・メモリ・ディスクの余裕と増やし方
B.4 性能品質保証 性能テストの方法、帯域の確保

C 運用・保守性

記号 中項目 何を決めるか
C.1 通常運用 運用時間帯、バックアップ、運用監視、時刻同期
C.2 保守運用 計画停止、ソフトウェア更新、定期保守
C.3 障害時運用 障害の検知・連絡・復旧の体制
C.4 運用環境 運用マニュアル、リモート作業、運用ツール
C.5 サポート体制 問い合わせ窓口、保守契約、対応時間
C.6 その他の運用管理方針 内部統制への対応、サービスデスク、資産管理

D 移行性

記号 中項目 何を決めるか
D.1 移行時期 移行の期間、停止できる日時、並行稼働
D.2 移行方式 一括移行か段階移行か
D.3 移行対象 - 機器 移行する機器・設備
D.4 移行対象 - データ データ量、形式変換、移行後の検証
D.5 移行計画 体制、リハーサル、トラブル時の戻し方

E セキュリティ

記号 中項目 何を決めるか
E.1 前提条件・制約条件 守るべき社内規程・法令、情報の取り扱い
E.2 セキュリティリスク分析 どこまでリスクを分析するか
E.3 セキュリティ診断 脆弱性診断の範囲と時期
E.4 セキュリティリスク管理 新しい脆弱性への対応、パッチ適用
E.5 アクセス・利用制限 認証、権限管理、管理者の操作
E.6 データ秘匿 通信と保存データの暗号化
E.7 不正追跡・監視 ログの取得・保存期間・監視
E.8 ネットワーク対策 通信制御、不正通信の検知
E.9 マルウェア対策 対策ソフト、検査の範囲
E.10 Web対策 Webアプリケーションの対策、WAF
E.11 セキュリティインシデント対応 発生時の体制と手順

F システム環境・エコロジー

記号 中項目 何を決めるか
F.1 システム制約・前提条件 既存の構成・ソフトウェアなどの制約
F.2 システム特性 利用者の範囲、利用する場所・端末
F.3 適合規格 準拠する規格や製品の安全規格
F.4 機材設置環境条件 設置スペース、電源、温湿度
F.5 環境マネージメント 消費電力、CO2排出、廃棄

出典:IPA「非機能要求グレード2018」の大項目・中項目の名称と記号。

モデルシステム3種で目標水準を決める手順

非機能要求グレードでは、まず「どのくらい社会に影響するシステムか」を3つのモデルから選び、その初期値をたたき台に重要項目のレベルを調整します。 一からすべて決めるより、合意までの時間を短くできるのが利点です。

モデルシステム 想定するシステムのイメージ 停止・遅延への考え方
社会的影響が殆ど無いシステム 一部の部署だけで使う社内ツール(備品管理など) 業務時間内に動けばよく、止まっても手作業で代替できる
社会的影響が限定されるシステム 社内の主要業務や、限られた取引先が使うシステム 業務時間中の停止は短く、データ消失は小さく抑える
社会的影響が極めて大きいシステム 広く一般の人が使い、止まると生活や社会活動に影響するシステム 24時間止めない前提で、拠点障害にも備える

IPA の利用ガイドで示されている進め方は、次の3段階です。

段階 やること ポイント
1 モデルシステムを選ぶ 迷ったら影響が大きいほうを選び、後で下げる
2 重要項目のレベルを決める グレード表の初期値から、自分たちの事情で上げ下げする
3 重要項目以外のレベルを決める 重要項目と矛盾しないように残りを埋める

重要項目の早見表(可用性・性能を中心に)

重要項目とは、システムの構成や費用に大きく影響するため、優先して合意しておくメトリクスです。 可用性の A.1 継続性では、運用時間・計画停止・RPO・RTO・RLO・稼働率などが重要項目に指定されています。下の表は、主な重要項目と、レベルの値の例(IPA の公開資料で確認できたもの)、モデルごとの考え方をまとめたものです。

メトリクス レベルの値の例(IPA 資料より) 殆ど無い 限定される 極めて大きい
A.1.1.1 運用時間(通常) レベル0「規定なし」〜レベル5「24時間無停止」の6段階。レベル4「若干の停止有り」 業務時間内 業務時間+延長 24時間
A.1.1.3 計画停止 停止の有無・事前通知 計画停止あり 計画停止あり(時間帯を限定) 原則なし(無停止で保守)
A.1.2.2 サービス切替時間 「24時間未満」〜「60秒未満」の6段階。レベル3「60分未満」 長めでよい 1時間程度まで 分〜秒単位
A.1.3.1 RPO(目標復旧地点) どの時点まで戻せるか 前日のバックアップ時点 数時間前まで 障害の直前まで
A.1.3.2 RTO(目標復旧時間) レベル2「12時間以内」 1日程度 半日以内 数時間以内
A.1.5.1 稼働率 レベル4「99.99%」 99%台 99.9%台 99.99%以上
B.2.1 オンラインの応答時間・順守率 応答時間「30秒以内」〜「1秒以内」の6段階。通常時レスポンス順守率 レベル3「90%」 数秒で可 数秒以内を高い割合で 1秒以内を高い割合で

表の「殆ど無い/限定される/極めて大きい」の列は、レベル番号ではなく考え方の目安です。 正式な初期値は IPA の「グレード表」(ダウンロード資料に含まれる Excel)に、モデルごとのレベルとして載っています。定義書に書く前に、必ずグレード表で確認してください。

数値の決め方

非機能要件は「速いこと」「止まらないこと」のような言葉ではなく、数値と測り方をセットで書くと、テストで合否を判断できるようになります。 ここでは、迷いやすい3つ(稼働率、RPO/RTO、応答時間)の決め方を、計算結果とともに整理します。

稼働率と停止時間の換算表(Python で計算)

稼働率は「止まってよい時間」に直すと、利用者と合意しやすくなります。次のコードは標準ライブラリだけで動きます。

# availability.py  (Python 3.11 標準ライブラリのみ)
from datetime import timedelta

def fmt(sec: float) -> str:
    td = timedelta(seconds=round(sec))
    h, rem = divmod(td.total_seconds(), 3600)
    m, s = divmod(rem, 60)
    return f"{int(h)}時間{int(m):02d}分{int(s):02d}秒"

YEAR = 365 * 24 * 3600   # 1年(365日)
MONTH = 30 * 24 * 3600   # 1か月(30日)
BIZ_YEAR = 245 * 9 * 3600  # 平日 9時〜18時のみ運用(年245日×9時間)

print("| 稼働率 | 年間の停止許容(24時間365日) | 月間(30日) | 平日9〜18時運用の年間 |")
print("|---|---|---|---|")
for a in [0.99, 0.995, 0.999, 0.9995, 0.9999, 0.99999]:
    down = 1 - a
    print(f"| {a*100:g}% | {fmt(YEAR*down)} | {fmt(MONTH*down)} | {fmt(BIZ_YEAR*down)} |")

# 直列と並列(冗長化)の稼働率
web, app, db = 0.999, 0.999, 0.9995
serial = web * app * db
print(f"\n直列(Web×AP×DB) = {serial*100:.4f}%  年間停止 {fmt(YEAR*(1-serial))}")
pair = 1 - (1 - app) ** 2
print(f"AP を2台並列     = {pair*100:.4f}%")
print(f"直列(AP2台並列)  = {web*pair*db*100:.4f}%  年間停止 {fmt(YEAR*(1-web*pair*db))}")

実行結果(python3 availability.py、Python 3.11.15):

稼働率 年間の停止許容(24時間365日) 月間(30日) 平日9〜18時運用の年間
99% 87時間36分00秒 7時間12分00秒 22時間03分00秒
99.5% 43時間48分00秒 3時間36分00秒 11時間01分30秒
99.9% 8時間45分36秒 0時間43分12秒 2時間12分18秒
99.95% 4時間22分48秒 0時間21分36秒 1時間06分09秒
99.99% 0時間52分34秒 0時間04分19秒 0時間13分14秒
99.999% 0時間05分15秒 0時間00分26秒 0時間01分19秒
直列(Web×AP×DB) = 99.7502%  年間停止 21時間52分57秒
AP を2台並列     = 99.9999%
直列(AP2台並列)  = 99.8500%  年間停止 13時間08分40秒

この結果から読み取れるポイントは3つです。

  • 「9」が1つ増えるごとに停止許容は10分の1になります。 99.9% は年8時間45分、99.99% は年52分です。月1回・1時間の計画停止を入れるなら、それだけで 99.9% を超えてしまうため、計画停止を稼働率に含めるかどうかを定義書に明記します。
  • 稼働率は「運用時間の中で」計算するのが一般的です。 平日9〜18時だけ運用するなら、同じ 99.9% でも許容停止は年2時間12分です。運用時間(A.1.1.1)とセットで書きます。
  • 直列につながる部品の稼働率は掛け算で下がり、冗長化(並列)で上がります。 Web・AP・DB がそれぞれ 99.9% 前後でも、全体は 99.75% になりました。AP を2台にしても全体は 99.85% で、残りの部品(Web・DB)の冗長化も検討が必要だとわかります。

RPO・RTO・RLO の決め方

RPO は「どの時点のデータまで戻せればよいか」、RTO は「どれくらいの時間で戻せばよいか」、RLO は「どのレベル(全機能か一部機能か)まで戻すか」です。

flowchart LR
    B[最後のバックアップ] -- RPO:失ってよいデータの幅 --> X[障害発生]
    X -- RTO:復旧までの時間 --> R[業務再開(RLO のレベルで)]
指標 質問の仕方 決めると決まるもの 例
RPO(目標復旧地点) 「何時間分の入力をやり直せますか?」 バックアップの間隔・方式(日次、差分、レプリケーション) 前日終業時点(日次バックアップ)
RTO(目標復旧時間) 「何時間止まると業務が回らなくなりますか?」 予備機の有無、復旧手順、体制 4時間以内
RLO(目標復旧レベル) 「まず何の機能が戻ればよいですか?」 復旧の優先順位、縮退運転 参照と登録を先に復旧、集計は翌日

RPO を小さくするほどバックアップの頻度や仕組みの費用が上がり、RTO を短くするほど予備機や自動切替の費用が上がります。 利用者の「ゼロにしたい」という希望は、費用の目安と一緒に提示して落としどころを決めると合意しやすくなります。

応答時間はパーセンタイルで書く(Python で計算)

応答時間の目標は「平均」ではなく「p95(95%のリクエストがこの時間以内)」のようなパーセンタイルで書くのがおすすめです。 平均だと、一部の遅いリクエストが見えにくくなるためです。次のコードは、架空の応答時間データ1万件(98%は200ミリ秒前後、2%だけ2〜4秒)で確認したものです。

# percentile.py  (Python 3.11 標準ライブラリのみ)
import random
import statistics

random.seed(42)
# 架空の応答時間データ(ミリ秒):通常は 200ms 前後、2% だけ 2〜4 秒かかる
samples = [random.lognormvariate(5.3, 0.35) for _ in range(9800)]
samples += [random.uniform(2000, 4000) for _ in range(200)]

q = statistics.quantiles(samples, n=100, method="inclusive")  # q[i] = (i+1) パーセンタイル
print(f"件数        : {len(samples)}")
print(f"平均        : {statistics.fmean(samples):7.1f} ms")
print(f"中央値(p50) : {q[49]:7.1f} ms")
print(f"p90         : {q[89]:7.1f} ms")
print(f"p95         : {q[94]:7.1f} ms")
print(f"p99         : {q[98]:7.1f} ms")
print(f"最大        : {max(samples):7.1f} ms")

target = 1000
ok = sum(s <= target for s in samples) / len(samples)
print(f"{target}ms 以内の割合(順守率): {ok*100:.1f}%")

実行結果:

件数        : 10000
平均        :   267.6 ms
中央値(p50) :   201.4 ms
p90         :   329.9 ms
p95         :   389.8 ms
p99         :  2916.6 ms
最大        :  3987.1 ms
1000ms 以内の割合(順守率): 98.0%

平均は 267.6ms と速く見えますが、p99 は約2.9秒で、100回に1回以上は3秒近く待たされています。 「平均 500ms 以内」と書くとこのシステムは合格しますが、「p99 1秒以内」と書けば不合格として改善の対象になります。IPA のグレードにも「通常時レスポンス順守率」(何%のリクエストが目標時間内に収まるか)というメトリクスがあり、考え方は同じです。

書き方 例 テストでの判定
あいまい 「ストレスなく使える速さ」 判定できない
平均 「平均 500ms 以内」 遅いリクエストが隠れる
パーセンタイル 「通常時、p95 1秒以内・p99 3秒以内」 負荷テストの結果で合否を判定できる
順守率 「1秒以内に 95% 以上が応答」 p95 と同じ意味で、利用者に伝わりやすい

応答時間の目標は、条件(同時アクセス数、データ件数、測る区間)とセットで書きます。負荷テストのツールや進め方は既存記事「負荷テストの進め方とk6の使い方」で扱っています。

そのまま使える非機能要件定義書テンプレート

定義書は「項目・目標値・測定方法・根拠」の4点を必ずそろえると、後工程のテストや運用で迷いません。 以下は Markdown でそのまま使えるテンプレートです。値は架空のタスク管理システムの記入例です。

# 非機能要件定義書(タスク管理システム)

- 文書番号:NFR-001 / 版:1.0 / 作成日:2026-10-01
- 参照:IPA 非機能要求グレード2018
- モデルシステム:社会的影響が限定されるシステム(初期値として採用し、下記のとおり調整)

## 1. 前提条件
| ID | 項目 | 内容 |
|---|---|---|
| PRE-01 | 利用者数 | 社員 800 名(3 年後 1,200 名) |
| PRE-02 | 利用時間帯 | 平日 8:00〜20:00 |
| PRE-03 | 利用端末 | 社内 PC(最新版の Chrome / Edge) |

## 2. 可用性
| ID | グレード項目 | 要件 | 目標値 | 測定方法 | 根拠 |
|---|---|---|---|---|---|
| NFR-A-01 | A.1.1.1 運用時間 | サービス提供時間 | 平日 8:00〜20:00 | 監視ツールの稼働記録 | 利用時間帯(PRE-02) |
| NFR-A-02 | A.1.1.3 計画停止 | 計画停止の扱い | 月 1 回、休日 2 時間以内、7 日前通知 | 保守記録 | 業務時間外で吸収できる |
| NFR-A-03 | A.1.5.1 稼働率 | 運用時間内の稼働率(計画停止を除く) | 99.9% 以上(月間) | 外形監視の 1 分間隔の成功率 | 年間停止許容 約 3 時間 |
| NFR-A-04 | A.1.3.1 RPO | 復旧時点 | 障害の 1 時間前まで | 復旧訓練で確認 | 1 時間分の再入力は許容 |
| NFR-A-05 | A.1.3.2 RTO | 復旧時間 | 4 時間以内 | 復旧訓練で確認 | 半日止まると締め作業に影響 |
| NFR-A-06 | A.2 耐障害性 | 冗長化 | AP 2 台、DB はマネージドの複数ゾーン構成 | 構成図・切替試験 | NFR-A-03 の達成 |

## 3. 性能・拡張性
| ID | グレード項目 | 要件 | 目標値 | 測定方法 | 根拠 |
|---|---|---|---|---|---|
| NFR-B-01 | B.1 業務処理量 | 同時アクセス | 300 セッション | 負荷テスト | 利用者の 4 割が同時利用 |
| NFR-B-02 | B.2 性能目標値 | 画面の応答時間 | 通常時 p95 1 秒以内、p99 3 秒以内 | 負荷テスト(NFR-B-01 の条件) | 操作の待ち時間の許容 |
| NFR-B-03 | B.2 性能目標値 | 夜間バッチ | 2 時間以内に完了 | ジョブ実行ログ | 翌朝 8:00 の利用開始に間に合う |
| NFR-B-04 | B.3 リソース拡張性 | 余裕 | CPU・メモリ使用率 ピーク時 70% 以下 | 監視の 5 分平均 | 3 年後の利用者増に対応 |

## 4. 運用・保守性
| ID | グレード項目 | 要件 | 目標値 | 測定方法 | 根拠 |
|---|---|---|---|---|---|
| NFR-C-01 | C.1 通常運用 | バックアップ | DB 日次フル+1 時間ごとの差分、30 日保管 | バックアップ記録 | NFR-A-04 |
| NFR-C-02 | C.1 通常運用 | 監視 | 死活・リソース・エラー率を 1 分間隔 | 監視設定 | 障害の早期検知 |
| NFR-C-03 | C.3 障害時運用 | 障害連絡 | 検知から 30 分以内に一次連絡 | 障害報告書 | 利用部門への周知 |
| NFR-C-04 | C.5 サポート体制 | 問い合わせ対応 | 平日 9:00〜18:00 | 窓口記録 | 運用時間帯 |

## 5. 移行性
| ID | グレード項目 | 要件 | 目標値 | 測定方法 | 根拠 |
|---|---|---|---|---|---|
| NFR-D-01 | D.1 移行時期 | 切替時の停止 | 休日 12 時間以内 | リハーサル結果 | 業務への影響を避ける |
| NFR-D-02 | D.4 移行対象 - データ | 移行データ | タスク 200 万件、添付 300GB | 件数・ハッシュ照合 | 現行システムの全件 |
| NFR-D-03 | D.5 移行計画 | リハーサル | 本番前に 2 回 | リハーサル報告 | 手順と時間の確認 |

## 6. セキュリティ
| ID | グレード項目 | 要件 | 目標値 | 測定方法 | 根拠 |
|---|---|---|---|---|---|
| NFR-E-01 | E.5 アクセス・利用制限 | 認証 | 社内 ID 基盤とのシングルサインオン+多要素認証 | 設定確認 | 社内規程 |
| NFR-E-02 | E.6 データ秘匿 | 暗号化 | 通信は TLS 1.2 以上、保存データは暗号化 | 設定確認・診断 | 社内規程 |
| NFR-E-03 | E.7 不正追跡・監視 | 操作ログ | 1 年保存、管理者操作は全件 | ログ保管設定 | 監査対応 |
| NFR-E-04 | E.3 セキュリティ診断 | 脆弱性診断 | リリース前と年 1 回 | 診断報告書 | 継続的な確認 |

## 7. システム環境・エコロジー
| ID | グレード項目 | 要件 | 目標値 | 測定方法 | 根拠 |
|---|---|---|---|---|---|
| NFR-F-01 | F.2 システム特性 | 利用場所 | 社内ネットワークと VPN 経由のみ | ネットワーク設定 | 社外公開しない |
| NFR-F-02 | F.1 システム制約 | 稼働基盤 | 社で契約済みのクラウド | 構成図 | 既存契約の活用 |

## 8. 対象外・保留事項
| ID | 内容 | 理由・期限 |
|---|---|---|
| OUT-01 | 遠隔地での災害対策(A.3) | 今回は対象外。次期で検討 |

テンプレートを書くときのポイント

列 書き方 よくある書き方 → 直した後
要件 何についての要件か 「性能」→「画面の応答時間」
目標値 数値と条件 「速いこと」→「通常時 p95 1 秒以内」
測定方法 どのツール・どの区間・どの期間で測るか (空欄)→「負荷テスト(同時 300 セッション)」
根拠 なぜその値か(業務上の理由) (空欄)→「翌朝 8:00 の利用開始に間に合う」
グレード項目 IPA の記号 記号を書くと漏れの確認がしやすい

「根拠」の列は省略されがちですが、値を見直すときの判断材料になる大切な列です。 費用との調整で目標値を下げる場合も、根拠があれば影響を説明できます。

ヒアリング用チェックリスト

利用者に「非機能要件を教えてください」と聞いても答えにくいため、業務の言葉で質問し、回答を数値に置き換えるのがコツです。

大項目 業務の言葉での質問 置き換える指標
可用性 何曜日の何時から何時まで使いますか? 運用時間
可用性 止まったら、どれくらいで困りますか? 手作業で代わりはできますか? RTO、稼働率
可用性 何時間分の入力ならやり直せますか? RPO
可用性 一部の機能だけ先に戻すなら、どれですか? RLO
性能 何人が同時に使いますか? 月末や朝などの集中はありますか? 同時アクセス数、ピーク
性能 どの画面が何秒以内だと助かりますか? 応答時間(p95)
性能 データは毎年どれくらい増えますか? 何年分を残しますか? データ量、保存期間
運用・保守 障害の連絡は誰に、どの手段で、何分以内に必要ですか? 障害連絡の体制
運用・保守 夜間や休日の保守作業をしてもよいですか? 計画停止
移行 切り替えのために止められるのは、いつ何時間ですか? 移行時の停止時間
移行 今のデータは全部移しますか? 何件くらいですか? 移行データ量
セキュリティ 扱う情報で、外に出ると困るものは何ですか? 暗号化、アクセス制御
セキュリティ 誰がどの情報を見られる必要がありますか? 権限設計
セキュリティ 操作の記録は何年残す必要がありますか? ログ保存期間
環境 使う端末やブラウザ、社外から使う必要はありますか? 対応環境、接続経路

ヒアリング後の確認チェックリスト

チェック 確認すること
□ 6大項目すべてに、少なくとも1行の要件か「対象外」の記載がある
□ 稼働率に「運用時間内か」「計画停止を含むか」が書いてある
□ 応答時間に条件(同時アクセス数・データ件数・測定区間)が書いてある
□ 応答時間が平均ではなくパーセンタイルまたは順守率で書いてある
□ RPO と バックアップ間隔、RTO と 復旧手順が矛盾していない
□ 将来の伸び(利用者数・データ量)と期間が書いてある
□ すべての要件に測定方法と根拠がある
□ 対象外・保留の項目と、決める期限が書いてある

要件定義書・基本設計書・運用設計書との関係

非機能要件定義書は「何をどの水準で満たすか」を決める文書で、「どう実現するか」は基本設計書や運用設計書に引き継ぎます。 各文書の書き方は既存記事(「要件定義書の書き方」「基本設計書の書き方」「運用設計書の書き方」)で扱っているので、ここでは対応関係だけを整理します。

flowchart LR
    R[要件定義書<br/>機能要件+非機能要件の概要] --> N[非機能要件定義書<br/>目標値・測定方法・根拠]
    N --> B[基本設計書<br/>構成・冗長化・性能設計]
    N --> O[運用設計書<br/>監視・バックアップ・障害対応]
    N --> T[テスト計画<br/>性能テスト・障害試験]
非機能要件(例) 基本設計書で決めること 運用設計書で決めること 確認するテスト
稼働率 99.9% 冗長化の構成、切替方式 監視項目、障害時の手順 切替試験
RPO 1時間・RTO 4時間 バックアップ方式、復旧の仕組み バックアップ運用、復旧手順書 復旧訓練
p95 1秒以内 サーバー台数、キャッシュ、インデックス 性能の監視としきい値 負荷テスト
操作ログ1年保存 ログの出力先と形式 保管・削除の運用 ログ確認試験
移行停止12時間以内 移行ツール、データ変換 移行当日の体制 移行リハーサル

要件 ID(NFR-A-03 など)を設計書・テスト項目にも書いておくと、「どの要件を、どの設計で満たし、どのテストで確認したか」を追跡できます。

よくある抜けと直し方

よくある状態 起きること 直し方
「24時間365日稼働」だけ書く 保守のための停止ができず、費用が想定より大きくなる 運用時間・計画停止・稼働率を分けて書く
性能目標が平均値だけ 一部の遅いリクエストが見逃される p95・p99 または順守率で書く
将来の伸びがない 数年後に容量や性能が足りなくなる 利用者数・データ量の伸び率と年数を書く
移行の停止時間を決めていない 切替日程が直前まで決まらない 停止可能日時とリハーサル回数を書く
根拠がない 費用調整のときに値を下げてよいか判断できない 業務上の理由を根拠列に書く
セキュリティが「十分な対策」だけ 何を実装すればよいか決まらない 認証方式・暗号化・ログ保存期間を具体的に書く

よくある質問

Q. 非機能要求グレードの項目はすべて決める必要がありますか? A. すべてを同じ深さで決める必要はありません。 IPA の手順どおり、まず重要項目を決め、残りはモデルシステムの初期値を採用するか「対象外」と明記します。大切なのは、決めなかった項目も「決めていない」ことが文書でわかる状態にすることです。

Q. 非機能要件と非機能要求の違いは何ですか? A. 「要求」は利用者が望むこと、「要件」は合意して満たすと決めたことです。 ヒアリングで集めた要求を、費用や技術の制約と調整して、目標値と測定方法のある要件に落とし込みます。

Q. クラウドを使う場合も非機能要求グレードは使えますか? A. 使えます。 稼働率や RPO/RTO などの考え方は同じです。クラウド事業者が公開している稼働率(SLA)は部品ごとの値なので、上の計算例のように組み合わせた全体の値を確認し、運用設計で補う部分を決めます。

Q. 稼働率 99.99% はどのくらい難しいですか? A. 年間の停止許容は約52分で、計画停止を入れる余地がほとんどありません。 無停止での更新、複数拠点での冗長化、自動切替などが必要になり、構成と運用の費用が大きく変わります。まず業務上必要な運用時間と RTO から逆算して決めるのがおすすめです。

まとめ

  • 非機能要件は「どれくらいの品質で動くか」を決める要件で、IPA 非機能要求グレード2018の6大項目・35中項目で漏れなく確認できる
  • まずモデルシステム3種から近いものを選び、重要項目のレベルを調整する。正式な初期値は IPA のグレード表で確認する
  • 稼働率は停止時間に換算して合意する。99.9% は年約8時間45分、99.99% は年約52分
  • 応答時間は平均ではなくパーセンタイル(p95・p99)や順守率で書くと、遅いリクエストを見逃さない
  • 定義書は「項目・目標値・測定方法・根拠」の4点セットで書き、要件 ID で設計とテストにつなぐ
  • ヒアリングは業務の言葉で聞いて数値に置き換えると、利用者も答えやすい

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「非機能要件一覧|IPA非機能要求グレード6大項目と定義書テンプレート」

株式会社RJCでは、品質を数字で語れるシステムづくりを仲間と学び合っています。こうした知識を共有しながら、日々技術を磨いています。

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?