Ubuntu 26.04 + .NET 10 で ASP.NET Core Razor Pages の CRUD アプリを構築し、
その成果物に対して作成した開発工程文書です。
実装済みのコードと実測値に基づいて記述しており、推測による記載は含みません。
Razor Pages 開発文書 の ①/全11回です。
シリーズ全記事(全11回)
-
【Razor Pages 開発文書 ①】要件定義書 (この記事)
- 【Razor Pages 開発文書 ②】基本設計書 (1/2) — システム構成・アーキテクチャ・画面設計
- 【Razor Pages 開発文書 ③】基本設計書 (2/2) — データ設計・外部IF・運用設計
- 【Razor Pages 開発文書 ④】詳細設計書 (1/4) — クラス構成・エンティティ・データアクセス層
- 【Razor Pages 開発文書 ⑤】詳細設計書 (2/4) — 画面制御層・起動処理
- 【Razor Pages 開発文書 ⑥】詳細設計書 (3/4) — 発行SQL・処理シーケンス
- 【Razor Pages 開発文書 ⑦】詳細設計書 (4/4) — ビュー・設定・実装上の留意点
- 【Razor Pages 開発文書 ⑧】単体テスト仕様書
- 【Razor Pages 開発文書 ⑨】結合テスト仕様書
- 【Razor Pages 開発文書 ⑩】総合テスト仕様書
- 【Razor Pages 開発文書 ⑪】受入テスト(UAT)仕様書
要件定義書
| 項目 |
内容 |
| システム名 |
BookListRazor(書籍管理システム) |
| 文書番号 |
REQ-001 |
| 版数 |
1.0 |
| 作成日 |
2026-07-24 |
| 状態 |
実装完了・稼働確認済み |
1. 文書の目的と位置づけ
1.1 目的
本書は BookListRazor が満たすべき要件を定義する。本システムは
sumiox.com の ASP.NET Core Razor Pages 記事
を題材に、Ubuntu 環境で ASP.NET Core Razor Pages と Entity Framework Core による
CRUD アプリケーションの構築手法を習得することを主眼とする学習用システムである。
本書は実装完了後に、稼働中のシステムの実態に基づいて記述している。
記載内容はすべて実装・動作確認済みの事実であり、未実装の事項は
「7. スコープ外」に明示する。
1.2 対象読者
- 本システムの保守・機能拡張を行う開発者
- ASP.NET Core Razor Pages の構成を学習する技術者
1.3 関連文書
| 文書番号 |
名称 |
内容 |
| DES-001 |
基本設計書 |
画面・データ・外部インタフェース設計 |
| DES-002 |
詳細設計書 |
クラス・メソッド・SQL の内部仕様 |
| — |
構築時設計メモ |
構築手順と実装時の技術的判断の記録 |
2. システム概要
2.1 背景
参考記事は Windows + SQL Server LocalDB を前提としているが、本システムの稼働環境は
Ubuntu である。LocalDB は Windows 専用製品であり Linux では動作しないため、
データベース製品の置き換えを含む環境差異の吸収が必要となった。
2.2 目的
書籍情報(ISBN・書名・価格・出版社・出版日・サンプル有無)を Web ブラウザから
登録・参照・更新・削除できる状態を実現する。あわせて、Razor Pages における
スキャフォールディング機能による CRUD 画面の自動生成手法を確立する。
2.3 システム化の範囲
単一の Web アプリケーションとして完結する。外部システムとの連携、バッチ処理、
帳票出力は含まない。
3. 業務要件
3.1 想定利用者
| 利用者区分 |
人数 |
説明 |
| 開発者・学習者 |
1 名 |
ローカル環境で単独利用する。利用者の区別を行わない |
本システムは利用者を識別しない。全操作が匿名の単一利用者によって行われる前提とする。
3.2 業務フロー
4. 機能要件
4.1 機能一覧
| ID |
機能名 |
概要 |
優先度 |
実装状況 |
| FR-01 |
書籍一覧表示 |
登録済み書籍を一覧表示する |
必須 |
実装済 |
| FR-02 |
書籍新規登録 |
書籍情報を入力して登録する |
必須 |
実装済 |
| FR-03 |
書籍詳細表示 |
指定した書籍の全項目を表示する |
必須 |
実装済 |
| FR-04 |
書籍情報更新 |
登録済み書籍の情報を変更する |
必須 |
実装済 |
| FR-05 |
書籍削除 |
登録済み書籍を削除する |
必須 |
実装済 |
| FR-06 |
画面遷移 |
全画面共通のナビゲーションを提供する |
必須 |
実装済 |
4.2 機能詳細
FR-01 書籍一覧表示
| 項目 |
内容 |
| 概要 |
登録済みの全書籍を表形式で一覧表示する |
| 入力 |
なし |
| 出力 |
ISBN、書名、価格、出版社、出版日、サンプル有無、操作リンク |
| 処理 |
Books テーブルの全件を取得し、登録順(主キー順)に表示する |
| 例外 |
0 件の場合は見出し行のみを表示する(エラーとしない) |
| 備考 |
絞り込み・並び替え・ページングは行わない(FR-01 の範囲外) |
FR-02 書籍新規登録
| 項目 |
内容 |
| 概要 |
入力フォームから書籍を 1 件登録する |
| 入力 |
ISBN、書名、価格、出版社、出版日、サンプル有無 |
| 出力 |
登録成功時は一覧画面へ遷移する |
| 処理 |
入力値を検証し、妥当であれば Books テーブルへ 1 行挿入する。ID は自動採番する |
| 例外 |
検証エラー時は入力画面に留まり、該当項目にエラーを表示する |
FR-03 書籍詳細表示
| 項目 |
内容 |
| 概要 |
指定 ID の書籍の全項目を表示する |
| 入力 |
書籍 ID(URL クエリ文字列) |
| 出力 |
対象書籍の全項目 |
| 例外 |
ID 未指定または該当なしの場合は HTTP 404 を返す |
FR-04 書籍情報更新
| 項目 |
内容 |
| 概要 |
指定 ID の書籍情報を変更する |
| 入力 |
書籍 ID、および変更後の全項目 |
| 出力 |
更新成功時は一覧画面へ遷移する |
| 処理 |
入力値を検証し、妥当であれば対象行を更新する |
| 例外 |
ID 該当なしの場合は HTTP 404。検証エラー時は編集画面に留まる |
FR-05 書籍削除
| 項目 |
内容 |
| 概要 |
指定 ID の書籍を削除する |
| 入力 |
書籍 ID |
| 出力 |
削除成功時は一覧画面へ遷移する |
| 処理 |
削除確認画面で対象内容を提示し、確認後に物理削除する |
| 例外 |
ID 未指定または該当なしの場合は HTTP 404 |
| 備考 |
論理削除は行わない。削除したデータは復元できない |
FR-06 画面遷移
| 項目 |
内容 |
| 概要 |
全画面共通のヘッダから主要画面へ遷移できる |
| 遷移先 |
Home、Privacy、BookLists |
4.3 データ要件
書籍 1 件が保持する情報を以下に定義する。
| 項目名 |
型 |
必須 |
説明 |
| ID |
整数 |
○(自動採番) |
システムが一意に採番する識別子 |
| ISBN |
文字列 |
○ |
書籍の ISBN。形式検証は行わない |
| 書名 |
文字列 |
○ |
書籍のタイトル |
| 価格 |
整数 |
○ |
税込・税抜の区別は持たない |
| 出版社 |
文字列 |
○ |
出版社名 |
| 出版日 |
日付時刻 |
○ |
日付部分のみを利用する想定 |
| サンプル有無 |
真偽値 |
○ |
サンプルデータか否かを表す区分 |
いずれの項目も日本語を含む Unicode 文字を扱えること。
5. 非機能要件
5.1 性能要件
| ID |
要件 |
目標値 |
備考 |
| NFR-01 |
画面応答時間 |
1 秒以内 |
ローカル環境・数十件規模での想定 |
| NFR-02 |
想定データ件数 |
数百件程度 |
全件取得方式のため大量件数は想定しない |
| NFR-03 |
同時利用者数 |
1 名 |
排他制御を要する同時更新は想定しない |
5.2 可用性要件
| ID |
要件 |
内容 |
| NFR-04 |
稼働時間 |
開発者が必要時に手動起動する。常時稼働は要求しない |
| NFR-05 |
データ永続性 |
アプリケーション再起動後もデータが保持されること(確認済) |
5.3 セキュリティ要件
| ID |
要件 |
内容 |
| NFR-06 |
CSRF 対策 |
更新系のフォーム送信に対しトークン検証を行うこと |
| NFR-07 |
XSS 対策 |
画面表示時に利用者入力値をエスケープすること |
| NFR-08 |
SQL インジェクション対策 |
データアクセスはパラメータ化された問い合わせによること |
| NFR-09 |
通信経路 |
ローカルループバック接続に限定する。外部公開しない |
利用者認証・認可は要求しない(「7. スコープ外」参照)。
5.4 運用・保守要件
| ID |
要件 |
内容 |
| NFR-10 |
起動方法 |
コマンド 1 つで起動できること |
| NFR-11 |
スキーマ変更 |
マイグレーション機能によりスキーマ変更を管理・追跡できること |
| NFR-12 |
ログ出力 |
実行された SQL を開発時に確認できること |
| NFR-13 |
バックアップ |
単一ファイルのコピーで完結すること |
5.5 移植性要件
| ID |
要件 |
内容 |
| NFR-14 |
稼働 OS |
Ubuntu 上で動作すること。Windows 固有製品に依存しないこと |
| NFR-15 |
追加ミドルウェア |
データベースサーバの別途導入を不要とすること |
5.6 国際化要件
| ID |
要件 |
内容 |
| NFR-16 |
文字コード |
UTF-8 とし、日本語の登録・表示・更新が正しく行えること |
6. 制約条件
| ID |
制約 |
内容 |
| CON-01 |
稼働環境 |
Ubuntu 26.04 LTS(WSL2 上) |
| CON-02 |
実行基盤 |
.NET SDK 10.0.302(導入済みのものを使用) |
| CON-03 |
DB 製品 |
SQL Server LocalDB は Windows 専用のため使用できない |
| CON-04 |
実装方式 |
参考記事に倣い、CRUD 画面はスキャフォールディングにより自動生成する |
| CON-05 |
通信 |
Linux では HTTPS 開発証明書のブラウザ信頼設定が煩雑なため HTTP で運用する |
| CON-06 |
プロジェクト構成 |
参考記事が前提とする MVC プロジェクトが存在しないため単一プロジェクトとする |
7. スコープ外
以下は本システムでは実装しない。将来的な拡張余地として記録する。
| 項目 |
理由 |
| 利用者認証・認可 |
単一利用者のローカル環境利用を前提とするため |
| 一覧の検索・絞り込み・並び替え |
参考記事の範囲外。数百件規模では不要と判断 |
| 一覧のページング |
同上 |
| 入力値の書式検証(ISBN 形式、価格の範囲、日付の妥当性) |
参考記事の範囲外。必須チェックのみ実施 |
| 論理削除・削除履歴 |
学習用途では物理削除で十分 |
| 排他制御(楽観ロック用のバージョン列) |
同時更新を想定しないため |
| 画面の日本語化 |
自動生成された英語ラベルをそのまま使用 |
| 帳票出力・CSV 入出力 |
要求なし |
| 外部システム連携・API 公開 |
要求なし |
| 単体テスト・自動テスト |
参考記事の範囲外 |
| 本番環境へのデプロイ構成 |
ローカル学習用途のため |
8. 前提条件
| ID |
前提 |
| PRE-01 |
利用者は Web ブラウザを操作できること |
| PRE-02 |
WSL2 のポート転送により Windows 側ブラウザから接続できること |
| PRE-03 |
NuGet パッケージ取得のためインターネット接続が可能であること(構築時のみ) |
9. 用語定義
| 用語 |
説明 |
| Razor Pages |
ASP.NET Core が提供する、1 画面を 1 ページ単位で構成する Web UI 方式 |
| PageModel |
Razor Pages において画面の入力受付と処理を担当するクラス |
| Entity Framework Core |
.NET の O/R マッピングフレームワーク。本書では EF Core と略す |
| マイグレーション |
エンティティ定義の変更をデータベーススキーマへ反映する仕組み |
| スキャフォールディング |
モデル定義から画面と処理コードを自動生成する機能 |
| CRUD |
生成(Create)・参照(Read)・更新(Update)・削除(Delete)の総称 |
| ISBN |
国際標準図書番号。本システムでは形式検証を行わない文字列として扱う |
10. 改訂履歴
| 版数 |
日付 |
内容 |
| 1.0 |
2026-07-24 |
初版作成(実装完了時点の実態に基づく) |
次:【Razor Pages 開発文書 ②】基本設計書 (1/2) — システム構成・アーキテクチャ・画面設計 →