← 納品物一覧に戻る

非機能要件定義書

保険リーズマーケットプレイス | v1.0.0 | 2026-03-18

1. 文書管理情報

文書名非機能要件定義書
プロジェクト名保険リーズマーケットプレイス
バージョンv1.0.0
作成日2026-03-18
対象範囲セキュリティ・性能・可用性・拡張性・運用監視・データ管理・テスト
技術スタックNext.js 15 / Prisma / PostgreSQL / Redis / AWS (ECS, RDS, ElastiCache, CloudFront)

2. セキュリティ要件

2.1 認証・認可

項目要件詳細
認証方式JWT (JSON Web Token)Access Token: 有効期限15分 / Refresh Token: 有効期限7日間。Refresh Tokenはhttponly cookieに格納し、XSSによる窃取を防止。
多要素認証 (MFA)TOTP (Time-based One-Time Password)管理者ロール: MFA必須。営業担当者ロール: MFA任意(推奨)。Google Authenticator / Microsoft Authenticator対応。
パスワードポリシーbcryptハッシュ化最低8文字以上。英大文字・英小文字・数字・記号をそれぞれ1文字以上含む。過去5世代のパスワード再利用禁止。90日ごとの変更推奨通知。
ログイン試行制限アカウントロック5回連続失敗で30分間アカウントロック。ロック中はメール通知送信。管理者による手動アンロック可能。

2.2 データ保護

項目対策詳細
PII暗号化AES-256暗号化保存氏名・電話番号・住所などの個人識別情報はDB保存時にAES-256で暗号化。暗号鍵はAWS KMSで管理し、アプリケーションコードに埋め込まない。
通信暗号化TLS 1.3全通信をHTTPS化。TLS 1.2以下は無効化。HSTS (Strict-Transport-Security) ヘッダー設定。
機密データマスキングログ出力時のマスキングログ・エラーレポートに個人情報が含まれないよう、電話番号・住所等は自動マスキング処理を適用。

2.3 攻撃対策

脅威対策実装方法
CSRFDouble Submit CookieCSRFトークンをCookieとリクエストヘッダーの両方で送信し、サーバー側で一致を検証。SameSite=Strict属性を付与。
XSSContent Security Policy + HTMLサニタイズCSPヘッダーでインラインスクリプト実行を制限。ユーザー入力はDOMPurifyでサニタイズ。React の自動エスケープを活用。
SQL InjectionPrisma ORMパラメータ化クエリPrisma ORMを使用し、全クエリをパラメータ化。生SQLの使用を原則禁止し、使用時はコードレビュー必須。
CORS許可オリジンのホワイトリスト制許可するオリジンを環境変数で管理。ワイルドカード(*)の使用を禁止。プリフライトリクエストのキャッシュは600秒。
API Rate Limiting100 req/min per userユーザー単位でリクエストレートを制限。Redis (Token Bucket) で実装。超過時は429 Too Many Requestsを返却。

2.4 監査ログ

全操作を監査ログとして記録し、不正アクセスの検知・調査に活用する。

記録項目内容
userId操作を実行したユーザーのID
action実行されたアクション(CREATE, READ, UPDATE, DELETE, LOGIN, LOGOUT等)
resource対象リソース(lead, bid, user, payment等)
IPクライアントIPアドレス(X-Forwarded-For対応)
UserAgentブラウザ / クライアント情報
timestampISO 8601形式のUTCタイムスタンプ
details変更前後の差分(更新操作時)、リクエストパラメータの要約

3. 性能要件

3.1 レスポンスタイム

指標目標値備考
API レスポンスタイム(P95)200ms以内95パーセンタイル。一覧取得APIを含む。複雑な集計APIは500ms以内を許容。
ページロード時間1.5s以内初回ロード。SSR + コード分割で最適化。CDN経由での配信。
画面遷移300ms以内SPA遷移時。prefetchによる先読みを活用。

3.2 スループット・同時接続

指標目標値備考
同時接続ユーザー数500ユーザーピーク時想定。Auto Scalingで水平スケール可能。
APIスループット100 req/sec全APIエンドポイント合算。個別エンドポイントの上限は用途に応じて設定。
WebSocket同時接続1,000接続リアルタイム通知・入札更新用。Redis Pub/Subでスケールアウト対応。
WebSocketメッセージ遅延100ms以内送信から受信までの端末間遅延。

3.3 データベース性能

指標目標値備考
クエリ実行時間(P95)50ms以内インデックス最適化、クエリプラン分析を定期実施。スロークエリは10ms超過で記録。
コネクションプール最大50接続PgBouncer / Prisma connection poolで管理。アイドルタイムアウト: 60秒。

3.4 フロントエンド品質指標

