TRACERY Lab.(トレラボ)

TRACERY開発チームが、要件定義を中心として、システム開発で役立つ考え方や手法を紹介します。

要件定義のプロセスと成果物を体系的に理解する【全体像まとめ】

シリーズ: 要件定義とはそもそも何か

TRACERYプロダクトマネージャーの haru です。

要件定義を成功させるためには、プロセス全体を見渡して理解することが重要です。

どのような情報を集め、どのような成果物を用意すべきかを明確にすることで、作業の抜け漏れを防ぎつつ、要件定義を入出力の観点で一貫して管理できます。

これにより、進捗や成果を数値や成果物で客観的に確認でき、関係者間の認識を揃えながらプロセス全体を確実にコントロールできるようになります。

本記事では、「要件定義とはそもそも何か」シリーズで解説してきた内容を整理し直し、要件定義プロセスの流れと成果物の位置づけを体系的に紹介します。

要件定義の流れ、全体像

下図に、本連載で説明してきた要件定義の流れを示します。

要件定義全体の流れ

本連載では、説明をわかりやすくするために、既存システムがすでに稼働しており、その機能追加や改修を行う場合を対象としています。

なお、本連載では扱いませんでしたが、システムを新規に構築する場合には、ステークホルダーや業務構成を一覧化し、外部システムを含めた全体像を明確に整理することから始めるとよいでしょう。

以降で、本連載で紹介した要件定義の流れを順に説明します。

要望から要件へ。事業・業務・システムで全体像を整理する

システム開発では、まずステークホルダーから要望をヒアリングします。

得られた内容は整理・統合し、要求として構造化します。

この際、事業・業務・システムの3階層でツリー状に整理すると、抜け漏れが少なく全体像を把握しやすくなります。

ここまでの流れを「企画プロセス」と呼びます。企画プロセスでは、関係者の要望を集め、開発の出発点となる要求を整理することが目的です。

次に、この要求をインプットとして進める「要件定義プロセス」では、構造化された要求に優先順位を付け、実現可能かどうかを検討したうえで、開発対象として合意したものを要件とします。

要望から要件へ。事業・業務・システムで全体像を整理する

詳しくは、以下の記事をご参照ください。

tracery.jp

tracery.jp

業務フロー図の作成〜ユースケース抽出

要件定義のゴールは、「設計プロセスを円滑に進めるための明確で具体的なインプットを提供すること」です。*1

そのために最低限作成すべき要件定義の成果物は、次の3つです。

  • 開発品目(画面、API、バッチ処理など)の一覧
  • 各開発品目に対応するシステムの機能要件
  • セキュリティ、性能、信頼性、可用性などの非機能要件の定義

これらを導き出す最初のステップが、業務プロセスを構想し、可視化する業務フロー図の作成です。

事業要件と業務要件を基に、業務フロー図を作成します。

業務フロー図を描くことで、事業要件や業務要件を満たすための、利用者の行動やシステム利用の流れが明確になり、そこからシステムのユースケースを抽出できます(下図)。

抽出されたユースケースは、三層構造におけるシステム要件に対応します。

業務フロー図の作成〜ユースケース抽出

詳しくは、以下の記事をご参照ください。

tracery.jp

ユースケースをロバストネス図で詳細化し、開発品目一覧作成、非機能要件の抽出

ユースケースを起点に、ロバストネス図を用いてシステムを構成する要素(UI、機能、データなど)を抽出します。

この要素分解を進める過程では、処理性能や運用条件などの実現性も検討され、その結果として非機能要件が明確になります。

これらも併せて整理・リスト化します。

ユースケースをロバストネス図で詳細化し、開発品目一覧作成、非機能要件の抽出

詳しくは、以下の記事をご参照ください。

tracery.jp

概念モデル、システム構成図の作成

前節までに、要件定義で最低限作成すべき成果物が明示されています。

  • 開発品目(画面、API、バッチ処理など)の一覧
  • 各開発品目に対応するシステムの機能要件
  • セキュリティ、性能、信頼性、可用性などの非機能要件の定義

これらが揃えば設計は始められますが、必要最低限の情報にすぎません。

設計をよりスムーズかつ精度高く進めるには、概念モデルシステム構成図を準備することが効果的です。

これらを整備することで、システムの構造や関係性が具体的に可視化され、関係者が同じ理解を持てるようになります。

その結果、要件の解釈違いや設計段階での手戻りを大幅に減らし、開発全体を効率的に進められます。

概念モデル、システム構成図の作成

詳しくは、以下の記事をご参照ください。

tracery.jp

まとめ

本記事では、要件定義の全体像を整理しました。

要件定義の最低限の成果物は、開発品目一覧、機能要件、非機能要件の3点です。

これらを導き出すための出発点は、事業要件・業務要件を満たす業務プロセスを構想し、業務フロー図を作成することにあります。

業務フロー図に示されたアクションからユースケースを抽出し、さらにロバストネス図で詳細化することで、開発品目をリストアップできます。

加えて、設計や見積りの精度を高めるには、概念モデルやシステム構成図の整備が有効です。

これによりシステム像が明確になり、開発全体の効率性と信頼性が大きく向上します。

次回の記事では、要件定義プロセスと設計プロセスのつながりを整理し、両者の関係性を全体像として解説します。

tracery.jp

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

移行要件とは何か

シリーズ: 要件定義とはそもそも何か

TRACERYプロダクトマネージャーの haru です。

事業・業務・システムの3階層で要件を捉える - TRACERY Lab.(トレラボ)では、事業要件・業務要件・システム要件という3階層を紹介しました。

これらに加えて、システム開発では「移行要件」と呼ばれる重要な要件があります。

具体的には、システムや機能をリリースするまでの、データ移行やユーザー教育、移行期間中の暫定運用手順などに関する要件が該当します。

本記事では、この移行要件について説明します。

移行要件とは

移行要件とは、現在の状態(As-Is)から将来の状態(To-Be)へ移行する際に必要となる要件で、 BABOK(Business Analysis Body of Knowledge:ビジネスアナリシス知識体系) に定義されています*1

移行要件は、以下のような性質を持ちます。

  • 現在の状態から将来の状態に円滑に移行するための要求
  • 一時的な性質を持ち、移行が完了した段階で不要になる

移行要件の内容

移行要件は、主に次の三つに分類できます。

  • データ移行:旧システムのデータを欠損や不整合なく新システムに移し、業務に必要な情報が正確かつ最新の状態で利用可能になることを求める要件。
  • 事業継続:移行期間中および移行直後も重要業務を中断させず、合意したサービス水準を維持できる状態を保証する要件。
  • 教育訓練:新システムを利用する全関係者が稼働開始時点で必要な知識と操作スキルを習得し、業務を滞りなく遂行できる状態にあることを求める要件。

以下で、それぞれの内容を説明します。

データ移行

データ移行では、旧システムから新システムへ情報を確実に引き継ぐために、品質の確保や最新データの反映、セキュリティと法令遵守など多方面の要件を満たす必要があります。以下に、その主要な観点を示します。

1. データ品質

  • 完全性:旧システムに存在する移行対象データが欠損なくすべて移行されていること。
  • 正確性:移行後のデータ値が業務上許容できる誤差範囲内で正確であること。
  • 整合性:参照整合性や主従関係など、データ構造上の一貫性が保持されていること。

2. タイムリーな反映

  • 最新性:移行直前までに発生した更新内容が反映されていること。
  • 業務開始可能性:移行完了後、予定どおり新システムで業務が開始できる状態であること。

3. セキュリティ・法令遵守

  • 情報保護:移行作業中も個人情報や機密データが適切に保護され、関連法規(例:個人情報保護法)を遵守していること。
  • 可監査性:移行の過程や結果が監査可能であり、誰がいつ何を移行したかを追跡できること。

4. 業務継続性

  • 影響最小化:移行による通常業務の停止時間や影響が、事前に合意した範囲内に収まること。
  • 復旧可能性:移行失敗時に業務を継続できるよう、復旧手順が確立されていること。

5. 検証基準

  • 移行完了判定:件数一致、ハッシュ値比較など、移行完了を客観的に確認できる検証基準が明確であること。

事業継続

システム移行では、切り替え中や稼働直後も重要業務をなるべく止めないことが求められます。以下に、その主要な観点を示します。

1. 重要業務と復旧目標

  • 停止が許されない重要業務が特定され、優先順位が明示されていること。
  • 各業務の復旧目標時間内に収まること。
  • 復旧後に最低限必要なシステム機能・データが利用可能な状態であること。

2. 継続体制と責任範囲

  • システム障害時に事業を継続するための体制の確立。
  • 緊急時の意思決定者とその代理者、連絡経路およびエスカレーションルート。

3. 移行期間特有の継続条件

  • 移行作業中であっても、特定した重要業務が合意したサービス水準を維持できること。
  • 移行に伴う一時的リスク(例:データ同期遅延、システム切替時間)に対して、事業停止を回避できること。
  • 外部システムやサービスへの依存事項が洗い出され、それに起因する中断リスクが許容範囲内であること。

4. 移行後初期稼働の継続基準

  • 新システム稼働直後に必要な監視・初期対応体制が整備され、初期フェーズでも事業継続が保証されていること。
  • 稼働直後に発生し得る障害や性能劣化に対応する初期運用基準。

5. 検証と正式承認

  • 上記要件が移行完了前に検証され、事業継続が可能であると判断する明確な承認基準の設定。
  • 検証結果と承認記録が監査可能な形で保存されていること。

教育訓練

システム移行では、稼働開始時に利用者が必要な知識と操作スキルを備えていることが欠かせません。以下に、その主要な観点を示します。

1. 対象と範囲

  • 新システムを運用・利用するために必要な知識や操作スキルを習得すべき対象者(業務担当者、管理者など)が特定されていること。
  • 役割ごとに習得が必要な教育内容と学習範囲が明確に定義されていること。

2. 学習成果と到達基準

  • 受講者が稼働開始後に業務を支障なく遂行できるレベルの知識・操作スキルを習得していること。
  • 習得状況を客観的に判定できる基準(理解度評価、操作精度など)が明示されていること。

3. 実施時期と完了条件

  • 必要な教育訓練がシステム稼働開始までに完了していること。
  • 初期運用に影響を与えない適切な時期に教育が実施されていること。

まとめ

システム開発では、事業要件・業務要件・システム要件に加え、現行環境から新環境へ確実に移行するための移行要件を明確にすることが不可欠です。

BABOK が示すとおり移行要件は一時的な性質を持ち、データ移行・事業継続・教育訓練という三つの視点を押さえることで、切り替え時のリスクを抑えられます。

移行要件を要件定義の関係者間で共有しておけば、移行期の混乱を防ぎ、システム稼働後の安定運用へと着実につなげられます。

次回は、本連載「要件定義とはそもそも何か」の総まとめとして、これまでの内容を整理しながら要件定義プロセスの全体像を解説します。

tracery.jp

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

*1:BABOKでは「移行要求」という名前で定義されている。

要件定義を学ぶ人におすすめの書籍まとめ

シリーズ: 要件定義とはそもそも何か

TRACERYプロダクトマネージャーの haru です。

要件定義や要求に関する書籍は数多く出版されていますが、専門的で内容が難しく、読みこなすのは簡単ではありません。

そこで本記事では、私が実際に読み、要件定義の理解を深めるうえで実務にも役立つと感じた書籍を厳選して紹介します。

要件定義の入門

はじめよう!要件定義〜ビギナーからベテランまで

要件とは何か」「要件定義とは何か」「機能とは何か」、そしてそもそも「仕事とは何か」という基本概念を平易な言葉で噛み砕き、初学者にもわかりやすく解説しています。

要件定義は業務要件定義とシステム要件定義に大別されますが*1、本書はシステム要件定義に重点を置いています。

機能」「UI」「データ」を軸に、現場でそのまま活用できる要件定義の進め方を具体的に示しています。

入門書として位置づけられていますが、サブタイトルにある「ビギナーからベテランまで」の言葉どおり、後半の準備編・助走編・離陸編まで読み進めれば、要件定義プロセスを体系的に理解でき、経験者にとっても知識をさらに深められる一冊です。

はじめよう!プロセス設計〜要件定義その前に

前述の『はじめよう! 要件定義 ~ビギナーからベテランまで』がシステム要件定義に重点を置いているのに対し、本書は業務要件定義に主眼を置いています。

本書の業務要件定義の核心となるのは、業務プロセスの設計です。本書は、プロセス設計の具体例を示しながら理解しやすく解説しています。

本書からは「業務プロセスを組み立てるには、仕事そのものを深く理解することが不可欠である」というメッセージが伝わってきます。

中級者向け

ソフトウェア要求第3版

第1部 ソフトウェア要求:だれが、何を、何のためにするのか」では、ソフトウェア要求を理解するための基本的な考え方を体系立てて解説しています。

特に、要求の階層構造(レベル)や種類良い要求を作るためのプラクティス、そして要求に関して顧客が持つ権利と責任などについて、丁寧に解説しています。

第2部 要求開発」では、「1枚の絵は1024の語に値する」という言葉の通り、要求を多角的にモデル化し図として表現する手法を詳しく解説しています。

さまざまな観点から要求を図示する具体例が紹介されており、要件を視覚的に整理したい読者にとって参考になります。

著者Karl Wiegersは2023年に新著「Software Requirements Essentials: Core Practices for Successful Business Analysis (English Edition)」も出版しており、最新の知見を求める方はそちらも合わせて読むと理解がさらに広がるでしょう。

以下の記事で取り上げられていますので、ぜひ参考にしてみてください。

agnozingdays.hatenablog.com

要求を仕様化する技術・表現する技術 -仕様が書けていますか?

著者が提唱するUSDM(Universal Specification Describing Manner)は、要求仕様を正確に定義するための手法です。

