ビジネスサイドのための IT 用語集/開発手法・プロセス

非機能要件とは

ひきのうようけん / NFR

システムに求める条件のうち、停止しにくさ、速さ、安全さ、保守のしやすさなど機能以外の水準を定めたものです。水準を引き上げるほど費用が大きく増加するため、業務への影響から必要な分だけを定めます。

非機能要件

非機能要件とは

システムに求める条件のうち、何ができるかではなく、どれだけ停止せず、速く、安全に稼働し続けるかを定めたものです。受注を登録できる、請求書を発行できるといった条件が機能要件にあたります。障害で停止したら何時間で復旧させるか、繁忙期に何人が同時に利用しても画面が3秒以内に表示されるか、ログを何年保存するかといった条件が非機能要件にあたります。英語の頭文字からNFR(Non-Functional Requirements)とも呼びます。発注側の希望の段階を非機能要求、合意して仕様に組み込んだものを非機能要件と呼び分けることもありますが、実務ではほぼ同じ意味で使用されます。システムに求めることを発注側と開発側が定める要件定義の工程で、機能要件と並べて定めます。

自動車の例では乗車定員や荷室の広さが機能要件で、衝突時の安全性、燃費、故障の少なさ、整備のしやすさが非機能要件にあたります。定員はカタログを確認すれば分かりますが、衝突時の安全性は実際に衝突するまで差が分かりません。しかも購入後に追加することはほとんどできません。

なぜ定めておく必要があるか

システムの要件を定める場では、画面や業務の流れの話が中心になります。非機能要件は言葉にされないまま進行しやすいです。発注側は停止しないのが当然と想定し、開発側は見積もりに収まる水準で構築します。このずれが発覚するのは稼働した後で、月末に画面が応答しなくなる、障害からの復旧に丸1日かかる、といった形で発生します。改修するにはサーバーの構成から変更する必要があり、機能を1つ追加するよりはるかに費用がかかります。

この問題に対して、IPA(情報処理推進機構)は非機能要求グレードという枠組みを公開しました。非機能要件を6つの大項目に分類し、項目ごとに水準を段階で選択できるようにしたもので、発注側と開発側が同じ項目表を参照して水準を合意するために作成されました。水準は一般にレベルが上がるほど開発費が増加する区切りで設けられています。最終版は2018年版で、IPAの事業は終了し、資料はアーカイブとして公開が続いています。更新は停止していますが、項目の網羅性から今も発注側と開発側の共通の項目表として利用されています。国際規格にはソフトウェアの品質特性を定めたISO/IEC 25010もあります。

6つの項目と発注側が検討すること

非機能要求グレードの6つの大項目を、発注側が定める内容に整理すると次の表のとおりです。

項目 発注側が検討すること
可用性 利用する時間帯、停止したときに何時間で復旧させるか、災害時にどこまで復旧させるか
性能・拡張性 同時に利用する人数、ピーク時の処理件数、画面が表示されるまでの待ち時間、今後の増加の見込み
運用・保守性 監視する時間帯、障害の連絡を誰が何時まで受け付けるか、バックアップを何世代保持するか
移行性 旧システムからどのデータをいつまでに移すか、新旧を並行稼働させる期間
セキュリティ 管理する情報の重要度、利用できる人の範囲、操作の記録を保存する期間
システム環境・エコロジー 設置場所や利用する地域、守るべき規格などの制約。多くは開発側の提案を確認すれば足りる

どの項目も業務への影響から逆算して定めます。ただしログの保存期間や個人情報の安全管理のように、法令や業界のガイドラインで下限が定められている項目もあり、業務への影響とは別に確認します。技術の知識がなくても回答できる問いがほとんどで、答えを技術の言葉に変換するのは開発側が担います。

効果

  • 見積もりの前提がそろい、複数社の見積もりを同じ条件で比較できる
  • 稼働後に性能不足や復旧の遅さが判明して再構築する事態が減少する
  • 水準を下げてよい項目を明示でき、不要な費用を削減できる
  • 障害時の連絡先や復旧の手順が稼働前に確定し、停止したときの初動が迅速になる

コストとリスク

  • 水準を引き上げるほど費用は加速して増加する。Googleのサイト信頼性エンジニアリングの解説書には、信頼性を一段引き上げる費用が前の一段の100倍になることもあるとある
    • 停止しにくくするにはサーバーやデータベースを二重化し、障害時に自動で切り替える仕組みが必要になる。インフラ費は二重化した分だけ増加する
    • 夜間や休日も障害に対応するには、交代で待機する担当者が必要になり、人件費が毎月かかり続ける
  • 細かい指標まで数えると200を超えるため、全部を詰めると要件定義が長期化する
  • 水準を高く設定しすぎると見積もりが増大し、低く設定しすぎると稼働後の作り直しを招く
  • 合意した水準を満たすかは本番前の負荷試験と、障害時の切り替えやバックアップからの復元の訓練で確認する。開発とは別に工数がかかり、省略すると稼働後に初めて不足が判明する
  • 稼働後も水準を守れているかを測定する監視と定期的な報告の運用が続く
  • 利用者数や業務が変化すると、当初の前提と実態が一致しなくなる。稼働後も年に1回程度は水準を再検討する手間がかかる

よくある誤解

クラウドを利用すれば停止しないし安全になる