指標目標値計測方法
Lighthouse Performance90+Chrome DevTools / CI定期計測
Lighthouse Accessibility100WCAG 2.1 AA準拠
Lighthouse Best Practices100セキュリティヘッダー、HTTPS等
Lighthouse SEO100メタタグ、構造化データ、robots.txt
FCP (First Contentful Paint)< 1.8sCore Web Vitals
LCP (Largest Contentful Paint)< 2.5sCore Web Vitals
CLS (Cumulative Layout Shift)< 0.1Core Web Vitals

4. 可用性要件

4.1 稼働率・SLA

項目目標値詳細
稼働率99.9%月間ダウンタイム43分以内。計画メンテナンスを除く。
メンテナンスウィンドウ日曜 2:00-5:00 (JST)定期メンテナンス枠。24時間前までにユーザーへ通知。緊急メンテナンスは除く。

4.2 バックアップ・災害復旧

項目目標値詳細
バックアップ方式日次フルバックアップ毎日AM 3:00にRDSスナップショット取得。WAL (Write-Ahead Log) による連続アーカイブで、任意時点へのポイントインタイムリカバリ (PITR) に対応。
RPO (目標復旧地点)1時間以内障害発生から最大1時間以内のデータ喪失に収める。WALアーカイブにより実質的にはより短い間隔で復旧可能。
RTO (目標復旧時間)4時間以内障害検知からサービス完全復旧まで4時間以内。復旧手順書を整備し、定期的にDR訓練を実施。
DR構成マルチAZデプロイap-northeast-1 (東京リージョン) のマルチAZ構成。ECS: 複数AZにタスク分散。RDS: マルチAZスタンバイ。ElastiCache: マルチAZレプリケーション。
バックアップ保持期間35日間RDSスナップショットの自動保持。月次バックアップは1年間保持。

5. 拡張性要件

5.1 スケーリング戦略

レイヤー戦略詳細
アプリケーションECS Auto Scaling (水平)CPU使用率70%以上でタスク数を自動増設。最小2タスク、最大10タスク。スケールイン時はconnection drainingを実施(300秒)。
データベースRead Replica + 将来シャーディング参照系クエリはRead Replicaに分散。将来的なデータ増加に備え、テナント単位でのシャーディング設計を考慮。
キャッシュRedis (ElastiCache)セッションデータ: Redis管理。WebSocket Pub/Sub: Redis Streamsで複数インスタンス間のメッセージ同期。APIレスポンスキャッシュ: 頻繁にアクセスされるリスト系データ。
CDNCloudFront静的アセット(JS, CSS, 画像)をCloudFront経由で配信。キャッシュTTL: 静的ファイル 1年(ハッシュ付きファイル名)、API 0秒(キャッシュなし)。

6. 運用・監視要件

6.1 ログ管理

項目ツール/方式詳細
アプリケーションログCloudWatch Logs構造化JSONフォーマットで出力。ログレベル: ERROR, WARN, INFO, DEBUG。本番環境はINFO以上を記録。
アクセスログALB Access LogsS3に保存。リクエストパス、ステータスコード、レスポンスタイム、クライアントIPを記録。
ログ保持期間90日間 (Hot) / 1年 (Cold)直近90日はCloudWatch Logsで即時検索可能。90日超過分はS3 Glacier Deep Archiveへ自動移行。

6.2 メトリクス・アラート

メトリクス閾値通知先対応
Error Rate> 1%Slack #alerts即時調査。5%超過で緊急対応。
CPU使用率> 80%Slack #alertsAuto Scalingトリガー確認。持続する場合は原因調査。
Memory使用率> 85%Slack #alertsメモリリーク調査。必要に応じてインスタンスサイズ変更。
レスポンスタイム (P95)> 500msSlack #alertsスロークエリ・外部API遅延の調査。
ディスク使用率> 80%Slack #alertsログローテーション確認。ストレージ拡張検討。
DB接続数> 40 (80%)Slack #alertsコネクションリーク調査。プールサイズ調整検討。

6.3 APM・トレーシング

項目詳細
分散トレーシングAWS X-Ray。リクエストの全ライフサイクルを追跡。外部API呼び出し・DB操作の遅延をセグメント単位で可視化。
サンプリングレート本番: 5%、開発: 100%。エラーリクエストは常に100%記録。

6.4 デプロイ戦略

項目詳細
デプロイ方式Blue-Greenデプロイ。新バージョンを別ターゲットグループにデプロイし、ヘルスチェック通過後にトラフィックを切替。
ロールバック自動ロールバック対応。デプロイ後5分間のError Rateが5%超過で自動ロールバック。手動ロールバックも即時実行可能。
ゼロダウンタイムRolling Update + Connection Draining (300秒) により、デプロイ中のリクエスト損失ゼロを保証。