USDMを学べば、要求や仕様を的確に表現するための具体的な手法と考え方を体系的に理解できます。

本書では、USDMによる記述方法だけでなく、要求や仕様を正しく表現することの価値や効果、さらに記述の不備が後工程の設計や実装に及ぼす悪影響を、第1部「要求仕様にまつわる問題」で書籍全体の半分を割いて詳しく解説しています。

たとえUSDMを採用しなくても、要求定義や要件定義に携わる方は、この前半部分を読むだけで要件定義で押さえるべき重要な視点と判断基準を把握できます。

だまし絵を描かないための要件定義のセオリー

要件定義をはじめとする上流工程は属人性が高く、「これをやれば正解」という定型的な手法は存在しません。

だからこそ、進め方や重視すべきポイントを自ら見極める姿勢が求められます。

本書は、著者が多くの現場で培った経験をもとに、要件定義を進めるうえで欠かせない視点と判断基準を説明しています。

第Ⅱ部 要件定義の実践」では、実務に直結する具体的な進め方を紹介しています。

とくに「業務フロー作成時の留意点」や「4章-4 業務プロセス要件の明確化」は、業務フローを設計・改善する場面で活用できる実践的な指針となるでしょう。

ユーザのための要件定義ガイド 第2版 要件定義を成功に導く128の勘どころ

IPAの公式サイト(無料ダウンロード)

要件定義の不備がプロジェクトの失敗を招くことは珍しくありません。

IPAの「ユーザのための要件定義ガイド 第2版」は、要件定義におけるリスクを避けるために知っておきたい典型的な課題と対策をまとめています。

具体的には次のような問題が取り上げられています。

  • 現行業務やシステムを十分に理解できず、正確な現状把握ができない
  • ステークホルダーを見誤り、必要な要求を抽出できない
  • 経営方針や事業戦略に沿った要求が反映されない
  • 抽出した要求が全体として効果的かつ必要十分でない
  • 要件定義に必要な期間や労力を定量的に予測できない

要件定義を始める前に一読しておけば、発生しがちなリスクを先回りして把握し、失敗を防ぐための具体的な行動指針を得られるでしょう。

要件定義手法のRDRAを学ぶ

RDRA3.0 ハンドブック:根拠を持った要件定義を素早く正確に

要件定義手法RDRAの、2025年時点の最新のガイドブックです。

RDRAは生成AIの進化に伴い、表形式で定義し、さらにスピード感を持って要件定義を進める方法に舵を切りました。

RDRAのベースとなる考え方自体はRDRA2.0から大きな変化はなく、生成AIに対応したのがRDRA3.0と考えられます。

RDRA3.0 ハンドブックを読んだ上で、RDRA自体の基本的な考え方を更に学びたい方は以下も参照してみてください。

RDRA 2.0

RDRA 1.0

最後に

本記事では、要件定義の理解と実践に役立つと私が実感した書籍を紹介しました。

基礎から応用までを幅広くカバーしたこれらの書籍は、知識を整理し体系的に深めるのに役立ちます。

ぜひ自分の役割や課題に合わせて気になる一冊を選び、日々の業務やプロジェクトで学びを実践してみてください。

読書で得た知識と現場での経験を重ねることで、要件定義に欠かせないスキルと視点を養うことができるでしょう。

次回は、移行要件とは何か、というテーマについて、説明します。

tracery.jp

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

非機能要件とは何か

シリーズ: 要件定義とはそもそも何か

TRACERYプロダクトマネージャーの haru です。

非機能要件とは、機能要件以外でシステムが備えるべき品質や制約条件を示す要件です。具体的には、性能や可用性、セキュリティ、保守性などが該当します。

機能要件が各機能単位で定義されるのに対し、非機能要件はシステム全体に共通する特性としてまとめられるのが一般的です。

本記事では、非機能要件について説明します。

非機能要件の定義

非機能要件の定義には、日本語のものでは、IPA*1非機能要求グレードやJUAS*2非機能要求仕様定義ガイドラインなどがありますが、本連載では REBOK第1版(Requirements Engineering Body of Knowledge:要求工学知識体系)を基準に、下図のとおり整理しました。

ここでは、機能適合性を機能要件と位置づけ、それ以外をすべて非機能要件として扱います。

非機能要件

非機能要件の重要性

機能要件だけを満たした状態とは、プログラムが一応動いているに過ぎません(下図)。

機能要件だけが満たされた状態

非機能要件が欠落すると、システムはたとえば次のような深刻な問題を招きます。

  • 性能効率:画面表示や処理が遅く、ユーザー体験や業務効率を損なう
  • ユーザビリティ:操作性が低く、入力ミスや業務の停滞を引き起こす
  • セキュリティ:不正アクセスやデータ漏えいにより、法的責任を負い、社会的信用が失墜する
  • 保守性:ソースコードが読みにくく、障害対応や機能追加に過大なコストがかかる
  • データ品質:不整合や欠損により、意思決定やサービス品質に重大な影響を及ぼす
  • 法令遵守:法規制に違反し、行政指導や罰則を受ける
  • 制約:クラウドのシステム利用料が予算を超過する

このような状態では、安定したシステム運用や持続的なビジネス価値の創出は極めて難しくなります。

システムは、単に機能が動作するだけでは不十分です。非機能要件を満たしてこそ、プロフェッショナルが構築したと認められる品質水準に達します

非機能要件のアーキテクチャへの反映

非機能要件はシステム全体に共通する特性としてまとめられるのが一般的です。

その内容は、システムアーキテクチャやソフトウェアアーキテクチャに、多くが反映されます。

非機能要件のアーキテクチャへの反映

非機能要件のシステムアーキテクチャへの反映

システムアーキテクチャとは、ハードウェアやソフトウェアの主要コンポーネント、それらの相互関係、通信方式や配置などを含め、システム全体の構造と設計方針を定義したものです。

システムアーキテクチャに反映される非機能要件とその具体例を、以下にまとめました。

利用品質

非機能要件 反映されるアーキテクチャ上の要素 具体的な反映例
有効性*3 サブシステム分割 業務単位/フローに即してサブシステムを分割、配置し、現場の業務変更や手順の見直しにシステムを追随しやすくする。
効率性*4 ユーザーやAPIクライアントの操作/処理が最小の時間で達成できるような技術/基盤選択 SPA*5の採用。フロント側キャッシュ。メッセージキューで非同期処理。
満足性*6 UX改善のための分析基盤 ユーザー行動ログ分析基盤を用意する。
リスク緩和*7 監視・障害検知、自動復旧機構 障害検知アラート連携、自動フェイルオーバー
コンテキストカバレージ*8 複数環境対応設計、マルチリージョン構成 海外リージョン冗長化、各国規格対応の環境構築

プロダクト品質

非機能要件 反映されるアーキテクチャ上の要素 具体的な反映例
性能効率*9 限られたリソースで高い処理性能を発揮するためのサーバーや機器の構成 - CDN*10によるコンテンツ配信高速化
- Webサーバ群をオートスケール対応
- DBリードレプリカで並列読み取りを実現
信頼性*11 冗長構成、クラスタリング マルチAZ*12での冗長化
フェイルオーバー 障害時の自動切替
セキュリティ*13 ネットワーク分離 DMZ構成
認証・認可機構 APIゲートウェイ/認可サーバ(OAuth2, OpenID Connect*14など)
通信の暗号化 TLS通信
保守性*15 監視基盤 専用監視サーバ配置
ログ収集構成 集中ログ収集
コンテナ化 Docker/Kubernetes による環境標準化
CI/CDパイプライン整備 GitHub Actionsによる自動ビルド・テスト・デプロイ
移植性*16 コンテナオーケストレーション Kubernetes活用による他クラウド移行
互換性*17 標準プロトコル対応 REST/GraphQLによる外部連携
ユーザビリティ*18 UI層設計 SPA/MPA構成
マルチデバイス対応 PC・タブレット・スマートフォンそれぞれに最適化されたレスポンシブWebデザインのフレームワークの採用

データ品質、法令遵守、制約

非機能要件 反映されるアーキテクチャ上の要素 具体的な反映例
データ品質*19 データ検証・整合性制御 トランザクション整合性を保証するリレーショナルデータベース(RDBMS)の採用
法令遵守*20 データ配置制御 個人情報を国内データセンターに限定
制約*21 ネットワーク帯域、予算枠 使用可能リソース上限を前提とした構成設計

非機能要件のソフトウェアアーキテクチャへの反映

ソフトウェアアーキテクチャは、ソフトウェアシステムの全体構造と主要な設計上の決定を体系的に示したものです。

システムアーキテクチャがハードウェア・ネットワークを含むシステム全体の構成を指すのに対し、ソフトウェアアーキテクチャはソフトウェア部分の構造や相互作用を対象にします。

以下では、ソフトウェアアーキテクチャへの非機能要件の反映ポイントと設計上の具体例を整理しました。

利用品質

非機能要件 反映されるアーキテクチャ上の要素 具体的な反映例
有効性 ドメインモデル設計 DDDでユースケースを分離、業務ルールをドメイン層に集約
効率性 非同期処理 バルクI/O・ストリーミング処理
アプリ内キャッシュ コネクションプール
満足性 テレメトリ計測 ユーザ行動ログの埋め込み
リスク緩和 エラーハンドリングと再試行戦略 タイムアウト・リトライの設計
コンテキストカバレージ i18n*22/l10n*23 - 翻訳リソースを外部化して動的に切り替え(例:gettext、i18next)
- タイムゾーン対応のためサーバ側でUTC管理+クライアント側でローカル変換
オフライン対応 オフラインファースト*24の設計。

プロダクト品質

