← 納品物一覧に戻る非機能要件定義書
保険リーズマーケットプレイス | 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 攻撃対策
| 脅威 | 対策 | 実装方法 |
|---|
| CSRF | Double Submit Cookie | CSRFトークンをCookieとリクエストヘッダーの両方で送信し、サーバー側で一致を検証。SameSite=Strict属性を付与。 |
| XSS | Content Security Policy + HTMLサニタイズ | CSPヘッダーでインラインスクリプト実行を制限。ユーザー入力はDOMPurifyでサニタイズ。React の自動エスケープを活用。 |
| SQL Injection | Prisma ORMパラメータ化クエリ | Prisma ORMを使用し、全クエリをパラメータ化。生SQLの使用を原則禁止し、使用時はコードレビュー必須。 |
| CORS | 許可オリジンのホワイトリスト制 | 許可するオリジンを環境変数で管理。ワイルドカード(*)の使用を禁止。プリフライトリクエストのキャッシュは600秒。 |
| API Rate Limiting | 100 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 | ブラウザ / クライアント情報 |
| timestamp | ISO 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 Performance | 90+ | Chrome DevTools / CI定期計測 |
| Lighthouse Accessibility | 100 | WCAG 2.1 AA準拠 |
| Lighthouse Best Practices | 100 | セキュリティヘッダー、HTTPS等 |
| Lighthouse SEO | 100 | メタタグ、構造化データ、robots.txt |
| FCP (First Contentful Paint) | < 1.8s | Core Web Vitals |
| LCP (Largest Contentful Paint) | < 2.5s | Core Web Vitals |
| CLS (Cumulative Layout Shift) | < 0.1 | Core 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レスポンスキャッシュ: 頻繁にアクセスされるリスト系データ。 |
| CDN | CloudFront | 静的アセット(JS, CSS, 画像)をCloudFront経由で配信。キャッシュTTL: 静的ファイル 1年(ハッシュ付きファイル名)、API 0秒(キャッシュなし)。 |
6. 運用・監視要件
6.1 ログ管理
| 項目 | ツール/方式 | 詳細 |
|---|
| アプリケーションログ | CloudWatch Logs | 構造化JSONフォーマットで出力。ログレベル: ERROR, WARN, INFO, DEBUG。本番環境はINFO以上を記録。 |
| アクセスログ | ALB Access Logs | S3に保存。リクエストパス、ステータスコード、レスポンスタイム、クライアントIPを記録。 |
| ログ保持期間 | 90日間 (Hot) / 1年 (Cold) | 直近90日はCloudWatch Logsで即時検索可能。90日超過分はS3 Glacier Deep Archiveへ自動移行。 |
6.2 メトリクス・アラート
| メトリクス | 閾値 | 通知先 | 対応 |
|---|
| Error Rate | > 1% | Slack #alerts | 即時調査。5%超過で緊急対応。 |
| CPU使用率 | > 80% | Slack #alerts | Auto Scalingトリガー確認。持続する場合は原因調査。 |
| Memory使用率 | > 85% | Slack #alerts | メモリリーク調査。必要に応じてインスタンスサイズ変更。 |
| レスポンスタイム (P95) | > 500ms | Slack #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 10 | ZAP / Prowler | OWASP Top 10の全項目を検証。脆弱性スキャン結果のゼロクリティカル確認。 |
8.2 CI/CDパイプラインでのテスト
| タイミング | 実行テスト | ゲート条件 |
|---|
| PR作成時 | ユニットテスト + 型チェック + Lint | 全テストPASS、カバレッジ低下なし。 |
| mainマージ時 | ユニット + 結合 + E2E | 全テストPASS。失敗時はデプロイブロック。 |
| デプロイ前 | スモークテスト | 主要APIエンドポイントの疎通確認。ヘルスチェック応答確認。 |
| 週次 | 負荷テスト + セキュリティスキャン | 性能劣化検知、新規脆弱性検知時にアラート。 |
9. 品質基準まとめ
本プロジェクトにおける全非機能要件の品質基準を以下にまとめる。
| カテゴリ | 指標 | 目標値 | 優先度 |
|---|
| セキュリティ | 認証トークン有効期限 | Access 15min / Refresh 7days | 必須 |
| セキュリティ | PII暗号化 | AES-256 | 必須 |
| セキュリティ | API Rate Limiting | 100 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 Performance | 90+ | 必須 |
| フロントエンド | Lighthouse Accessibility | 100 | 必須 |
| フロントエンド | Lighthouse Best Practices | 100 | 必須 |
| フロントエンド | Lighthouse SEO | 100 | 必須 |
| フロントエンド | FCP | < 1.8s | 必須 |
| フロントエンド | LCP | < 2.5s | 必須 |
| フロントエンド | CLS | < 0.1 | 必須 |
| 可用性 | 稼働率 | 99.9% | 必須 |
| 可用性 | RPO | 1時間以内 | 必須 |
| 可用性 | RTO | 4時間以内 | 必須 |
| 拡張性 | 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