7. データ管理要件

7.1 個人情報保護

本システムは個人情報保護法に準拠し、個人データの適切な取り扱いを徹底する。
項目方針詳細
法令準拠個人情報保護法利用目的の明示、同意取得、安全管理措置の実施。プライバシーポリシーを公開。
アクセス制御最小権限の原則ロールベースアクセス制御 (RBAC)。各ロールに必要最小限の権限のみ付与。管理者でも不要なPIIへのアクセスを制限。
第三者提供事前同意必須リードデータの保険会社への提供時、ユーザーの明示的同意を取得。提供先・提供データ範囲を記録。

7.2 データ保持・削除

データ種別保持期間削除・匿名化ルール
リードデータ2年間2年経過後に自動匿名化処理を実施。統計データとしてのみ保持。
監査ログ5年間法令・コンプライアンス要件に基づく保持。5年経過後に自動削除。
請求データ7年間税法に基づく保存義務。電子帳簿保存法に準拠した保管。
退会ユーザーデータ退会後30日退会申請後30日間はデータ復旧可能。30日経過後に個人情報を匿名化し、復旧不可とする。

7.3 バックアップ暗号化

項目詳細
暗号化方式AES-256。RDSスナップショット・S3バックアップともにサーバーサイド暗号化 (SSE-KMS) を適用。
鍵管理AWS KMS (Key Management Service) でカスタマーマネージドキー (CMK) を使用。鍵の自動ローテーション: 年次。

8. テスト要件

8.1 テスト種別・基準

テスト種別目標ツール対象範囲
ユニットテストカバレッジ80%以上Vitest全ビジネスロジック、ユーティリティ関数、カスタムフック。
結合テストAPI全エンドポイントVitest + Supertest全API Route。リクエスト/レスポンスのスキーマ検証、認証・認可の確認。
E2Eテスト主要ユーザーフローPlaywrightログイン、リード掲載、入札、決済、通知受信の一連のフロー。クロスブラウザ(Chrome, Firefox, Safari)。
負荷テスト500同時ユーザーk6 / Artilleryピーク時シナリオでの性能確認。レスポンスタイム劣化・エラー率の閾値検証。
セキュリティテストOWASP Top 10ZAP / ProwlerOWASP Top 10の全項目を検証。脆弱性スキャン結果のゼロクリティカル確認。

8.2 CI/CDパイプラインでのテスト

タイミング実行テストゲート条件
PR作成時ユニットテスト + 型チェック + Lint全テストPASS、カバレッジ低下なし。
mainマージ時ユニット + 結合 + E2E全テストPASS。失敗時はデプロイブロック。
デプロイ前スモークテスト主要APIエンドポイントの疎通確認。ヘルスチェック応答確認。
週次負荷テスト + セキュリティスキャン性能劣化検知、新規脆弱性検知時にアラート。

9. 品質基準まとめ

本プロジェクトにおける全非機能要件の品質基準を以下にまとめる。

カテゴリ指標目標値優先度
セキュリティ認証トークン有効期限Access 15min / Refresh 7days必須
セキュリティPII暗号化AES-256必須
セキュリティAPI Rate Limiting100 req/min per user必須
セキュリティログイン試行制限5回失敗で30分ロック必須
性能APIレスポンスタイム (P95)200ms以内必須
性能ページロード時間1.5s以内必須
性能同時接続ユーザー500ユーザー必須
性能APIスループット100 req/sec必須
性能WebSocket同時接続1,000接続必須
性能WebSocketメッセージ遅延100ms以内必須
性能DBクエリ実行時間 (P95)50ms以内必須
フロントエンドLighthouse Performance90+必須
フロントエンドLighthouse Accessibility100必須
フロントエンドLighthouse Best Practices100必須
フロントエンドLighthouse SEO100必須
フロントエンドFCP< 1.8s必須
フロントエンドLCP< 2.5s必須
フロントエンドCLS< 0.1必須
可用性稼働率99.9%必須
可用性RPO1時間以内必須
可用性RTO4時間以内必須
拡張性Auto ScalingトリガーCPU 70%以上必須
運用Error Rate アラート閾値> 1%必須
運用CPU アラート閾値> 80%必須
運用Memory アラート閾値> 85%必須
データ管理リードデータ保持2年間必須
データ管理監査ログ保持5年間必須
データ管理請求データ保持7年間必須
データ管理退会後匿名化30日後必須
テストユニットテストカバレッジ80%以上必須
テストセキュリティテストOWASP Top 10 全項目必須
テスト負荷テスト500同時ユーザー必須
保険リーズマーケットプレイス 非機能要件定義書 v1.0.0 | 2026-03-18