非機能要件 反映されるアーキテクチャ上の要素 具体的な反映例
性能効率 計算量削減 N+1抑止、バルク処理・ストリーミング処理
信頼性 冗長化・イベント駆動アーキテクチャ キューイング/メッセージブローカー(Kafka, RabbitMQなど)の使用。
セキュリティ フレームワーク提供の認証・認可機構 Webフレームワーク標準の OAuth2/OIDC サポートを利用してトークン認可を実装/フレームワーク内蔵の RBAC*25・ABAC*26 設定でアクセス制御を集中管理
データ保護機能、入力検証・サニタイズ機能 テンプレートエンジンの自動エスケープや ORM のプレースホルダ機能を活用して XSS や SQL インジェクションを防止/暗号鍵は専用ストア(Hardware Security Module*27・Key Management Service*28 など)で安全に管理
保守性 レイヤリング/依存関係制御 クリーンアーキテクチャ/依存性の注入(DI*29
移植性 設定分離 環境差分(開発・テスト・本番など)は設定で吸収
互換性 バージョニング APIバージョニング(URL/ヘッダ)/後方互換のためのAPIスキーマ進化(例:nullable追加→必須化は段階移行)
ユーザビリティ UI層アーキテクチャ MVVM*30やRedux*31による一貫した状態遷移/デザインシステム(コンポーネント化)

データ品質、法令遵守、制約

非機能要件 反映されるアーキテクチャ上の要素 具体的な反映例
データ品質 データ検証・整合性制御 外部キーやCHECK制約によるスキーマ整合性保証
法令遵守 データ保持ポリシー、監査ログ基盤 個人情報保護法やGDPR対応のためのデータ削除/監査証跡をイベントストリームで永続化
制約 リソース上限を考慮した構成 ハードウェア性能制限を前提としたキューイングとバッチ処理設計

非機能要件のトレードオフ

非機能要件が重要だとはいっても、すべての要素の質を高めると、オーバースペックになることもあります。

IPAの非機能要求グレードでは、対象システムの社会への影響度に基づいて分類し、その分類に応じて求める要件レベルを定めることを推奨しています。

分類 説明
社会的影響がほとんど無いシステム 障害や停止が発生しても、社会全体や公共の活動にほとんど影響を及ぼさないシステム。社内業務の補助ツールや一部の小規模な情報提供サイトなど、限られた利用者や内部利用にとどまるサービスが該当する。
社会的影響が限定されるシステム 障害が起きると一定範囲の利用者や関連業務に支障が出るが、社会全体には大きな混乱をもたらさないシステム。例えば企業の基幹業務システムや地域限定の行政サービス、商用ECサイトなど、特定組織やコミュニティに影響が限定されるもの。
社会的影響が極めて大きいシステム 障害や停止が発生すると、公共の安全や社会的基盤に深刻な影響を与えるシステム。金融決済、交通管制、電力・水道などの社会インフラ、全国規模の行政・防災システムなど、広範な国民生活や経済活動に重大な支障を及ぼすもの。

まとめ

非機能要件は、システムが長く価値を生み続けるための土台です。

性能・可用性・セキュリティ・保守性などの品質特性は、後から付け足すことが難しく、最初のアーキテクチャ設計に織り込むことが不可欠です。

その際、システム全体の構成を決めるシステムアーキテクチャと、内部の構造を設計するソフトウェアアーキテクチャの双方で、非機能要件を具体的に反映させる必要があります。

さらに、IPAが示す「非機能要求グレード」のように、社会的影響度に応じて求める品質レベルを調整する視点も欠かせません。

機能が動くだけのシステムでは、利用者からの信頼もビジネス価値も長続きしません。

非機能要件を早期に定義し、設計・開発プロセス全体で継続的に見直すことこそが、持続可能で信頼されるシステムを実現する第一歩です。

次回は、要件定義を学ぶ人におすすめの書籍を紹介します。

tracery.jp

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

*1:独立行政法人 情報処理推進機構。https://www.ipa.go.jp/

*2:一般社団法人 日本情報システムユーザー協会。https://juas.or.jp/

*3:ユーザーが目的のタスクを正確かつ完全に達成できる度合い

*4:ユーザーがタスクを最小限の時間・労力で達成できる度合い

*5:Single Page Applicatioin

*6:利用によって安心感・快適さ・好ましい体験を得られる度合い

*7:システム利用が健康・財務・個人情報などのリスクを最小化している度合い。

*8:想定される利用環境・条件下で期待どおりの成果を維持できる範囲

*9:リソースを適切に使い、高い処理性能を維持できるか

*10:Content Delivery Network(コンテンツ配信ネットワーク)の略称。Webサイトで利用される画像や動画などの大容量データを、ユーザーの利用する場所の最も近い場所に配置されたサーバーから配信することで、高速化と安定化を図るネットワークシステム

*11:障害時にも安定して稼働し続けるか

*12:アベイラビリティーゾーン(Availability Zone)。複数の「データセンター(DC)」から構成されるインフラ設備の単位です。同じAZ内のデータセンター群は冗長的で高速なネットワークで結ばれており、あたかも同じ場所にある設備であるかのように利用することができる。

*13:不正アクセスやデータ漏えいを防止できるか

*14:インターネット上でユーザーのID情報を安全に交換するための認証プロトコル。OAuth 2.0 を基盤として、シングルサインオン(SSO)を実現し、ユーザーが複数のサービスに1つのIDでログインできるようにする。

*15:修正・拡張・テストが容易か

*16:異なる環境へ容易に移行できるか

*17:他のシステムや製品と共存・連携できるか

*18:製品が理解しやすく、学びやすく、操作しやすいか

*19:システムが扱うデータの正確性・一貫性・完全性・最新性などを保証するための要件

*20:システムが関連法規・規制・業界基準を順守して運用されることを保証する要件

*21:システム設計・開発・運用において外部条件や前提として課せられる制限事項を明示した要件

*22:「Internationalization(国際化)」の略称。アプリケーションやシステムを特定の言語や文化に依存しない汎用的なものに設計・開発すること

*23:Localization(ローカリゼーション)の略称。ローカリゼーションは、特定の製品やサービスを、特有の地域や文化に合わせて調整または適応させる一連のプロセス

*24:ネットワークが不安定または切断された状態でもアプリが問題なく使え、オンラインに復帰した際にデータを自動的に同期することを前提に設計するアーキテクチャ思想。

*25:ロールベースアクセス制御(Role Based Access Control)。ユーザーの役割(ロール)に基づいてシステムやデータへのアクセスを管理するセキュリティ手法

*26:属性ベースのアクセス制御(Attribute Based Access Control)。ロールではなく属性(特性)を評価してアクセスを決定する認可モデル

*27:専用のハードウェア機器。鍵を物理的に保護し、機器外に秘密鍵を出さずに暗号化・署名を実行。高い改ざん耐性を持つ。Thales Luna HSM、AWS CloudHSMなど

*28:クラウドベースの鍵管理サービス。API経由で鍵を生成・保管・ローテーション。HSMをバックエンドに持つことが多い。AWS KMS、Azure Key Vault、Google Cloud KMSなど

*29:Dependency Injectionの略称。クラスが他のクラスを直接生成するのではなく、外部から渡してもらうようにするデザインパターン。

*30:Model–View–ViewModelの略称。ユーザーインターフェースを持つアプリケーションの設計パターンの一つで、表示(View)とデータ・ロジック(Model)を疎結合に保ちながら、状態管理をシンプルにすることを目的としている。

*31:Webフロントエンドを中心に使われる 状態管理(State Management)ライブラリ/アーキテクチャパターン 。特に React と組み合わせて利用されることが多く、アプリ全体の状態を一元的に管理し、状態変化を予測可能にする。

要件とは何か

シリーズ: 要件定義とはそもそも何か

TRACERYプロダクトマネージャーの haru です。

これまでの連載では「要件定義とは何か」について解説してきました。

この記事では、その前提となる「要件」とは何かについて説明します。

日本の現場に特有の「要求」と「要件」の区別

要件定義の重要ポイント〜要望・要求・要件を見極める - TRACERY Lab.(トレラボ)では、「要望」「要求」「要件」を以下のように整理しました。

種類 説明
要望 ステークホルダーからの初期の希望やアイデア、ニーズ
要求 要望を取捨選択し、整理、構造化したもの
要件 要求を取捨選択し、実現対象として合意したもの

要望、要求、要件の3段階で整理する

日本の開発現場では「要求分析」と「要件定義」のように「要求」と「要件」を明確に区別して用いることが多い一方、英語圏では "Requirement" という一語で包括的に扱われます。

ISO/IEC/IEEE 29148: 2018*1は、システム・ソフトウェアの要求エンジニアリングに関する国際標準規格です。

これを基にした日本産業規格であり、日本語化されたJIS X 0166: 2021*2では、Requirementを「要件(要求事項)」と訳していて、「要求」と「要件」は区別していません。

英語では要求と要件の区別はない

では、なぜ日本の現場では要求と要件を区別しているのでしょうか。

「要望」「要求」「要件」を分けるメリット

「要望」「要求」「要件」を分ける最大のメリットは、発散(要望)→整理(要求)→合意(要件)という段階的な流れを明確にできることです。

最終的に要件を確定するには、工数や実現可能性といった制約条件を考慮する必要があります。しかし、要望を整理する段階から制約条件を過度に意識すると、発想が限定され、真に望ましい姿を描けなくなる恐れがあります。

そこでまずは制約条件を取り払った理想像を「要求」として表現し、その後に制約条件を加味して「要件」として合意するという二段構えを取ることで、本来あるべき姿を見失わず、かつ現実的に実現可能な要件へと落とし込むことが可能になります。

要件の階層

要件はさらに階層として分類できます。ここではトレラボの別の記事(事業・業務・システムの3階層で要件を捉える - TRACERY Lab.(トレラボ))で紹介した階層化と、国際標準規格での分類、そしてその2つの対応付けについて紹介します。

事業・業務・システムの3階層で要件を捉える - TRACERY Lab.(トレラボ)では、要件を以下の3階層に分類しました。

種類 説明
事業要件 事業で目指す目的のために、実現すべきと合意した事項
業務要件 事業要件を達成するために、各業務プロセスで具体的に実現すべきと合意した事項
システム要件 業務要件を満たすために必要なシステムの機能、性能、運用条件などを定義し、実現すべきと合意した事項

事業要件、業務要件、システム要件の関係

このように、各部門が事業要件に基づいた業務要件とシステム要件を設定し、具体的に業務を構築することで、組織全体として「スピーディーな意思決定」という目的に近づくことができます。

事業、業務、システムが有機的に連携することで、組織全体の目的を一貫性を持って効果的に達成できるようになります。

上述した、ISO/IEC/IEEE 29148: 2018(JIS X 0166: 2021)では、要件を以下の4つに分類しています。

  • ビジネス要件
  • 利害関係者要件
  • システム要件
  • ソフトウェア要件

これら4つの要件を「事業要件」「業務要件」「システム要件」に対応付けると、下図のようになります。

要件の階層

なお、トレラボの一連の記事で「事業」「業務」「システム」という用語を用いているのは、共通フレーム2013*3に準拠しているためです。また、「ソフトウェア要件」は「システム要件」に内包されるものと考え、同様に扱っています。

システムとソフトウェアの関係については、システム開発におけるシステムとは何か - TRACERY Lab.(トレラボ)を参照してください。

最後に

本記事では、「要件」の定義について説明しました。

よく言われるように、分類は理解の第一歩です。

システム開発の要件定義では、現場で得られる多様な情報を「要望」「要求」「要件」に分けて整理することで、目の前の事象の解像度を高め、全体像を体系的に把握できます。

また、「事業要件」「業務要件」「システム要件」といった階層構造に分類することで、事業、業務、システムが有機的に連携し、組織全体の目的を一貫性を持って効果的に達成できるようになります。

こうした要件の分類や階層を関係者間で共通理解しておくことが、認識の齟齬を防ぎ、品質の高いシステム開発へとつながります。

  • 次回の記事は、非機能要件とは何かについて説明します。

tracery.jp

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

*1:Systems and software engineering — Life cycle processes — Requirements engineering。購入サイト

*2:システム及びソフトウェア技術--ライフサイクルプロセス--要求エンジニアリング。購入サイト

*3:ソフトウェア、システム、サービスのライフサイクル全体に必要な作業項目や役割などを包括的に規定した共通の枠組み。関係者が「同じ言葉を話せる」ようにするためのガイドライン。発注者と受注者の間で解釈の相違が起きないよう「共通の物差し」として機能し、システム開発プロセスを標準化して効率化を図る目的で、独立行政法人 情報処理推進機構(IPA)がISO/IEC 12207(JIS X0160)をベースに日本独自の要素を追加して策定した。

要件定義とバッチ処理設計

シリーズ: 要件定義とはそもそも何か

TRACERYプロダクトマネージャーの haru です。

バッチ処理は、大量のデータをまとめて収集・加工し、あらかじめ定められたスケジュールや条件に従って一括実行する仕組みです。

売上集計や在庫更新、帳票作成などに広く用いられ、リアルタイム性よりも業務開始前など定められた時間内に正しく処理が完了していることが重視されます

要件定義では、処理の機能面に加え、完了期限、利用可能なリソースの範囲、バックアップやメンテナンスとの調整方法、失敗時の再実行方針など、非機能要件を明確にしておく必要があります。

本記事では、要件定義とバッチ処理設計の関係を説明します。

機能要件とバッチ処理設計

バッチ処理の設計では、要件定義で作成された開発品目一覧でリストアップされたバッチ処理(【例】売上データ集計処理)を詳細化します。

以下は、売上データ集計処理の機能要件です。

開発品目 機能要件
売上データ集計処理 - 売上ダッシュボード画面に表示するデータを定期的に作成する
- 日次で日別/商品別/地域別に、前日分をクロス集計する。
- オプションで指定した日付範囲で集計できる。
- 売上データ集計処理が完了した際、業務ユーザーに処理完了を通知する。
- 通知には完了日時と対象期間を含め、ユーザーが次の業務(レポート確認や承認作業)を開始できるようにする。

このような機能要件から 入力(パラメータ)・処理内容(ビジネスロジックの流れ)・出力(戻り値) を具体化します。

以下の表では、売上データ集計処理の機能要件を基に入力・処理・出力へと整理し、設計内容として具体化した例を示します。

項目 内容
入力(引数) 集計対象期間の指定
period_start(開始日)、period_end(終了日)を任意パラメータとする。指定しない場合、前日が集計対象となる。
処理内容(ビジネスロジック) 前処理
集計対象期間を算出する。引数が指定されている場合は内容を検証し、値が正しければ集計期間として採用する。値が不正の場合、エラーを通知して、処理を終了する。
集計
対象期間の売上データを取得し、返品・値引・キャンセルを控除して、日別/商品別/地域別に売上額・数量・純売上を集計する。
結果格納
daily_sales_summary テーブルに集計結果を格納する。
通知処理
処理完了時に完了日時と対象期間を含むメッセージを生成し、メールとSlackに通知する。
出力(戻り値) 処理件数を返却する。

バッチ処理設計におけるクラス設計・DB設計との関係

さらに、クラス設計で整理されたドメインモデルや、DB設計で確定したエンティティやスキーマ設計もバッチ処理設計の入力として参照します。

これにより、バッチ処理の処理内容とデータ永続化をどう関連づけるかが明確になります。

また、バッチ処理設計ではクラス設計やDB設計との間で整合性を確認しながら相互に調整を行うことが重要です。

たとえば、バッチ処理で取得、保存に必要な情報がDB設計に不足していればスキーマを見直す、といったフィードバックをすることで、設計全体の整合性を確保します。

機能要件とバッチ処理設計

非機能要件とバッチ処理設計の連携

非機能要件は下図に示す要素で構成されます。

非機能要件とバッチ処理設計

バッチ処理設計では、これらの非機能要件のうち、主に利用品質効率性満足性プロダクト品質性能効率信頼性セキュリティ に着目します。

効率性

効率性*1は、ユーザーが操作にかける時間に対して、どの程度の成果が得られるかを示す度合いです。

たとえば、売上データ集計処理において、大量の取引データを効率よく読み込み・加工し、定められた締切(例:毎朝6時まで)までに日次や月次の売上指標を安定的に算出できる場合、効率性が高いといえます。

設計観点 内容
処理時間SLO*2の明確化 「毎日AM6:00までに完了」などの締切をSLOとして定義し、計測と可視化を行う。

満足性

満足性*3は、利用者(エンドユーザーや運用担当者)がシステムを使って「満足できるかどうか」 を表す指標です。

「効率性」が客観的な達成度を測るのに対し、満足性は主観的な体感や心理的な評価を含みます。

設計観点 内容
進捗・状態の可視化 実行中/処理件数/処理進捗を即把握できるようにする。
【例】
- ログや監視画面にジョブのステータス(待機中/実行中/完了/失敗)を表示する
- メールやSlackに処理結果や進捗を通知する。

性能効率

性能効率*4は 、指定された条件下でシステムが必要な性能をどれだけ効率的に提供できるかを表します。

性能効率は、「時間効率性」「資源使用効率性」「容量」など3つのサブ特性に分類されます。

以下の表は、性能効率のサブ特性をバッチ処理設計に落とし込む際の設計観点をまとめたものです。

サブ特性 設計観点
時間効率性(Time behavior)*5 入出力や計算処理を最適化し、限られたリソースで大量データを期限内に処理できるようにする。
【例】
- I/O最適化:一括読み書き、バッファ利用、ストリーミングで入出力待機時間を最小化。
- 並列化・分散処理:AWS Lambdaなどの FaaS*6 を用いて、並列分散処理を実行する。
資源利用性(Resource utilization)*7 CPU・メモリ・I/Oなどのリソースを無駄なく活用し、処理負荷を平準化することで、安定した基盤運用と効率的な実行を実現する。
【例】
- リソース利用の最適化:CPU・メモリ使用量を測定し、過剰消費を防止。ジョブ単位のリソース制御を行う。 
- キャッシュ活用:中間結果や参照データをキャッシュし、繰り返し計算やI/Oを削減。
- スケジューリングと負荷分散:業務ピークを避け、依存関係順序と同時実行数を制御して負荷を平準化する。
容量(Capacity)*8 将来のデータ増加やピーク時の負荷を見越して処理件数やデータ量に耐えられる設計とし、容量超過による遅延や障害を防ぐ。
【例】
- 処理対象データ量の見積り:将来的なデータ増加を見越し、ピーク時の最大件数・容量を試算する。

信頼性

信頼性*9は、「成熟性」「可用性」「障害耐性」「復旧性」の4つのサブ特性に分類されています。

以下の表は、信頼性のサブ特性をバッチ処理設計に落とし込む際の具体策をまとめたものです。

サブ特性 設計観点
成熟性(Maturity)*10 欠陥を防ぐ設計とテスト、実行状況の継続的な監視・分析により、処理の安定性と品質を高める。
【例】
- コード品質とテスト:ユニットテスト・リグレッションテストで欠陥混入を防ぐ。
- 監視メトリクス蓄積:エラー率・実行時間・リトライ回数を蓄積し、品質改善に活用する。
- 変更時の安心 :本番データを汚さない試行(ドライラン*11)やカナリア実行*12で影響を可視化する。
可用性(Availability) *13 基盤の冗長化や監視体制を整備し、障害や遅延が発生しても処理を継続または迅速に復旧できるようにする。
【例】
- 冗長化と切替:ジョブスケジューラや基盤をクラスタ構成にし、障害時でも実行可能にする。
- 監視と通知:遅延・失敗を即時検知し、適切に通知する。
障害耐性(Fault Tolerance) *14 一時的なエラーや異常時にも安全に制御し、誤処理や影響拡大を防ぎながら処理を継続または安全に停止できるようにする。
【例】
- エラーデータのスキップ:入力エラーを検出した際に、全体を止めずにスキップ・隔離して残りを処理継続する仕組み
- 自動リトライとバックオフ*15:一時的なエラーに対し、指数的バックオフで再試行し影響を吸収する。
- フェイルセーフ設計:異常時はデータ破壊を避け、安全側で停止する。
- ジョブ依存関係の制御:前工程失敗時に後工程を止め、誤処理拡散を防ぐ。
- 隔離実行:高負荷ジョブを分離し、他システムへの影響を回避する。
回復性(Recoverability) *16 障害発生時にも安全に再実行や再開ができ、結果の整合性を保ちながら迅速に処理を復旧できるようにする。
【例】
- 再実行効率(チェックポイント):中断点を記録し、障害発生時に途中から再開できるようにする。
- 冪等性の確保:再試行や二重投入でも結果が重複・破壊しない入出力設計にする。再実行を安心して行える基盤。

セキュリティ

セキュリティ*17は、「機密性」「完全性」「否認防止」「責任追跡性」「真正性」の5つのサブ特性に分類されています。

以下の表は、セキュリティのサブ特性のうち、機密性と真正性をバッチ処理設計に落とし込む際の具体策をまとめたものです。

サブ特性 設計観点
機密性(Confidentiality) *18 個人情報や機密情報が不必要に露出しないよう制御し、処理中・成果物・ログを通じて情報漏えいを防止する。
【例】
- データマスキング:ログや成果物に個人情報/機密情報を残さない。
真正性(Authenticity) *19 サービス間通信や外部連携において認証や署名を用い、処理対象や連携先が正当なものであることを保証する。
【例】
- サービス間相互認証: 外部API連携はmTLS*20や署名付きリクエストで相手を確認。

まとめ

バッチ処理設計は、単に大量データを自動処理する仕組みを構築することにとどまりません。

売上集計や在庫更新といった機能要件を入力・処理・出力に落とし込むだけでなく、効率性・満足性・性能効率・信頼性・セキュリティといった非機能要件を適切に組み合わせることで、業務と経営の双方に安定性と安心感をもたらします。

非機能要件が欠ければ、処理遅延による出荷や請求業務の停止、誤集計による経営判断の誤り、情報漏えいによる信用失墜といったリスクが現実化します。

一方、堅牢に設計されたバッチ処理は、運用現場の負担を軽減し、経営判断に必要な正確でタイムリーな情報提供を可能にします。

バッチ処理は要件定義の段階から非機能要件を明確にし、それに基づいて設計することが重要です。

次の記事では、「要件とは何か」について解説します。

tracery.jp

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

*1:ISO/IEC 25010:2011に定義されている。

*2:Service Level Objective:サービスレベル目標。サービスの提供品質を測定するために定める組織内部の具体的な数値目標のこと。上位概念に SLA(Service Level Agreement:サービスレベル合意) があり、SLAは利用者との契約として定めるもの。

*3:ISO/IEC 25010:2011に定義されている。

*4:ISO/IEC 25010:2023に定義されている。

*5:指定された条件下での応答時間、処理時間、スループットなど、システムやコンポーネントの応答が、性能要求やユーザーの期待に対して適切か

*6:Functions as a Service:クラウド上で小さな処理単位(関数)をイベントに応じて実行できるサービス形態。利用者はサーバを構築・管理する必要がなく、コードを関数としてデプロイし、必要に応じてクラウドが自動で実行・スケーリングする。

*7:指定された条件下で、システムやコンポーネントがどれだけ効率的にハードウェアやソフトウェアの資源(CPU、メモリ、ネットワークなど)を利用するか。

*8:システムが、パフォーマンスを保ちながら処理できる最大ユーザー数、データ量、トランザクション数などの上限が要求を満たしているか、または想定された負荷に耐えられるか

*9:ISO/IEC 25010:2023に定義されている。

*10:ソフトウェア製品またはシステムが、欠陥の発生頻度や障害の発生確率が低く、安定して期待されるサービスを提供できる度合い

*11:本番と同じ処理フローを 実際の更新や副作用を発生させずに試行することを指す。「空回し」「試運転」であり、処理の影響を事前に確認する手法。

*12:本番と同じ処理フローを 実際の更新や副作用を発生させずに試行することを指す。「空回し」「試運転」であり、処理の影響を事前に確認する手法。

*13:必要なときにサービスや機能を利用できる度合い

*14:ハードウェアやソフトウェアの障害、または操作ミスが発生しても、許容できる性能レベルで動作を継続できる度合い

*15:処理が失敗したときに すぐ再試行するのではなく、一定時間待ってから再実行する仕組み。特に「指数的バックオフ(Exponential Backoff)」が一般的で、再試行のたびに待機時間を倍増(例:1秒 → 2秒 → 4秒 → 8秒…)させていく

*16:障害や停止が発生した後、必要なデータを復旧し、望ましい運用状態を一定時間内に回復できる度合い

*17:ISO/IEC 25010:2023に定義されている。

*18:権限を持つユーザーのみが情報にアクセスできるように制御し、データが不正に閲覧・漏洩されないことを保証するか

*19:ユーザー、デバイス、システム、通信が真正であることを確認し、なりすましを防止できるか

*20:Mutual Transport Layer Security。TLS(Transport Layer Security)による通信暗号化に加えて、通信の両者(クライアントとサーバ)が相互に認証し合う仕組み。

要件定義とAPI設計

シリーズ: 要件定義とはそもそも何か

TRACERYプロダクトマネージャーの haru です。

API(Application Programming Interface)は、アプリケーション同士が機能やデータをやり取りするための「インターフェース」です。

システム開発において、APIは部品やサービスを再利用可能な形で提供し、異なるシステムやプログラム間の連携を容易にします

APIには主に以下のような種類があります。

種類 説明
Web API インターネットや社内ネットワーク経由でアクセスするAPI。HTTP/HTTPSで提供
ライブラリAPI(言語API) プログラミング言語の標準ライブラリやフレームワークが提供する関数群
OS API Windows API、POSIX API*1など、OSの機能(ファイル操作、メモリ管理など)を利用するためのAPI

本記事では、この中でWeb APIを対象に要件定義と設計の関係を説明します。

APIの公開範囲による分類

Web APIは、外部サービスとの連携から社内システムの内部統合まで、幅広い領域のレイヤーでシステムをつなぐ中核技術です。

Web APIは、公開範囲によって下図のように分類できます。

API公開範囲による分類

各APIの概要を以下に示します。

名前 説明
外部公開API 企業や組織が自社の機能やデータをインターネット経由で外部に提供し、他社サービスやアプリケーションとの連携を可能にする。

利用者は公開されたAPI仕様を基に開発を行うため、API提供者は仕様を公開することが不可欠。また、一度利用が広がると多数の外部サービスに依存されるため、仕様変更は利用者への影響が大きく、容易に行えない。そのため、互換性の維持やバージョニング、明確な変更ポリシーが求められる。

既存サービスの価値を拡張し、新たな連携サービスやビジネスモデルを生み出す基盤となる。
システム内公開API 社内システムにおけるサブシステム間の機能やデータ連携を担う。

特にマイクロサービスアーキテクチャでは、疎結合な通信を実現する基盤として機能する。
画面・端末用API SPA(シングルページアプリケーション)やスマートフォンアプリ、IoTデバイス上のソフトウェアなど、多様なユーザーインターフェースや端末からサーバーサイドのデータを取得・更新するために設計されたAPI。

画面描画や端末操作の応答を高速化し、ユーザー体験や機器連携の効率を高める。

これらのWeb APIの中から、この記事では外部公開APIを対象に説明します。

説明にあたっては、外部公開APIで最も広く利用されているRESTful API *2を対象として設計プロセスを解説します。

機能要件とAPI設計

API設計では、要件定義で作成された開発品目一覧でリストアップされたAPI(【例】商品情報API)を詳細化します。

以下は、商品情報APIの機能要件です。

開発品目 機能要件
商品情報API - 商品詳細の取得:商品IDを指定して、名称・価格・在庫・説明文・画像URLなどの詳細情報を取得できること。
- 一覧取得とフィルタリング:商品一覧を取得でき、カテゴリ・ブランド・価格帯・在庫有無などでフィルタリング可能であること。
- ページング機能:大量の商品データを扱えるように、limit / offset または page / per_page といったパラメータで分割取得できること。
- ソート機能:価格順・新着順・更新日時順など、指定条件で並び替えて取得できること。
- 更新情報の取得:前回取得以降に更新された商品のみの差分取得が可能であること。

このような機能要件から 入力(リクエストパラメータ)・処理内容(ビジネスロジックの流れ)・出力(レスポンススキーマ) を具体化します。

以下の表では、商品情報APIの機能要件を基に入力・処理・出力へと整理し、設計内容として具体化した例を示します。

項目 内容
入力(リクエストパラメータ) 商品詳細の取得
GET /products/{id} において id を必須パラメータとする。
一覧取得とフィルタリング
GET /products において category(カテゴリ)、brand(ブランド)、price_min(価格最小)、price_max(価格最大)、in_stock(在庫有無) などのクエリパラメータを設ける。
ページング機能
limit / offset または page をクエリパラメータとして設ける。
ソート機能
sort パラメータを用意し、価格順・更新日時順などを指定可能にする。
更新情報の取得
updated_since パラメータを設け、指定日時以降に更新された商品のみを返せるようにする。
処理内容(ビジネスロジック) 商品詳細の取得
DBからIDに対応する商品を検索し、カテゴリやブランド情報も結合して返す。
一覧取得とフィルタリング
指定された条件に基づき、SQLのWHERE句などを利用してフィルタリング。
ページング機能
指定件数で取得し、総件数もカウントして返す。
ソート機能
ORDER BYを利用し、指定条件で並び替えを実行。
更新情報の取得
updated_atupdated_since 以降のレコードを抽出。
出力(レスポンススキーマ) 商品詳細の取得
id, 名前、価格、商品説明文、在庫数、画像URLなどを返却。
一覧取得とフィルタリング
商品配列に加え、total_count(商品数) を含める。
ページング機能
page(ページ数)をレスポンスに含める。

API設計におけるクラス設計・DB設計との関係

さらに、クラス設計で整理されたドメインモデルや、DB設計で確定したエンティティやスキーマ設計もAPI設計の入力として参照します。

これにより、「APIでどの情報を受け渡すべきか」「APIの処理内容とデータ永続化をどう関連づけるか」が明確になります。

また、API設計ではクラス設計やDB設計との間で整合性を確認しながら相互に調整を行うことが重要です。

たとえば、APIレスポンスに必要な情報がDB設計に不足していればスキーマを見直す、といったフィードバックをすることで、設計全体の整合性を確保します。

機能要件とAPI設計

非機能要件とAPI設計の連携

非機能要件は下図に示す要素で構成されます。

API設計では、これらの非機能要件のうち、主に利用品質有効性効率性リスク緩和プロダクト品質性能効率互換性信頼性セキュリティ に着目します。

非機能要件とAPI設計

有効性

有効性*3は、ユーザーや関係者が目標や成果を達成できる度合いです。

たとえば、商品データを外部サイトに提供するAPIで、クライアントとなる価格比較サイトのシステムが目的の商品情報を検索・取得し、在庫や価格を正確に反映できる場合、そのAPIは有効性が高いといえます。

設計観点 内容
リソースと機能の発見容易性 エンドポイント構造や命名が一貫しており、外部開発者が目的のリソースを迷わず利用できる。
【例】
- 役割が直感的に理解できるURL設計。たとえば、/products(一覧)、/products/{id}(詳細)、/categories/brands など。
入力・取得条件の適切性 クエリパラメータやリクエスト形式が明確で、誤入力や意図しないデータ取得を防ぐ。
【例】
- 統一形式(エラーコード+フィールド+理由)でエラー情報を返す。
整合性と再現性の確保 同じ条件で同じ結果を返し、データ更新のタイミングや仕様が明確。
【例】
- 時点指定のスナップショット取得を提供する。たとえば、クライアントがクエリパラメータでas_of=2025-08-01T00:00:00Z を指定し、「特定時点の状態を固定して取得する」と API に明示することで、一覧・集計の一貫性を担保できるようにする。

効率性

効率性*4は、ユーザーが操作にかける時間に対して、どの程度の成果が得られるかを示す度合いです。

たとえば、APIのクライアントとなる価格比較サイトが商品一覧を取得して差分同期し、在庫や価格を即時に反映でき、しかも少ないリクエスト回数・短い転送時間で済む場合、効率性が高いといえます。

設計観点 内容
データ転送の最小化 クライアントからの指定により返すデータ量を必要最小限に抑える。
【例】
- フィールド選択:クライアント側でfields=id,name,price,thumbnail_urlなど取得するフィールドを指定する。
- 軽量シリアライズ*5のために、JSONでは不要な情報を省いて最適化し、必要に応じてProtocol BuffersやMessagePackなどのバイナリフォーマットを用いることで、通信量を削減し処理効率を高める。
往復回数の削減(N+1回避) 必要情報を一度で取得できる形にする。
【例】
- 一括取得/バッチGET /products?ids=SKU-1,SKU-2,...、必要なら POST /products/batch
同期効率(差分・条件付き要求) 毎回の全データ取得を避ける。データの更新がなければデータ本体を返さず効率化する仕組みを活用する。
【例】
- 条件付きGET:クライアントにETag*6を保存し、次回リクエスト時にIf-None-Matchヘッダとして送信。サーバーは ETag を比較し、変更がなければ HTTPステータスコード304 Not Modified を返す。

リスク緩和

リスク緩和*7は、システムや製品の利用によって生じる、健康、安全、財産、環境、情報セキュリティなどへの潜在的なリスクを回避または低減できる度合いを指します。

たとえば、ユーザーが大量のAPIリクエストを意図せず実行して料金が過大に発生してしまう場合、利用者にとって大きな経済的負担となり、サービスへの安心感が損なわれる可能性があります。

これらを未然に防ぐ設計が、リスク緩和性の高いAPIです。

設計観点 具体策 / 実装例
レート制限とクォータ 利用量の上限を制御し、過剰な呼び出しによる課金増加を防ぐ。
【例】
- クライアント/トークン単位で上限(秒/分/日/月単位)を設定(トークンバケット等)
ソフト/ハードの利用上限(支出上限) 利用量や課金額に応じて段階的な制御を行い、想定外の請求を回避する。
【例】
- ソフトリミット*8到達で警告、ハードリミット*9到達で自動停止or要確認(管理画面/メール/Slack通知)
- 契約ごとに月額上限金額クレジット残高を設定する。

性能効率

性能効率*10は 、指定された条件下でシステムが必要な性能をどれだけ効率的に提供できるかを表します。

性能効率は、「時間効率性」「資源使用効率性」「容量」など3つのサブ特性に分類されます。

API設計において、前述の利用品質における「効率性」はAPIクライアント側の非機能要件であるのに対し、「性能効率」はAPI(サーバーサイド)側の非機能要件に該当します。

APIの性能効率は、ユーザーがどれだけアクセスしても安定して使えることにつながります。

たとえば、大量のリクエストやデータ処理が同時に行われても、サーバー側の設計がしっかりしていれば遅延や停止を防ぐことができます。こうした工夫により、利用者は快適にサービスを使え、同時に運営側も無駄なコストを抑えられます。

以下の表は、性能効率のサブ特性をAPI設計に落とし込む際の設計観点をまとめたものです。

サブ特性 設計観点
時間効率性(Time behavior)*11 API の応答時間や処理遅延を最小限に抑え、SLA*12 に沿ったレスポンスタイムを保証する。
【例】
- ネットワークの配信効率を向上させる(送信データの圧縮、HTTP/2/3の使用、CDNキャッシュ*13の利用。
- サーバ処理効率を向上させる。(インデックス最適化*14、N+1*15クエリ防止)
資源利用性(Resource utilization)*16 CPU、メモリ、ネットワーク帯域などの利用効率を最適化し、過剰な負荷やスパイク時の性能劣化を防ぐ。
【例】
- サーバ資源節約効果の高い実装を採用する(結果キャッシュ*17、プリフェッチ*18
容量(Capacity)*19 想定される最大同時リクエスト数や最大データ量に対応できるようにする。
【例】
トラフィックや処理量を制御・分散する仕組みを活用する。(レート制限*20、スロットリング*21、非同期化*22

互換性

互換性*23は、システムやソフトウェアが他の製品、コンポーネント、または環境と競合せずに共存し、相互に情報を交換・活用できる度合いを示します。互換性は異なるシステム間でのスムーズな動作やデータ連携を保証することを目的とし、「共存性」と「相互運用性」の2つのサブ特性に分類されます。

互換性を意識したAPI設計は、異なるシステムやプラットフォーム間での連携を円滑にし、導入や運用コストの削減にもつながります。

さらに、外部サービスとの連携や将来の拡張性を担保するうえでも欠かせない要素であり、ビジネスの成長を支える基盤となります。

以下の表は、互換性のサブ特性をAPI設計に落とし込む際の具体策をまとめたものです。

サブ特性 設計観点
共存性(Co-existence)*24 API が同一環境内の他の API やソフトウェアとリソース(ポート・CPU・メモリ・ストレージ等)や設定を奪い合わず、干渉や性能低下を起こさないようにする。
【例】
- タイムアウト/リトライ設計:負荷をコントロールし、同居サービスへの輻輳拡大を回避する
- リソース上限:ページング上限・レスポンスサイズ上限・同時接続上限を公開し、基盤資源の取り合いを防ぐ。
- 名前空間の衝突回避:ヘッダ/クッキー/クエリのプレフィックス運用(【例】X-Client-*x-拡張)や予約語の明示で値が意図せず上書きされるなどの他のサービスやミドルウェアとの干渉を防止。
- キャッシュ健全性:レスポンスヘッダーのCache-Control*25Vary*26ETag 等の設計を適切化し、プロキシや別サービスのキャッシュを汚染しない。
相互運用性(Interoperability) *27 他のシステムやコンポーネントと正しくデータやサービスを利用できるようにする。
【例】
- 後方互換の維持:非互換変更はバージョン分離(/v2 など)とdepreciation告知。
- データ/メディア型の標準化application/json(UTF-8)、application/problem+json(エラー)、ファイルはmultipart/form-data等を明示。日時は ISO 8601 UTCを使用、ID/通貨/単位はISOに準拠する。
- スキーマ共有:OpenAPI、JSON Schema を公開、サンプル・コード生成を提供する。
- セマンティクスの合意:列挙値・状態遷移・エラーコード辞書を一元管理し、意味の齟齬を防止する。

信頼性

信頼性*28は、「成熟性」「可用性」「障害耐性」「復旧性」の4つのサブ特性に分類されています。

信頼性を備えたAPIは、単なる機能提供にとどまらず、長期的にサービスを支える柱となり、継続的な価値を利用者へ届けます。

そのためには、障害に強く安定稼働を維持できる堅牢な設計が不可欠であり、利用者は安心してサービスを使い続けることができます。

以下の表は、信頼性のサブ特性をAPI設計に落とし込む際の具体策をまとめたものです。

サブ特性 設計観点
成熟性(Maturity)*29 APIが通常の運用条件下で安定動作し、バグや故障の発生率を低く抑えられるようにする。
【例】
- 観測性を高め、障害や異常を「見える化」して早期に検知する仕組みを作る。
 - 構造化ログ:JSON形式など解析しやすい形式で出力し、ログ収集基盤で検索・集計できるようにする
 - メトリクス:レスポンスタイム、エラー率の継続的測定
 - トレース(相関ID):各リクエストに一意の相関IDを付与し、複数のサービスをまたぐ処理をトレースできるようにし、問題がどの部分で発生しているか特定しやすくする。
可用性(Availability) *30 障害やメンテナンス時でも可能な限りAPIが利用可能であるようにする。
【例】
- 冗長化:マルチAZ/マルチリージョン、ステートレス化と水平スケール
- 計画停止の扱い:メンテ時はHTTPステータスコード503 Service Unavailableを返し、 レスポンスヘッダ Retry-After でリトライ推奨時間を返す。
- デプロイ戦略:ブルー/グリーンデプロイ、即時ロールバック手順の確立。
障害耐性(Fault Tolerance) *31 ネットワーク障害や一部コンポーネントの故障時でも、APIの使用を可能にする。
【例】
- タイムアウト/リトライ
 - 外部呼び出しは短めのタイムアウトを設定し、応答がなければすぐに制御を戻す。
 - リトライ時間のアルゴリズムに、指数バックオフ*32とジッタ*33を併用する:複数のクライアントが同時に失敗して一斉に再試行してしまうことで発生する「スロースタート問題*34」や「スパイク負荷*35」を避ける。
 - 冪等性(idempotency)*36前提とした設計:書き込み系は冪等性を前提に設計し、リトライしても「二重注文」や「二重決済」などの副作用を生じないようにする。
回復性(Recoverability) *37 障害発生後に迅速かつ正確にAPIサービスを復旧できるようにする。
【例】
- イベント再処理:障害時に失われたイベントやメッセージを再処理できるようにする。
- データ復旧:データ破損や消失があっても短時間で復元できるようにする。スナップショット/トランザクションログの組み合わせで復旧
- バージョン巻き戻し:スキーマ/コードの安全なロールバック手順の確立

セキュリティ

セキュリティ*38は、「機密性」「完全性」「否認防止」「責任追跡性」「真正性」の5つのサブ特性に分類されています。

APIは外部と情報をやり取りするインターフェースであるため、不正アクセスやデータ改ざんのリスクに常にさらされています。セキュリティを十分に考慮しなければ、利用者の信頼を失い、サービス全体の継続性にも影響を及ぼします。

安全性を確保したAPIは、ユーザーに安心して利用してもらえるだけでなく、開発・運用側のリスク低減にも直結します。

以下の表は、セキュリティのサブ特性をAPI設計に落とし込む際の具体策をまとめたものです。

サブ特性 設計観点
機密性(Confidentiality) *39 許可されていない利用者が情報にアクセスできないようにする。
【例】
- 通信の秘匿:TLS1.2以上必須*40、HSTS*41、最新暗号スイートの利用*42、前方秘匿性の確保*43
個人情報のマスキング*44/トークナイゼーション*45
- 認可の粒度:OAuth2*46/OpenID Connect*47の使用により、スコープ/ロールでフィールド・操作を制御
- CORS(Cross-Origin Resource Sharing)*48の最小化:許可ドメインを限定する、資格情報*49の扱いを厳格化し、APIキーやトークンをクライアント側に安易に保持させないように設計する*50。  
完全性(Integrity) *51 リクエストやレスポンスの通信途中の第三者による改ざんを防ぐ。
【例】
- 改ざん検知:リクエスト署名*52やWebhook署名*53の検証。
否認防止(Non-repudiation) *54 送信者や受信者が後から関与を否定できないようにする。
【例】
- 不可否認の証跡:署名付きリクエスト/応答(JWS*55, mTLS クライアント証明書*56)、時刻印(X-Timestamp*57 等の使用
責任追跡性(Accountability) *58 監査やトラブルシューティング時に追跡可能にする。
【例】
- 相関ID:HTTPヘッダのtraceparent*59X-Request-Id*60 を全経路で伝搬(分散トレース含む)
- 監査ログ:呼出元ID/スコープ/対象リソース/パラメータ要約/結果/レイテンシ*61等を構造化して記録。
真正性(Authenticity) *62 やり取りする情報や利用者が正しいものであることを保証する。
【例】
- 相互認証
 - OAuth2/Open ID Connect:アクセストークンやIDトークンを利用し、利用者の権限や本人性を保証する。JWT*63の検証により(発行者、利用者、有効期限、使用可能開始時刻等)を確認する。

まとめ

本記事では、要件定義とAPI設計の関係を整理し、両者をどのように結び付けるかを解説しました。

要件定義で明確にした機能要件は、API設計において「どの情報を受け渡すのか」「どのような操作を提供するのか」といった具体的なインターフェースへと落とし込まれます。

要件を入力・処理・出力の観点から設計へ反映する流れを示し、さらにクラス設計やDB設計と整合性を取りながら相互に調整を行うことで、システム全体としての一貫性を確保できることを説明しました。

また、機能面に加え、性能効率やセキュリティ、利用品質といった非機能要件も、要件定義で検討した内容をAPI設計に反映させることが欠かせません。これらを適切に取り込むことで、利用者やビジネスにとって価値あるAPIを実現できます。

次の記事では、要件定義とバッチ処理設計の関係について説明します。

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

*1:UNIX系OS間でアプリケーションの移植性を高めるためにIEEEが策定した標準規格「POSIX」で定義されているC言語の関数群のこと

*2:Webサービスを設計・実装する際に広く採用されているアーキテクチャスタイル。REST(Representational State Transfer)の原則に従い、システム内のデータや機能を「リソース」として捉え、それらに対して標準的なHTTPメソッド(GET、POST、PUT、DELETEなど)を用いて操作を行う。各リソースは一意のURIで表現され、クライアントはそのURIを介してリソースの状態を取得したり変更したりする。レスポンスは通常JSONやXMLといったフォーマットで返され、ステートレスな通信を前提とするため、各リクエストが独立して完結するのが特徴。この仕組みにより、シンプルかつ拡張性の高いAPI設計が可能となり、異なるシステムやプラットフォーム間での相互運用性が確保される。

*3:ISO/IEC 25010:2011に定義されている。

*4:ISO/IEC 25010:2011に定義されている。

*5:データをクライアントとサーバーの間でやり取りする際に、できるだけコンパクトかつ効率的に表現すること。

*6:Entity Tagの略。リソースのバージョンを識別するトークン(【例】ハッシュ値)。MDN ETagを参照のこと。

*7:ISO/IEC 25010:2011に定義されている。

*8:あらかじめ設定された上限に「到達したことを検知」するためのしきい値。到達した場合でも処理は止まらないが、警告を出したり、通知を送ったりして利用者に注意を促す。

*9:あらかじめ設定された絶対的な上限で、それを超える利用を強制的に遮断するしきい値。

*10:ISO/IEC 25010:2023に定義されている。

*11:指定された条件下での応答時間、処理時間、スループットなど、システムやコンポーネントの応答が、性能要求やユーザーの期待に対して適切か

*12:Service Level Agreement(サービスレベルアグリーメント)の略で、サービス提供者と利用者の間で、提供するサービスの品質やレベルを定めた契約のこと。

*13: Contents Delivery Network。Webサイトのコンテンツを高速かつ安定して配信するための仕組み。世界中に分散配置されたサーバー群(キャッシュサーバー)を利用して、ユーザーの地理的な位置に近いサーバーからコンテンツを配信することで、表示速度の向上やサーバーへの負荷軽減を実現する。

*14:データベース(DB)の検索やデータ取得を効率化するために、テーブルの列に適切なインデックスを設計・設定し、クエリの実行速度やリソース利用効率を改善すること。

*15:データベースにアクセスする際に、本来なら 1回のクエリでまとめて取得できるデータ を、繰り返し多数のクエリで取得してしまう設計上の非効率のこと。多くの場合、「一覧取得後に関連データを1件ずつ問い合わせる」ことで発生する。

*16:指定された条件下で、システムやコンポーネントがどれだけ効率的にハードウェアやソフトウェアの資源(CPU、メモリ、ネットワークなど)を利用するか。

*17:あるリクエスト(【例】商品一覧の取得、集計結果の計算)に対してサーバーが生成したレスポンスを保存し、同じ条件で再度リクエストが来たときに、保存済みの結果をそのまま返す仕組み

*18:将来必要になることが予想されるデータを、事前にまとめて取得しておく手法

*19:システムが、パフォーマンスを保ちながら処理できる最大ユーザー数、データ量、トランザクション数などの上限が要求を満たしているか、または想定された負荷に耐えられるか

*20:一定時間内にクライアントが送信できるリクエスト数を制御する仕組み。

*21:APIやシステムへのリクエストの処理速度を意図的に制御する仕組み。遅延応答、優先度制御など。

*22:処理を即時に完了させず、バックグラウンドや別のプロセスに任せて並行的に進める仕組み。ジョブキュー / メッセージキューを使用し、「処理依頼を受け付けた」ことだけをクライアントに返す。処理結果は、「ジョブ完了状態」を後から確認するポーリングや、完了時にサーバーが通知するWebhookでAPIクライアント側システムが受け取る。

*23:ISO/IEC 25010:2023に定義されている。

*24:他のシステムやアプリケーションと同じ環境(OS、ネットワーク、デバイス)上で動作する際に、競合を起こさず正常に機能できるか

*25:HTTPレスポンスやリクエストにおいてキャッシュの挙動を制御するための主要な指示ヘッダー。レスポンスに付与することで、ブラウザやCDNなどの中間キャッシュがどの程度の期間データを保存できるか、また再利用時に再検証が必要かどうかを指定できます。代表的なディレクティブには、キャッシュ可能時間を秒数で示す max-age、キャッシュを完全に禁止する no-store、常に再検証を求める no-cache、共有キャッシュ向けに適用する public/個人用キャッシュに限定する private などがある。これにより、配信効率の向上と最新性のバランスを柔軟に調整できる。

*26:キャッシュがレスポンスを利用できる条件を示すためのHTTPレスポンスヘッダー。レスポンス内容が特定のリクエストヘッダーに依存する場合、そのヘッダー名を Vary に列挙する。これにより、CDNやブラウザキャッシュはリクエスト条件ごとにレスポンスを区別して保存し、適切に返却できる。たとえば Vary: Accept-Encoding とすれば、圧縮方式の違いに応じてキャッシュを分け、gzip非対応クライアントに誤った圧縮データを返すことを防ぐ。同様に Vary: Accept-Language は、言語設定に応じて異なる翻訳ページを正しくキャッシュさせる用途で用いられる。適切に指定しないと、ユーザーに不正確なレスポンスが返る原因となるため、国際化対応や圧縮配信などでは特に重要。

*27:他のシステム、製品、コンポーネントと情報を交換し、相互に利用できる度合い。データ形式や通信プロトコルの互換性、APIの標準準拠が適切か

*28:ISO/IEC 25010:2023に定義されている。

*29:ソフトウェア製品またはシステムが、欠陥の発生頻度や障害の発生確率が低く、安定して期待されるサービスを提供できる度合い

*30:必要なときにサービスや機能を利用できる度合い

*31:ハードウェアやソフトウェアの障害、または操作ミスが発生しても、許容できる性能レベルで動作を継続できる度合い

*32:エラーや一時的な失敗が発生したときに、リトライ間隔を徐々に長くしていくアルゴリズム。【例】1秒 → 2秒 → 4秒 → 8秒 → 16秒。リトライ秒数をレスポンスヘッダのRetry-Afterで指定する。

*33:待機時間や遅延にランダム性を加えること。

*34:ネットワークやAPI通信で新しい接続を開始する際に、データ送信速度(スループット)が最大まで使えず、徐々にしか上がらない現象。

*35:普段よりも急激にリクエスト数や処理量が増加し、システムやAPIに一時的に大きな負荷がかかる現象を指します。「スパイク」は 突発的・瞬間的な山のような負荷の立ち上がりを意味する。

*36:同じリクエストを何度繰り返しても、最終的な結果が変わらない性質。

*37:障害や停止が発生した後、必要なデータを復旧し、望ましい運用状態を一定時間内に回復できる度合い

*38:ISO/IEC 25010:2023に定義されている。

*39:権限を持つユーザーのみが情報にアクセスできるように制御し、データが不正に閲覧・漏洩されないことを保証するか

*40:TLS1.2 以上を必須とすることで、既知の脆弱性が多い古いバージョン(SSL, TLS1.0/1.1)を排除できる。

*41:HTTP Strict Transport Security。ドメインに常に HTTPS でアクセスすることを強制する仕組み。中間者攻撃(HTTP ダウングレード攻撃や Cookie 盗聴)を防げる。

*42:TLSで使用される暗号スイートは、鍵交換方式・暗号アルゴリズム・ハッシュ関数の組み合わせ。最新の強力なスイートを使用することで、盗聴や改ざんのリスクを減らす。

*43:セッションで使った暗号鍵が漏れても、過去の通信内容は解読できないことを保証する性質です。これにより、サーバー秘密鍵が将来漏洩しても過去のAPI通信が守られる。TLS1.3 では必ず前方秘匿性が保証される。

*44:個人情報など(氏名、住所、電話番号、クレジットカード番号など)の一部または全部を置き換えて、本物の値を隠す処理。基本的に不可逆(戻せない)

*45:個人情報などを、一意なトークン(代替ID)に置き換える仕組み。変換元とトークンの対応関係は専用の安全なトークンサービスが管理し、値を元に戻せる(可逆性がある)。PCI DSS対応(クレジットカード業界のセキュリティ基準)で広く使われる。

*46:認可(Authorization)のためのフレームワーク 。ユーザーが自分の認証情報(ID/パスワード)を第三者アプリに渡さなくても、APIやサービスへのアクセス権を委譲できる仕組みを提供する。

*47:OAuth2 を拡張した「認証(Authentication)のための仕様。OAuth2 はあくまで「誰がどの範囲でアクセスできるか」を管理する仕組みであるが、OpenID Connect を組み合わせることで「そのユーザーが誰なのか」を安全に識別できる。

*48:ブラウザが持つ同一オリジンポリシー(Same-Origin Policy) によって、異なるドメインからのリクエストは基本的にブロックされる。ただし、APIを外部から使えるようにする場合は、CORSヘッダ(Access-Control-Allow-Origin)を設定し、許可するオリジン(ドメイン)を明示する必要がある。

*49:APIを利用する際にリクエストと一緒に送られる「認証・認可関連の情報」。WebブラウザがクロスオリジンでAPIを呼び出す際に、「資格情報(credentials)」として付与されるのは、Cookie(セッションIDやログイントークンなど)、認証ヘッダ(Authorization: Bearer のようなAPIキー・アクセストークン。)、TLSクライアント証明書((mTLS利用時に)クライアントが提示する証明書。)など。

*50:Access-Control-Allow-Credentialsヘッダで、Cookieや認証ヘッダを含めるかを制御する

*51:情報や処理が不正に改ざんされないように保護し、正確で一貫性のある状態を維持できるか

*52:APIリクエストの本文やヘッダに対して、秘密鍵を用いて HMAC-SHA256 などのハッシュを計算し、署名を付与する仕組み。サーバーは同じ秘密鍵を使ってハッシュを再計算し、送信された署名と一致するかを検証する。

*53:Webhook で外部サービスからイベント通知を受け取る場合、通知が攻撃者から偽造されていないことを保証する仕組み。送信元サービスはイベントデータに署名を付与し、受信側はその署名を検証する。代表例として、Stripe や GitHub の Webhook では HMAC-SHA256 による署名検証が必須になっている。

*54:ユーザーまたはシステムが実行した行為について、後から否認できないよう証拠を保持し、責任を明確にできるか

*55:JSON Web Signature。JSONデータに電子署名を施して改ざん検知や送信者の正当性を保証する仕組み。JWT(JSON Web Token)の署名部分などにも利用されている。

*56:相互TLS認証(mutual TLS, mTLS) で利用される証明書のこと。通常のTLS通信では「サーバー証明書」を使ってクライアントがサーバーの正当性を検証するが、mTLSでは サーバーとクライアントの双方が証明書を提示し合い、お互いを認証する。

*57:APIのリクエストやレスポンスに付与される 「時刻印(タイムスタンプ)」を示すHTTPヘッダ。主にセキュリティや信頼性を高める目的で利用される。攻撃者が過去のリクエストを盗聴して再送(リプレイ)するのを防いだり、サーバーが受け取った X-Timestamp と現在時刻を比較して、許容範囲(【例】±5分以内) に収まっているか確認したりする。

*58:ユーザーやシステムの操作を特定の主体に関連付けられるよう記録し、必要に応じて追跡できるか

*59:W3Cが策定した Trace Context 仕様で定義されているHTTPヘッダ。分散システム間でリクエストのトレース情報(トレースIDやスパンIDなど)を伝達するために利用される。これにより、システムやソフトウェア間の呼び出しを一貫して追跡でき、ログやメトリクスを結びつけて可観測性を高めることができる。OpenTelemetry, Jaeger, Zipkin, Datadog, AWS X-Ray などの APM / 分散トレーシングツールで広く採用されている。新規システムや分散トレーシング対応のサービスでは、X-Request-Idよりも、ほぼ traceparent が主流。

*60:X-Request-Id は、リクエストを一意に識別するために用いられる非標準のHTTPヘッダ。各サービスやフレームワークが独自に生成・利用する。ログやレスポンスに含めることで、リクエスト単位での追跡や問い合わせ対応が容易になる。レガシー環境やシンプルなリクエスト追跡では、依然として traceparentよりも、X-Request-Id が使われている。

*61:latency:処理や通信にかかる「待ち時間」や「遅延時間」のこと。

*62:ユーザー、デバイス、システム、通信が真正であることを確認し、なりすましを防止できるか

*63:JSON Web Token。JSON形式のデータを使って「誰が・何をしたか」を安全に表現し、署名付きでやり取りできるトークン規格。主に 認証や認可 の仕組みで利用され、OAuth2やOpenID Connectでも広く使われている。JWTはコンパクトでURLセーフな文字列として表現され、WebやAPIの通信で利用しやすいのが特徴。

要件定義と画面設計

シリーズ: 要件定義とはそもそも何か

TRACERYプロダクトマネージャーの haru です。

画面は、ユーザーと製品やサービスをつなぐ重要な接点です。

優れた画面は、ユーザーが迷うことなく操作できるよう設計されており、「使いやすい」と感じさせるユーザー体験を生み出します。

反対に、画面操作がわかりにくければ、どれほど高機能なシステムであっても、その価値に気づく前にユーザーが離れてしまいます。

そのため、画面はユーザーが継続的に使いたいと感じる体験を設計するうえで、極めて重要な役割を担っています

本記事では、システム開発における画面設計の進め方や、要件定義との関係について解説します。

メンタルモデルに沿った画面設計の重要性

メンタルモデル*1とは、人がある物事や仕組みについて、「こうすればこうなる」と頭の中で思い描く理解の枠組みのことです。

画面は、ユーザーのメンタルモデルと、画面の見え方や動作が一致していることが重要です。

ユーザーが直感的に操作できたり、「思ったとおりに動いた」と感じられれば、迷わず使えて、学びやすく、ミスも起こりにくい画面になります。

一方で、メンタルモデルとのずれがあると、操作に戸惑い、不信感やストレスにつながりやすくなります

ユーザーのメンタルモデルと画面の挙動を一致させるには

どうすれば、システムにおいてユーザーのメンタルモデルと画面の挙動を一致させられるのでしょうか。

多くのユーザーは、システムを使うときに「この注文をキャンセルしたい」「この商品を登録したい」など、“どの対象に対して操作するか”を先に思い浮かべる傾向があります。

これは、認知心理学における「対象ベースの注意」の考え方*2とも一致しており、人はまず行動対象に意識を向けたうえで、それに対する操作を決定するのが自然な思考プロセスとされています。

つまり、ユーザーの思考は次のような順序で組み立てられています。

  1. 対象の特定:操作の対象は何か(例:注文)
  2. 操作する:その対象に何をしたいか(例:キャンセル)

この「対象 → 操作」という順序が、ユーザーが持つメンタルモデルの核となる構造です。この順序をそのまま画面に反映することが重要です。

ユーザーが思い浮かべたとおりの順序で操作できることで、迷いのない、自然な画面につながります。

クラス設計を元にした画面設計(オブジェクト指向UI)

「対象 → 操作」というユーザーのメンタルモデルを、画面設計に反映させるためのベースとして活用できるのが、オブジェクト指向のクラス設計です。

クラス設計については、要件定義とクラス設計 - TRACERY Lab.(トレラボ)を参照してください。

クラス設計を画面設計で利用する基本的な流れとしては、あるクラス(例:注文)を中心に据え、その属性情報(注文日、注文者情報、注文内容等)と操作(キャンセル等)を同一画面に配置します。

これにより、ユーザーは「注文に対して操作する」という自然な流れで画面を利用できます。

クラス設計を画面設計で利用する

このように、クラス(オブジェクト)を起点に設計された画面を、オブジェクト指向UIと呼ばれます。

オブジェクト指向UIの着想は、1970年代に Xerox PARC(パロアルト研究所)で誕生した Smalltalk の GUI 環境に端を発し、オブジェクトを直接操作するという新しいユーザー体験を提示しました。

その後 Apple が 1980年代前半から Lisa/Macintosh で実用化し、IBM は 1990年代の OS/2 Workplace Shell でデスクトップ全体をオブジェクト化するなど各社が発展させ、現代UIの礎となりました。

オブジェクト指向UIの設計についてさらに知識を深めたい方は、以下の書籍を参照してください。

要件定義の成果物と画面設計の連携

機能要件、クラス設計から画面上の表示内容を設計する

画面設計では、要件定義で作成された開発品目一覧でリストアップされた画面(例:注文管理画面)を詳細化します。

以下は、注文管理画面の機能要件です。

開発品目 機能要件
注文管理画面 - 注文を検索し、リスト形式で表示できる
- 顧客名、メールアドレス、注文ID、商品ID、注文ステータスで検索できる
- 注文内容の詳細を表示できる。購入した商品名、数量、単価など、顧客情報(名前・メールアドレス、配送先住所)
- 注文ステータスを更新できる(例:処理中 → 出荷済)
- 注文のキャンセル処理ができる(キャンセル理由記録含む)

下図のように、画面機能要件の記述に含まれる名詞に着目し、その要件を実現するためのクラスを選定します。

機能要件を実現するためのクラスを選定する

機能要件をどのように整理し定義するかについては、以下の記事で具体的な手順と考え方を解説しています。

ナビゲーションの設計

ユーザーが画面を操作する際の思考は、前述のとおり次の順序で進みます。

  1. 対象の特定:操作の対象は何か(例:注文)
  2. 操作する:その対象に何をしたいか(例:キャンセル)

画面設計では、この思考の流れを自然に誘導できる導線が重要です。

まず、ユーザーが操作対象を迷わず特定できるよう、導線(画面遷移・画面操作)を設計します。

多くの場合、この導線は「条件を指定する → 一覧を表示する → 一覧から対象を選択する」という流れが基本です。このパターンは多くの画面設計に適用できます。

ナビゲーション設計

このように、操作対象をスムーズに特定できるように導く画面遷移や操作の流れを設計することを、ナビゲーション設計と呼びます。

ナビゲーション設計は、ユーザーが迷うことなく目的の機能や情報にたどり着き、操作できるように導線を明確に整えるプロセスです。

ナビゲーションは、あたかも目的地までの道順を案内するカーナビのように、ユーザーの操作意図を先回りしてサポートする役割を担います。

画面レイアウトの設計

ナビゲーション設計が完了したら、次は画面レイアウトの設計に進みます。

画面レイアウトとは、文字、画像、ボタンなどのUI要素を画面上で配置し、その配置によって操作のしやすさと視覚的な流れを生み出す構成です。

画面レイアウトの設計では、次の4つの観点を考慮することが重要です。

観点
デバイス PC、スマートフォン、タブレット、ゲーム機、スマートウォッチ、テレビなど
OS(オペレーティングシステム) Windows、macOS、iOS、Android、Linuxなど
アプリケーションの実行形態 Webアプリ、スマートフォンのネイティブアプリ、デスクトップアプリなど
採用するフレームワーク Single Page Application(SPA)、マルチページ構成など

これらは、画面の遷移構造、表示領域、操作方法、画面コンポーネントの選択に直接影響します。

技術的な前提条件と利用環境を総合的に把握し、ユーザーの意図を自然に導くレイアウトを設計することで、使いやすく洗練された画面を実現できます。

以下では、それぞれの観点について説明します。

デバイス

デバイスはユーザーの物理的な利用環境を規定します。

PC、スマートフォン、タブレット、ゲーム機、スマートウォッチ、テレビなど、画面サイズや入力手段(マウス、タッチ、リモコンなど)が異なるため、それぞれに適した情報の配置や操作導線が求められます。

OS(オペレーティングシステム)

OSは、標準的なUIのスタイルやユーザーの慣れに関わります。

Windows、macOS、iOS、Android、Linuxなど、プラットフォームごとに推奨されるUI設計や操作パターンがあります。

アプリケーションの実行形態

アプリケーションの実行形態は、Webアプリ、スマートフォンのネイティブアプリ、デスクトップアプリなどのことです。

形態によって使用できるUIコンポーネントやレスポンス速度、オフライン対応の可否が異なります。

採用するフレームワーク

近年では、採用するフロントエンドフレームワークも、画面設計に大きな影響を及ぼします。

たとえば、Single Page Application(SPA)では、画面遷移をURL単位で切り替えるのではなく、JavaScriptによって同一ページ内で動的にコンテンツを切り替えます。

この仕組みにより、ページ全体を再読み込みせずに必要な要素だけを差し替えることができ、モーダルやタブ、部分更新を活用したインタラクティブなUI設計が可能になります。

一方、従来のマルチページ構成(MPA:Multi Page Application、例:Django+Djangoテンプレート)では、明確な画面遷移を前提とした設計となります。

最近はMPAとSPAの両方のメリットを兼ね備えたハイブリッド構成(例:Next.js、Nuxt.js)や、HTMXのような軽量フレームワークも登場しています。

このため、画面要件、保守性、開発のしやすさを考慮してフロントエンドフレームワークを選択し、これに合わせた画面設計を行う必要があります。

画面レイアウトの設計における要件定義との関係

デバイス、OS(オペレーティングシステム)、アプリケーションの実行形態、採用するフロントエンドフレームワークといった技術要素は、要件定義で作成されるシステム構成図に明示されます。

システム構成図は、主に非機能要件を基盤として設計され、システムがどの環境で動作し、どのような技術的前提に基づくかを整理する役割を果たします。

画面設計もまた、非機能要件に強く依存しており、その品質や操作性を大きく左右します。

非機能要件と画面設計の関係については、後述します。

要件定義と画面レイアウト設計の関係

上図の例では、システム構成図で、以下の要素を指定しています(図内の赤線)。

技術観点 内容
デバイス PC
OS - macOS 15.x
- Windows11
ブラウザ Chrome
SPAフレームワーク Next.js 15.x

システム構成図の作成方法については、以下の記事で手順を解説していますので、参照してください。

レイアウトパターンの活用

レイアウト設計における4つの観点(デバイス、OS、アプリケーションの実行形態、採用するフレームワーク)の中で、デバイスは最も影響力の大きい要素です。

なぜなら、デバイスごとに画面サイズや表示領域、操作方法が異なり、UIの構成やユーザー体験の設計方針が大きく変わるからです。

特にPCとモバイルでは、その差が明確です。

PCは広い画面を活かし、複数の情報を同時に表示して複雑な操作を提供できます。

一方、モバイルでは限られた表示領域の中で、情報を絞り込み、操作をシンプルに設計する必要があります。

このように、デバイス特性を理解し、それに応じた情報配置や操作導線を設計することが、使いやすく直感的な画面を実現する鍵となります。

レイアウトパターンの参考書籍やガイドライン

画面レイアウトを設計する際は、既存のレイアウトパターンを参照することで設計の質とスピードを大きく高められます

これらのパターンは、画面サイズや操作特性に応じた情報配置や導線設計の成功事例を集約しており、一貫性のある設計を実現します。

適切なパターンを活用すれば、無駄な試行錯誤を減らし、短時間で高い完成度を備えたUIを構築できます。

以下では、レイアウトパターンを学ぶ上で参考となる書籍やデザインガイドラインを紹介します。

書籍

書籍は、3冊を紹介します。

オブジェクト指向UIデザイン──使いやすいソフトウェアの原理

オブジェクト指向UIデザイン(OOUI)の考え方と実践手順を、具体例を交えて体系的に解説しています。

以下で、レイアウトパターンを紹介しています。

  • 『第3章 3-5 ステップ3. レイアウトパターンの適用』

モデルベースUIデザイン 構造化UIと情報設計の方法論

情報構造をモデル化し、それをもとにUIを段階的に設計していくプロセスを整理して解説しています。

以下で、レイアウトパターンを紹介しています。

  • 6-3 デスクトップのためのインタラクションパターン
  • 6-4 モバイルのためのインタラクションパターン

デザイニング・インターフェース 第2版 ―パターンによる実践的インタラクションデザイン

優れたUIを設計するための実践的なパターンを、豊富な事例とともに解説しています。

原著は2010年の出版ながら、現代のUIにも通用するパターンが数多く取り上げられています。

以下で、レイアウトパターンを紹介しています。

  • 2〜9章 PC系のパターン
  • 10章 モバイルへの対応

ガイドライン

ガイドラインは、Appleが提供する『Human Interface Guidelines』とGoogleが提供する『Material Design』が有名です。

Human Interface Guidelines(Apple)

Appleが提供するiOS、macOS、その他Appleプラットフォーム向けの公式ガイドラインです。タブバー、ナビゲーション、フォント、カラーなど、Apple製品に最適化されたUI設計指針を詳細に記載しています。

developer.apple.com

Material Design(Google)

Google が 2014 年に発表したデザイン言語(デザインシステム)で、WebやモバイルアプリなどのUIに統一性と操作性をもたらすことを目的としています。

物理世界の「紙(Material)」の特性をメタファーとしており、影・奥行き・動きを利用して階層構造や操作可能性を直感的に伝えるのが特徴です。

Material Design は Android をはじめ、Google のサービス(Gmail、Google Drive など)や多数のWebアプリケーションで採用されています。

m3.material.io

非機能要件と画面設計の連携

非機能要件は下図に示す要素で構成されます。

画面設計では、これらの非機能要件のうち、利用品質有効性効率性満足性コンテキストカバレージプロダクト品質性能効率互換性ユーザビリティセキュリティ に着目します*3

これらの多くの特性が示す通り、画面設計は非機能要件を満たすことで初めて高品質なユーザー体験を実現します。

非機能要件の一覧

有効性

有効性*4は、ユーザーや関係者が目標や成果を達成できる度合いです。

たとえば、オンラインショップでユーザーが目的の商品を検索し、正しくカートに追加して支払いまで完了できる場合、有効性が高いといえます。

設計観点 内容
操作対象の明確化 ユーザーが目的の機能や情報を迷わず見つけられるか
入力エラーの防止 入力フォームの設計やエラーメッセージの分かりやすさ
タスク完了までの誘導 適切な導線設計(ワークフロー)により、迷わず正しい手順を踏めるか

効率性

効率性*5は、ユーザーが操作にかける時間や、システムが処理を行うために消費するCPU、メモリ、ネットワーク帯域といった資源に対して、どの程度の成果が得られるかを示す度合いです。

たとえば、オンラインショップで商品の購入手続きを行う場合、必要な情報が1画面に整理されており、住所や支払情報が自動で入力補完されると、ユーザーは短時間で購入を完了できます。

これにより、少ない操作と時間で目的が達成でき、効率性が高いといえます。

設計観点 内容
操作ステップの最小化 目標達成までに必要なクリック数や画面遷移を減らし、操作を簡潔にする
情報探索コストの削減 必要な情報を素早く見つけられるように配置やラベルを工夫する
入力負担の軽減 自動補完や選択リストを活用し、ユーザーの手入力や確認作業を最小限に抑える

満足性

満足性*6は、使用体験や心理的影響を含む利用者の幸福感や受容性の度合いのことです。「有用性」「信頼性」など4つのサブ特性*7に分類されています。概要を次の表に示します。

サブ特性 内容
有用性(Usefulness) システムがユーザーのニーズや期待にどの程度応えるか
信頼性(Trust) システムの動作や結果に対してユーザーがどれだけ信頼できると感じるか
楽しさ(Pleasure) システムの使用が心理的に心地よく、ポジティブな体験をもたらすか
快適さ(Comfort) 物理的・精神的負担が少なく、安心して利用できるか

以下の表は、満足性のサブ特性を画面設計に落とし込む際の具体策をまとめたものです。

サブ特性 画面設計での具体例
有用性(Usefulness) - 購入履歴からワンクリックで再注文できるショートカットを配置
- ユーザーが求める商品を素早く見つけられるよう、検索結果にフィルターや並び替え機能を提供
- レコメンド機能で関連商品を提示し、ユーザーのニーズを先回りして提案
- 配送状況をリアルタイムで確認できるトラッキング画面を提供
信頼性(Trust) - 常時SSL対応を明示し、セキュアな接続であることを表示(例:鍵アイコン)
- 返品・返金ポリシーをわかりやすく表示し、ユーザーに安心感を与える
- レビューや評価を偽装なく表示し、信頼性を担保
- 決済画面で信頼できる決済事業者のロゴや認証マークを表示
楽しさ(Pleasure) - 商品画像を拡大表示でき、360度ビューや動画で楽しめる体験を提供
- セールやキャンペーン時に視覚的にワクワク感を演出するアニメーションやアイコンを使用
- 購入完了画面で「ありがとう」メッセージや次回クーポンを表示して購買体験を向上
快適さ(Comfort) - 長時間閲覧しても疲れにくい落ち着いた配色や適切な文字サイズを採用
- ローディング中は進捗バーやメッセージを表示し、不安感を与えない
- 入力フォームはエラー時に具体的な改善ヒントを表示し、ユーザーが安心して修正できる
- モバイル利用時に片手操作でも快適に操作できるUI配置を採用

コンテキストカバレージ

コンテキストカバレージ*8は、システムが想定される使用環境(コンテキスト)において適切に動作し、ユーザーが目標を達成できる範囲を表します。

ここでいう「コンテキスト」とは、ユーザーのスキル、使用するデバイス、ネットワーク環境、業務状況など、システム利用時のさまざまな条件を含みます。

「コンテキスト完全性」「柔軟性」など2つのサブ特性に分類されています。概要を次の表に示します。

サブ特性 内容
コンテキスト完全性(Context Completeness) 想定されたすべての利用条件や環境において、必要な性能や動作を提供できる度合い
柔軟性(Flexibility) 新しい利用環境や予期しない条件にも適応し、ユーザーが目標を達成できる度合い

以下の表は、コンテキストカバレージのサブ特性を画面設計に落とし込む際の具体策をまとめたものです。

サブ特性 画面設計での具体例
コンテキスト完全性(Context Completeness) - PC、スマートフォン、タブレットなど異なるデバイスに対応するレスポンシブデザインを採用
- 高齢者や視覚障害者向けに文字サイズ変更やコントラスト調整機能を提供
- オフライン環境でも閲覧できるキャッシュ機能を導入し、一部機能を制限付きで利用可能にする
柔軟性(Flexibility) - 新しい支払方法(例:QRコード決済)の追加に対応できるUI構造を採用
- キャンペーンやセールに応じてバナーやメニューを動的に差し替え可能な設計
- 画面要素をコンポーネント化し、デザイン変更や機能拡張が容易な構成にする
- 想定外のエラーやネットワーク断に対しても、再試行や案内メッセージを表示してユーザーが続行できるようにする

性能効率

性能効率*9は 、指定された条件下でシステムが必要な性能をどれだけ効率的に提供できるかを表します。

「時間効率性」「資源使用効率性」「容量」など3つのサブ特性に分類されています。概要を次の表に示します。

サブ特性 設計観点
時間効率性(Time Behaviour) 指定された条件下での応答時間、処理時間、スループットなど、システムやコンポーネントの応答が、性能要求やユーザーの期待に対して適切か
資源使用効率性(Resource Utilization) 指定された条件下で、システムやコンポーネントがどれだけ効率的にハードウェアやソフトウェアの資源(CPU、メモリ、ネットワークなど)を利用するか
容量(Capacity) システムが、パフォーマンスを保ちながら処理できる最大ユーザー数、データ量、トランザクション数などの上限が要求を満たしているか、または想定された負荷に耐えられるか

以下の表は、性能効率のサブ特性を画面設計に落とし込む際の具体策をまとめたものです。

サブ特性 画面設計での具体例
時間効率性(Time Behaviour) - 一覧画面はページングまたは無限スクロールで分割表示
- ボタン押下から処理完了までを2秒以内に収める
- 重い処理は非同期で実行し、完了通知を出す
資源使用効率性(Resource Utilization) - 表示に不要な画像・動画の遅延読み込み(Lazy Load)
- 高頻度で利用されるデータをローカルストレージにキャッシュ
- 画像やフォントは軽量形式(WebP, WOFF2など)を使用
容量(Capacity) - 初期表示では最新10件だけ表示、ユーザー操作でさらに表示
- 検索条件の入力を必須にし、全件表示を避ける
- 「全選択」や「一括操作」は件数制限を設ける(例:最大100件)
- データ量に応じて警告や注意書きを表示(例:「1万件以上のデータがあります」)

互換性

互換性*10は、システムやソフトウェアが他の製品、コンポーネント、または環境と競合せずに共存し、相互に情報を交換・活用できる度合いを示します。異なるシステム間でのスムーズな動作やデータ連携を保証することが目的です。

互換性は、「共存性」「相互運用性」など2つのサブ特性に分類されています。概要を下表に示します。

サブ特性 設計観点
共存性(Co-existence) 他のシステムやアプリケーションと同じ環境(OS、ネットワーク、デバイス)上で動作する際に、競合を起こさず正常に機能できるか
相互運用性(Interoperability) 他のシステム、製品、コンポーネントと情報を交換し、相互に利用できる度合い。データ形式や通信プロトコルの互換性、APIの標準準拠が適切か

以下の表は、互換性のサブ特性を画面設計に落とし込む際の具体策をまとめたものです。

サブ特性 画面設計での具体例
共存性(Co-existence) - 画面に組み込んだ外部サービス(広告・チャットウィジェットなど)が動作してもUIが崩れない設計
- ブラウザの拡張機能(例:翻訳ツール、広告ブロッカー)が動作しても重要なUIが欠けない設計
- 他アプリとの同時利用を想定し、ポップアップや通知の重なりを避ける
相互運用性(Interoperability) - 外部サービスとの連携(例:SNSログイン、外部決済)に対応するため、統一されたUIで権限確認ダイアログを表示
- データのインポート/エクスポート画面で、標準フォーマット(CSV、JSONなど)を選択できる機能を提供
- 連携APIの結果やエラーをユーザーにわかりやすくフィードバックし、必要な操作案内を表示

ユーザビリティ

ユーザビリティ*11は、使いやすさ・理解しやすさ・安全性・アクセスしやすさを包括的に評価する特性です。

システム開発においては、UI/UX設計の品質を直接的に測る重要な指標となります。

「適切度認識性」「学習容易性」「運用容易性」「ユーザーエラー防止性」など8つのサブ特性に分類されています。概要を次の表に示します。

サブ特性 設計観点
適切度認識性(Appropriateness Recognizability) 機能やコンテンツの意味・目的がユーザーにとって直感的にわかるか
学習容易性(Learnability) 初めて使うユーザーでもすぐに操作方法を理解できるか
運用容易性(Operability) 操作や制御が簡単に行えるか、操作負荷が少ないか
ユーザーエラー防止性(User Error Protection) ユーザーの誤操作を未然に防ぎ、発生時にも適切に対応できるか
ユーザー関与性(User Engagement) ユーザーが積極的に操作したくなるような工夫があるか
包括性(Inclusivity) 多様なユーザー(年齢、障がいなど)でも使いやすい設計か
ユーザー支援(User Assistance) 操作時に適切な支援が受けられるか
自己記述性(Self-Descriptiveness) 今なにをすべきか、次に何が起こるのかが自然とわかるか

以下の表は、ユーザビリティのサブ特性を画面設計に落とし込む際の具体策をまとめたものです。

サブ特性 画面設計での具体例
適切度認識性(Appropriateness Recognizability) - ボタンに「保存」「削除」など具体的な動詞を使う
- アイコン+ラベルの併用
- 「+」ボタンに「新規作成」とツールチップを表示
学習容易性(Learnability) - 初回ログイン時のガイドツアー表示
- 一貫性のあるボタン配置・用語(例:常に右下に「保存」)
- 操作履歴やチュートリアルリンクの配置
運用容易性(Operability) - キーボード操作やショートカットのサポート
- 頻繁に使うボタンを目立つ位置に配置
- フォーカス順の最適化(Tabキーで自然な順に移動)
ユーザーエラー防止性(User Error Protection) - 削除操作には確認ダイアログを表示
- 入力チェックはリアルタイムで実施(例:必須項目、形式)
- Undo機能や「元に戻す」オプションの提供
ユーザー関与性(User Engagement) - ステップ表示で進捗を可視化(例:申請手続きのフロー)
- 成果や進捗の視覚化(例:グラフ、バッジ)
- ローディング時のアニメーションやヒント表示
包括性(Inclusivity) - カラーユニバーサルデザイン(CUD)対応
- 文字サイズ変更機能の提供
- 音声読み上げ対応(ARIA属性の付与など)
ユーザー支援(User Assistance) - 入力欄にヒントや例(プレースホルダーやラベル)
- コンテキストヘルプの用意
- FAQやチャットサポートへの導線
自己記述性(Self-Descriptiveness) - 現在のステータス表示(例:「下書き中」「承認待ち」)
- フォームの入力欄に「ここに電話番号を入力してください」などの案内文
- エラーや成功時のフィードバック表示(例:「保存しました」)

セキュリティ

セキュリティ*12は、「機密性」「完全性」「否認防止」「責任追跡性」「真正性」など5つのサブ特性に分類されています。概要を次の表に示します。

サブ特性 設計観点
機密性(Confidentiality) 権限を持つユーザーのみが情報にアクセスできるように制御し、データが不正に閲覧・漏洩されないことを保証するか
完全性(Integrity) 情報や処理が不正に改ざんされないように保護し、正確で一貫性のある状態を維持できるか
否認防止(Non-repudiation) ユーザーまたはシステムが実行した行為について、後から否認できないよう証拠を保持し、責任を明確にできるか
責任追跡性(Accountability) ユーザーやシステムの操作を特定の主体に関連付けられるよう記録し、必要に応じて追跡できるか
真正性(Authenticity) ユーザー、デバイス、システム、通信が真正であることを確認し、なりすましを防止できるか

以下の表は、セキュリティのサブ特性を画面設計に落とし込む際の具体策をまとめたものです。

サブ特性 画面設計での具体例
機密性(Confidentiality) - ログイン画面でパスワードをマスク表示し、表示切替ボタンを設置
- 個人情報入力欄には入力内容のツールチップ非表示、コピー不可を設定
- 重要情報を表示する際は二段階認証や再入力を要求
完全性(Integrity) - 重要な入力フォームでは送信前に確認画面を表示
- 入力データを改ざん防止のためチェックサムや署名付きで送信
- 更新履歴を画面で確認できる監査ログ表示機能を提供
否認防止(Non-repudiation) - 注文完了時に電子署名付きの確認メールを送付
- ユーザー操作(購入、解約など)ごとに日時・ユーザーIDを明示した履歴を表示
- 重要操作の確認画面で「同意」チェックボックスを必須化
責任追跡性(Accountability) - 管理画面でユーザーごとの操作ログを閲覧可能にする
- 画面上に「最終更新者」「最終更新日時」を表示
真正性(Authenticity) - ログイン時に多要素認証(MFA)を導入
- セッションタイムアウト後は再ログインを要求し、なりすましを防止
- 外部連携サービス利用時に信頼できる認証プロバイダ(OAuth、SAMLなど)を使用し、画面上に認証済みマークを表示

まとめ

本記事では、システム開発における画面設計の重要性と、要件定義との連携について解説しました。

下図に、要件定義の成果物と画面設計の関係をまとめました。

要件定義の成果物と画面設計の関係

画面はユーザーとシステムをつなぐ重要な接点であり、優れた設計は直感的で迷いのない操作体験を提供します。その基盤となるのが、ユーザーのメンタルモデルを反映したUI設計です。特に「対象 → 操作」という自然な思考順序を画面構成に取り入れることで、使いやすさが向上します。

ユーザーのメンタルモデルを反映するために、オブジェクト指向UIを活用することで、クラス設計と画面構成を結び付け、情報と操作を一貫性のある形で提供できます。

加えて、ナビゲーション設計や画面レイアウト設計では、デバイス・OS・フレームワークなどの技術的前提を踏まえた導線設計が不可欠です。

画面設計は非機能要件とも密接に関係し、有効性・効率性・満足性・ユーザビリティ・互換性・性能効率・セキュリティなどの品質特性を満たすことが求められます。

ユーザーの思考に沿った自然な操作性を備え、非機能要件を満たすよう技術的制約を踏まえて設計された画面は、業務効率を高め、ユーザー体験を向上させると同時に、システムの信頼性と持続的な価値を確実に支えます。

次の記事では、要件定義とAPI設計の関係について説明します。

tracery.jp

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

*1:概念モデルともいう。

*2:「対象ベースの注意(object-based attention)」は、人が空間全体ではなく、物体や対象そのものに注意を向けるという認知心理学の理論です。これは視覚情報処理において、対象が人の注意の単位になることを示しており、UI設計における「ユーザーはまず対象を見つけ、それから操作を選ぶ」という行動傾向を裏付ける根拠とされています(Duncan, J. (1984). Selective attention and the organization of visual information. Journal of Experimental Psychology: General, 113(4), 501–517. )。

*3:"Usability"は、ISO/IEC 25010:2023で、"Interaction Capability"に表現が変更された。この記事では、REBOKに従い、ユーザビリティのままとする。

*4:ISO/IEC 25010:2011に定義されている。

*5:ISO/IEC 25010:2011に定義されている。

*6:ISO/IEC 25010:2011に定義されている。

*7:非機能要件の特性(例:性能効率、セキュリティなど)の、下位に定義されている要素

*8:ISO/IEC 25010:2011に定義されている。

*9:ISO/IEC 25010:2023に定義されている。

*10:ISO/IEC 25010:2023に定義されている。

*11:"Usability"は、ISO/IEC 25010:2023で、"Interaction Capability"に表現が変更された。この記事では、REBOKに従い、ユーザビリティのままとする。

*12:ISO/IEC 25010:2023に定義されている。