Open4

【ビジネス/PM/PdM】要件定義(機能要件/非機能要件)について📝

まさぴょん🐱まさぴょん🐱

要件定義について

要件定義とは、システムやソフトウェアを開発するうえで「どのような機能を実装し、どのような条件を満たすべきか」を明確化する工程のことです。
具体的には、以下のような内容を整理・合意します。

  • 業務要件・目的: そもそもどのような業務課題を解決するためにシステムを導入するのか
  • 機能要件: システムが提供すべき具体的な機能(入力、処理、出力、画面仕様など)
  • 非機能要件: パフォーマンス、セキュリティ、可用性、拡張性、運用・保守など、機能以外の品質に関する要件
  • 制約条件: プロジェクトの予算・納期、既存システムとの連携、法規制などの外部条件
  • 想定ユーザーと利用シーン: システムを利用するユーザーの属性や操作シナリオ

これらの要件を正確かつ漏れなく整理することで、開発後の手戻りや誤解、追加工数を減らし、プロジェクトをスムーズに進行させることができます。

要件定義で活用できるプロンプト例

以下に、要件定義の初期段階で関係者やチーム内で検討を深めるために活用できるチャットツール向けのプロンプト例を示します。
※GPT系などのAIに投げかけたり、ワークショップのファシリテーションに使ったりすることを想定しています。

プロンプト例:要件の整理・検討

以下の点を踏まえて、新しく開発するシステムの要件を整理してください。

1. 業務上の目的と課題
   - このシステムによって解決したい課題や実現したいことは何ですか?
   - 現状のフローやシステムで問題になっている点を整理してください。

2. 利用者(ユーザー)と利用シーン
   - 想定ユーザーの属性や役職、利用頻度はどのようなものですか?
   - ユーザーがシステムを利用する具体的なシナリオや時間帯、場所などがあれば教えてください。

3. 機能要件
   - 必須機能とオプション機能を分類しながら洗い出してください。
   - データの入力方法・処理内容・出力形式について、具体的に示してください。

4. 非機能要件
   - パフォーマンス(同時接続数やレスポンスタイムなど)の目標値はありますか?
   - セキュリティ(アクセス制限、データ保護など)の要求事項を洗い出してください。
   - 運用・保守に関わる要件(稼働時間、障害対応など)を示してください。

5. 制約条件・連携
   - プロジェクトの予算や納期に関する要件はありますか?
   - 既存システムとの連携や外部サービスの利用可否についての要望はありますか?
   - 関連する法規制、業務規定、セキュリティポリシーがあれば教えてください。

6. リスクと想定される対策
   - 開発・導入にあたって予想されるリスクと影響範囲は何ですか?
   - そのリスクを回避・最小化するために考えられる対策を示してください。

なお、上記の要件を優先順位(MUST / SHOULD / COULD など)やフェーズで区分しながら整理してもらえると助かります。

使い方のポイント

  1. 関係者全員の合意形成

    • 上記プロンプトを活用し、開発担当者・ユーザー・経営層など、プロジェクトに関わるステークホルダー全員が同じ認識を持てるようにします。
  2. 「なぜ必要か」の観点を忘れない

    • とくに機能要件や非機能要件については、「なぜその要件が必要なのか」を明らかにし、業務目的との対応関係を確認しましょう。
  3. 継続的な更新・修正

    • 要件は最初から完璧にはまとまりません。開発の進捗や検討を深める中で変更や追加が出ることは自然なため、継続的にブラッシュアップしながら合意を取っていくことが重要です。

上記のプロンプトを用いることで、要件定義段階の情報整理と認識合わせを効果的に進めることができます。
システム開発だけでなく、業務フローやUI設計など、幅広い分野の要件整理にも応用できます。

まさぴょん🐱まさぴょん🐱

機能要件と、非機能要件について📝

システム開発を行う際、要件は大きく「機能要件」と「非機能要件」に分けられます。
ここでは、それぞれが何を意味し、どのようなポイントに着目すべきかを整理して解説します。

機能要件とは

機能要件は、システムが「どのような機能を提供し、何ができるようになるか」を具体的に定義した要件のことです。

  • 入力: システムが取り扱うデータや操作の内容、入力方法(例:フォーム入力、ファイルアップロードなど)
  • 処理: 入力されたデータがどのように処理・計算・検索・分析されるか(例:自動計算、ワークフロー承認、在庫管理)
  • 出力: 処理後にユーザーや他システムにどのような形式で情報を提示するか(例:帳票の出力、画面表示、APIレスポンスなど)

例:機能要件の例

  • ユーザ登録機能: ユーザが必要情報を入力してアカウントを作成できる
  • 検索機能: 登録されたデータを指定条件で検索できる
  • レポート出力機能: 日次レポートをPDF形式で出力し、ダウンロードできる
  • 通知機能: 期限切れが近いタスクをメールやプッシュ通知で知らせる

