← 成果物一覧に戻る

非機能要件定義書

Version 1.0.0 | SB-Ticket(シュートボクシング)

非機能要件定義書

プロジェクト: シュートボクシング協会 統合PWAアプリ(SB-Ticket) バージョン: 2.0 作成日: 2026-03-16 ソース: SB_要件定義書_v2.0.docx


1. セキュリティ要件

1-1. 通信セキュリティ

項目仕様備考
HTTPS強制全通信をHTTPS化。HTTP→HTTPSへの自動リダイレクトVercel/Render標準対応
HSTSStrict-Transport-Security ヘッダーを設定max-age=31536000; includeSubDomains
セキュリティヘッダーContent-Security-Policy / X-Frame-Options: DENY / X-Content-Type-Options: nosniff を全レスポンスに付与
CORS許可オリジンを明示的に指定。ワイルドカード(*)使用禁止本番ドメインのみ許可

1-2. 認証・認可セキュリティ

項目仕様備考
JWT管理アクセストークン有効期限:15分。リフレッシュトークン:7日。HttpOnly Cookieで管理localStorageへの保存禁止
セッション管理ログアウト時にサーバー側でトークン無効化
権限チェック全APIエンドポイントでロールベースアクセス制御(RBAC)を実装。フロントの表示制御だけに頼らない
アカウントロック5回連続ミスでロック・協会管理者のみ解除可能ロック状態はDBに記録
パスワードハッシュbcrypt(コストファクター12以上)でハッシュ化。平文保存・MD5/SHA1使用禁止
総当たり攻撃防止ログイン試行にレートリミット(IP単位:10回/分)を設定Redis or Supabaseで管理

1-3. データ保護

項目仕様備考
個人情報暗号化選手・ファンの電話番号・メールアドレスはDBに暗号化保存(AES-256)
SQLインジェクション防止全DB操作にパラメータ化クエリ(Supabase Client使用)。生SQLの文字列結合禁止
XSS防止ユーザー入力を全てサニタイズ。ReactのデフォルトエスケープをバイパスするdangerouslySetInnerHTML使用禁止
CSRF防止state付きOAuthフロー・SameSite=StrictなCookieを使用
ファイルアップロード画像アップロード時にMIMEタイプ・サイズ(最大5MB)・拡張子を検証。実行ファイルアップロード拒否
ログ管理個人情報・パスワード・トークンはログに出力しない

1-4. API・インフラセキュリティ

項目仕様備考
APIレートリミット全エンドポイントにレートリミット設定。認証API:10回/分。通常API:100回/分/ユーザー
Webhook検証チケットぴあからのWebhookはHMAC-SHA256署名を検証してから処理
環境変数管理APIキー・DB接続情報は全て環境変数で管理。コードへのハードコード禁止
依存パッケージ既知の脆弱性を持つパッケージを使用しない。npm auditを定期実行
Supabase RLSRow Level Security(RLS)を全テーブルに設定。選手は自分のデータのみアクセス可能なポリシーを定義
エラーハンドリング本番環境ではスタックトレース・内部エラー情報をクライアントに返さない

1-5. 管理画面アクセス制限


2. パフォーマンス要件

2-1. ページ読み込み

指標目標値
FCP (First Contentful Paint)< 1.8s
LCP (Largest Contentful Paint)< 2.5s
CLS (Cumulative Layout Shift)< 0.1
Lighthouse Performance90+

2-2. API応答時間

API種別目標値
一般API< 200ms
LP生成(AI)< 30s(非同期処理)
画像合成< 10s
QRコード生成< 1s

2-3. 同時接続

項目目標値
同時接続ユーザー100+
選手登録数数十名〜100名
ファンデータ数千〜数万件

3. 可用性要件

項目目標値
稼働率99.5%以上
計画停止通知24時間前
障害復旧目標(RTO)4時間以内
データ復旧目標(RPO)1時間以内

4. PWA要件

項目仕様
Service Workerオフラインキャッシュ戦略実装
ホーム画面追加manifest.json設定。アプリアイコン・スプラッシュスクリーン
プッシュ通知Web Push API(Service Worker経由)
対応ブラウザSafari / Chrome / Edge(最新2バージョン)
対応OSiOS / Android / Windows / macOS

5. レスポンシブ要件

ブレークポイント用途
< 640pxモバイル
640px〜768pxタブレット縦
768px〜1024pxタブレット横
1024px〜1280pxデスクトップ
1280px〜ワイドデスクトップ

全画面でPC/タブレット/スマホの3パターンを完全対応。 協会管理画面も現場(スマホ)から確認可能な設計。


6. アクセシビリティ要件

項目基準
WCAG準拠レベルAA
コントラスト比4.5:1以上(テキスト)
タッチターゲット44px以上
キーボード操作全主要操作がキーボードのみで完結
スクリーンリーダーaria-label適切に設定

7. データ管理要件

7-1. バックアップ

項目仕様
自動バックアップ日次(Supabase標準)
手動バックアップ協会管理者がCSV出力可能
データ保持期間無期限(削除は論理削除)

7-2. 個人情報管理

項目仕様
暗号化対象電話番号・メールアドレス・振込先情報
暗号化方式AES-256(Python cryptographyライブラリ)
ログ除外個人情報・パスワード・トークンはログ出力禁止

8. 運用要件

8-1. 監視

項目仕様
ヘルスチェックエンドポイント /health
エラー監視Sentry等のエラートラッキング
API監視レスポンスタイム・エラー率

8-2. ログ

ログ種別用途
アクセスログAPIリクエスト記録
操作ログ管理者操作の全記録(誰が・いつ・何を)
エラーログエラー詳細(個人情報除外)
セキュリティログログイン試行・ロック・権限エラー

9. ホスティング・インフラ要件

項目仕様
フロントエンドVercel
バックエンドRender
データベースSupabase(PostgreSQL)
ファイルストレージSupabase Storage
キャッシュ/レートリミットRedis(Upstash)
SMSTwilio
AI(LP生成)Claude API(Anthropic)

10. 国際化・ローカライズ

項目仕様
対応言語日本語のみ(Phase 1)
タイムゾーンJST(Asia/Tokyo)
通貨JPY(日本円)
文字コードUTF-8

Generated by CCAGI SDK Phase 1 - 2026-03-16