クラウド事業者が責任を担うのは、データセンターやサーバーなどの基盤までです。AWS(Amazon Web Services)も責任共有モデルの中で、アプリケーション、データの保護、アクセス権限の設定は利用者側の責任だと明示しています。仮想サーバーを借りる使い方なら、OSの更新も利用者側が担います。クラウド事業者がSLA(Service Level Agreement)で示す稼働率は個々のサービス単体の数字で、その上に構築したシステム全体の稼働率ではありません。

SLAを結べば非機能要件は定めなくてよい

SLAに記載できるのは定めた水準のうち、稼働率や問合せへの応答時間のように測定できるものだけです。非機能要件が先に確定していないと、SLAに記載する数字も決定できません。しかも違反したときの補償は、多くの場合次の請求から利用料の一部を差し引く扱いで、停止した間の売上の損失は補償されません。

稼働率は100%に近いほどよい

100%は実現できず、近づけるほど費用だけが急に増加します。利用者の通信環境や端末のほうが先に停止するため、一定の水準を超えると利用者には違いが分かりません。必要な水準を満たしたらそれ以上は引き上げないことも選択肢の1つです。

判断の問い

稼働率や障害からの復旧時間は、どこまで求めればよいか?

停止したときの損失と、水準を引き上げる費用を比較して決定します。社内で利用する業務システムの多くは営業時間中に利用できればよく、障害が発生しても当日中から翌営業日までに復旧すれば業務が成り立ちます。24時間止めない、数分で切り替えるといった水準が必要になるのは、停止すると売上や顧客対応がその場で停滞するシステムに限られます。EC(Electronic Commerce)サイトの注文や決済、取引先と自動でつながる受発注が当てはまります。

稼働率は年間の停止時間に換算すると実感しやすいです。99%は年に約3.7日、99.9%は約9時間、99.99%は約53分の停止にあたります。同じ99.9%でも計画的なメンテナンスの停止を含むか、月ごとに測定するか年で測定するかで意味が異なります。何を停止と数えるかも数字と一緒に定めます。開発会社の提案に99.99%が示されることもあり、IPAの非機能要求グレードの解説資料も、取引先や顧客に影響が及ぶ基幹システムのモデルに99.99%を例示しています。社内だけで利用するシステムにそのまま当てはめると過剰になりやすいです。停止してよい時間帯と、1回の停止を何時間まで手作業で対応できるかを業務の担当者に確認して、数字を定めます。

クラウドの仮想サーバー1台で稼働させる構成では、AWSが保証する稼働率は99.5%にとどまります。99.9%を求める段階から、サーバーを複数のデータセンターに分散して配置する冗長構成が必要になります。99.99%ではさらに自動の切り替えと、夜間も含めた監視と待機の体制まで必要になります。目安として99.9%から99.99%に引き上げれば、インフラ費と運用費の合計が数割増しから倍以上に増加します。

非機能要件は開発会社に一任してよいか。発注側は何を決定すればよいか?

水準を決定するのは発注側で、開発会社に一任してよいのは実現方法と費用の見積もりまでです。停止したときに業務がどれだけ支障を受けるか、どの情報が漏えいすると何が発生するかは、発注側にしか分かりません。

  • 利用する時間帯と、1回の停止で許せる長さ
  • 障害や災害から復旧するとき、何時間前の状態まで復元できればよいか、失ってよいデータの範囲
  • ピーク時に同時に利用する人数と処理件数の、現在と3〜5年後の見込み
  • 管理する情報の重要度と、漏えいしたときの影響

提案書では停止してから復旧するまでの目標時間をRTO(Recovery Time Objective)と記載します。どの時点の状態まで復元するかはRPO(Recovery Point Objective)と記載します。開発会社には非機能要求グレードの項目に沿って各項目の水準を提示してもらいます。主な項目は水準を1段上下させたときの費用差も算出してもらいます。水準を開発会社の判断に一任すると、開発会社は自社の標準の構成で見積もるため、提案が過剰か不足のどちらかに偏ります。

SaaS(Software as a Service)をそのまま利用する導入では、水準は提供元が定めていて利用者は変更できません。公開されているSLAと、データの保管場所や暗号化の方針を参照して、業務に十分かを確認すれば済みます。本物の顧客データを使用しない社内向けの試作も、ここまで詰める必要はありません。

見積もりが高い。非機能要件のどこを下げれば費用を抑えられるか?

まず機能ごとに水準を区分します。停止すると業務に支障が出る機能だけ水準を引き上げ、社内の集計や管理画面は低く抑えます。下げやすいのは夜間と休日の障害対応の時間帯、社内向け機能の復旧時間、将来の利用者増に備えて上乗せする処理能力の3つです。クラウドで運用するならサーバーの台数を増やす増強は利用者が増加してから行っても間に合うことが多いです。ただしデータベースを分割するか、二重化するかといった構成は後から変更しにくく、ここは最初に決定しておきます。

下げてはいけないのはセキュリティとバックアップです。情報漏えいとデータの消失は、後から費用をかけても回復できません。確認すべき点はバックアップを別の場所に保管しているかと、実際に復元できるかを試したことがあるかです。費用を削減する場面でも確認しておきます。

夜間と休日の対応を廃止すると、その時間に発生した障害は翌営業日まで放置されます。その間に停止していてよい業務かを、利用部門と合意してから下げます。

公開日
2026.10.21
更新日
2026.10.21

お問合せ

事業の課題や技術的な悩みなどどんなことでもお聞かせください

お問合せ