システムの「振る舞い」を定義する要件なので、要件漏れが発生しやすい点に注意が必要です。ユーザーの実際の業務フローや操作シナリオを洗い出しながら、確認・検討を行うとスムーズです。


非機能要件とは

非機能要件は、システムが動作するうえでの品質・制約・運用など、機能以外の特性を定義する要件のことです。主に以下の観点に分けて考えることが多いです。

1. パフォーマンス (Performance)

  • 応答速度(レスポンスタイム): 画面表示や処理完了までの時間
  • 同時接続数(スループット): 一度に何人、またはどのくらいのトランザクションを処理できるか

例)ピーク時でも1秒以内の応答を保証する / 1時間に1万件の注文データを処理可能

2. 可用性 (Availability)

  • 稼働時間: 24時間365日稼働が必要か、営業時間内だけでよいか
  • 障害対応: 障害発生時の復旧手順、復旧目標時間(RTO)、データの復旧目標時点(RPO)の定義

例)障害発生後30分以内の復旧 / 主要データは分散してリアルタイムにバックアップ

3. セキュリティ (Security)

  • 認証・認可: ログイン機能、アクセス権限の設定
  • データ保護: 暗号化、マスク処理、個人情報保護対応
  • 監査ログ: 誰がいつ何をしたかを追跡できるようにするログの取得や保管

例)個人情報はAES暗号化して保管 / 全アクセスを監査ログとして保存

4. 運用・保守 (Operation & Maintenance)

  • 運用手順: 定期的なジョブスケジュールや監視、障害通知の仕組み
  • 監視体制: システムの負荷や障害をモニタリングし、異常を検知したら通知する
  • アップデート方針: バグ修正や新機能リリースの際の手順・影響範囲の定義

例)月次でソフトウェアをバージョンアップ / 障害発生時には自動的に管理者へメール送信

5. 移行性・拡張性 (Scalability, Portability)

  • 拡張性: ユーザー数増加や機能追加に対応できる設計・インフラ構成
  • 移行性: 将来的に別のプラットフォームや新環境に移行しやすい構造か

例)サーバー負荷が増えた際に簡単にスケールアウトできるようにする

6. ユーザビリティ (Usability)

  • 操作性: 直感的に操作できるUI/UXデザイン
  • アクセシビリティ: 色覚障害や聴覚障害など、さまざまな利用者に対応した設計

例)WCAG(ウェブコンテンツアクセシビリティガイドライン)を満たすUI設計

7. リスク・法規制・コンプライアンス

  • 法律・規制対応: 個人情報保護法、マイナンバー法、業種ごとの法律対応
  • ライセンス管理: OSS利用やソフトウェアのライセンス形態の管理方法

例)個人情報取り扱いガイドラインに準拠 / OSSライセンスの遵守


機能要件と非機能要件の関係

  1. 機能要件が達成すべき業務・サービスの目的を明確化する
  2. 非機能要件を満たしながら機能を実装することで、ユーザーが安心して利用できるシステムとなる

システムは「どのように振る舞うか(機能要件)」だけでなく、「どのような品質で提供するか(非機能要件)」を同時に満たす必要があります。両者のバランスを取りながら、要件を整理・優先度付けすることが大切です。

まとめ

  • 機能要件: システムが提供すべき機能(入力・処理・出力など)を明確化する要件
  • 非機能要件: 機能以外の品質や制約(パフォーマンス、セキュリティ、可用性など)を定義する要件

開発の初期段階で両方の要件を漏れなく整理し、ステークホルダー全員で合意を取ることが、プロジェクト成功の鍵となります。
どちらかだけに偏らず、「何を実現するか」と「どのような品質で提供するか」の両輪をきちんと定義することが重要です。

まさぴょん🐱まさぴょん🐱

機能要件/非機能要件について整理📝

要件には主に機能要件非機能要件の2種類があります。それぞれの定義と特徴について整理します。

機能要件

機能要件は、システムが提供すべき具体的な機能や動作を定義します。これは、ユーザーがシステムを通じて達成したい目標を実現するために必要な要件です。
具体的には、以下のような内容が含まれます。

  • システムの機能: 例えば、データの登録、更新、削除、検索など。
  • ユーザーインターフェース: ユーザーがどのようにシステムと対話するかに関する要件。
  • ビジネスルール: システムが遵守すべき業務上のルールや条件。

機能要件は、クライアントからのヒアリングを通じて明確に定義されることが多く、システムの基本的な動作を保証するために不可欠です。

非機能要件

非機能要件は、システムの「機能」以外の要件を指し、システムの品質や性能に関連するものです。具体的には以下のような項目が含まれます。

  • 性能: システムがどれだけ迅速に処理を行えるか(例: レスポンスタイム)。
  • 可用性: システムがどれだけの時間稼働しているか(例: 稼働率)。
  • セキュリティ: データの保護や不正アクセスの防止に関する要件。
  • 拡張性: システムが将来的にどれだけ容易に拡張できるか。
  • ユーザビリティ: ユーザーがシステムをどれだけ使いやすいと感じるか。

非機能要件は、システムの全体的な品質を保証するために重要であり、これが満たされないとユーザーの満足度が低下する可能性があります。

まとめ

機能要件は「システムが何をするか」に焦点を当て、非機能要件は「システムがどのように機能するか」に焦点を当てています。両者はシステム開発において同等に重要であり、適切に定義されることで、ユーザーの期待に応えるシステムを構築することが可能になります。

まさぴょん🐱まさぴょん🐱

要件(機能要件/非機能要件)について整理する📝

1. 要件定義とは?

項目 目的 具体的な成果物
機能要件 (Functional Requirements) ユーザや外部システムが「何を出来るか」を決める。 ユースケース図/ユーザーストーリー/画面遷移・ API 仕様書
非機能要件 (Non-Functional Requirements) 「どのように」機能を提供するかを定義する品質特性・制約。 SLA・性能指標・セキュリティポリシー・運用手順書

2. 機能要件の主な分類と記述例

分類 概要 例(Webアプリの認証機能の場合)
ビジネス機能 業務目的を実現する中核の振る舞い。 ユーザはメールアドレスとパスワードでサインアップ/ログインできる。
データ管理 CRUD・整合性・履歴など。 パスワードは Bcrypt10 以上でハッシュ化し DB に保存する。
外部連携 API やサードパーティとの I/F。 Google OAuth2 によるソーシャルログインを選択可能。
例外/エラーハンドリング 異常時の振る舞い。 認証失敗時は HTTP 401 を返却し、メッセージを i18n で切替。
運用管理 管理者 UI/メトリクス/ログ。 失敗ログイン 5 回でアカウントを 30 分ロックし、Slack に通知。

3. 非機能要件の主なカテゴリと目標値サンプル

カテゴリ 代表的な指標・観点 例(目標値・ガイドライン)
性能/スケーラビリティ レスポンスタイム, 同時接続数, スループット 95% が 200 ms 以内/1 万 req/min を水平スケールで処理
可用性 稼働率, バックアップ 月次稼働率 99.9 %/RPO 5 分・RTO 15 分
セキュリティ 認証・認可, データ暗号化, 脆弱性対策 OWASP ASVS Level 2 準拠/TLS1.3 強制/CSP 設定
保守性 コード品質, テスト, CI/CD 単体テストカバレッジ 80 %以上/自動デプロイ < 10 分
ユーザビリティ アクセシビリティ, 国際化 WCAG2.1 AA 対応/日本語・英語 UI 切替
監視・運用 ログ, アラート, SNS 対応 SLO 違反時 PagerDuty 発報/OpenTelemetry で分散トレース
法令・契約 GDPR, 個人情報保護, ライセンス EU 住民データは EU リージョン内に保管/MIT ライブラリのみ利用

4. 機能要件と非機能要件を分けるコツ

  1. アクター視点で「必要か/品質か」を切り分ける

    • その要件が「ユーザ操作として観測できる振る舞い」なら機能要件。
    • 同じ挙動でも「品質水準」であれば非機能要件。
  2. 一文に 1 つの観点
    「ユーザ登録フォームは 100 ms 以内に応答し、TLS で暗号化する」
    機能性能 を分割して記述する。

  3. SMART 原則で定量化
    Non-Functional は どこで測定し、違反時に誰が対応するか を決めておく。


5. 実務での整理フロー(例)

  1. スコープ定義
    ビジネスゴール → UX ジャーニー → 大まかな機能ブロック
  2. ユーザーストーリー化
    INVEST で粒度調整しバックログ化。
  3. 品質特性ワークショップ
    ISO/IEC 25010 を土台に利害関係者と重み付け。
  4. 要求仕様書/チケット化
    機能:Given-When-Then、AC(受入条件)
    非機能:SLO 観点/監査ログ要件などを Definition of Done に含める。
  5. 追跡・検証
    テストケース、監視ダッシュボード、レビューで継続的に担保。

まとめ

  • 機能要件は「何を実現するか」、非機能要件は「どのように実現するか」という品質・制約。
  • どちらも 定量化検証方法 をセットで記述すると漏れが防げます。
  • 認証機能のようにセキュリティが中心の領域では、非機能要件(暗号化方式、ログ保管期間など)がプロジェクトリスクを大きく左右するので、早期に合意を取りましょう。