株主対話デモアプリケーションの非機能要件について、パフォーマンス、セキュリティ、可用性、保守性などの品質特性を定義します。
graph LR
A[ユーザー操作] --> B{操作種別}
B -->|ファイルアップロード| C[2秒以内]
B -->|PDFプレビュー| D[1秒以内]
B -->|接続テスト| E[5秒以内]
B -->|質問候補生成| F[30秒以内]
B -->|対話ターン生成| G[15秒以内]
B -->|画面切り替え| H[0.3秒以内]
操作 | 目標時間 | 最大許容時間 | 備考 |
---|---|---|---|
アプリケーション起動 | 1秒 | 3秒 | 初回DOM構築とスタイル適用 |
PDF ファイルアップロード | 1秒 | 2秒 | ファイルサイズ10MB以下 |
PDF プレビュー表示 | 0.5秒 | 1秒 | Canvas描画処理 |
Azure OpenAI 接続テスト | 3秒 | 5秒 | ネットワーク通信依存 |
質問候補生成(6件) | 20秒 | 30秒 | API呼び出し + 処理時間 |
対話ターン生成(1回) | 10秒 | 15秒 | GPT-4.1-mini処理時間 |
言語切り替え | 即座 | 0.1秒 | ローカル処理のみ |
折り畳み・展開 | 即座 | 0.3秒 | CSSアニメーション |
| 項目 | 要件 | |——|——| | 同時PDF処理 | 5ファイルまで | | メモリ使用量 | 500MB以下(ブラウザタブ単位) | | CPU使用率 | 80%以下(処理ピーク時) | | ネットワーク帯域 | 1Mbps以下(API通信) |
graph TD
A[現在の性能] --> B{拡張ポイント}
B --> C[PDF処理数: 5→20ファイル]
B --> D[言語数: 7→15言語]
B --> E[対話ターン数: 5→10ターン]
B --> F[質問候補数: 6→12候補]
C --> G[メモリ最適化必要]
D --> H[プロンプト管理改良]
E --> I[UI表示領域拡張]
F --> J[生成時間調整]
| 項目 | 目標値 | 測定期間 | |——|——–|———-| | アプリケーション稼働率 | 99.9% | 月次 | | Azure OpenAI 依存率 | 99.5% | 月次 | | PDF.js 依存率 | 99.9% | 月次 | | CDN 依存率 | 99.9% | 月次 |
graph TD
A[障害発生] --> B{障害種別}
B -->|API通信エラー| C[自動再試行]
B -->|ファイル処理エラー| D[エラー表示・継続]
B -->|ネットワーク断絶| E[オフライン通知]
B -->|ブラウザクラッシュ| F[設定復元]
C --> G[最大3回リトライ]
D --> H[他ファイル処理継続]
E --> I[復旧待機モード]
F --> J[ローカルストレージ復元]
| 障害種別 | 復旧時間目標 | 復旧手順 | |———-|————-|———-| | Azure OpenAI 接続障害 | 即座 | 自動再試行、エラー表示 | | PDF ファイル破損 | 即座 | 該当ファイルスキップ、警告表示 | | ブラウザメモリ不足 | 30秒 | ページリロード推奨 | | ネットワーク断絶 | 接続復旧次第 | 自動検出・復旧 |
| 項目 | 仕様 | 実装方法 | |——|——|———-| | API キー管理 | 暗号化保存 | ローカルストレージ(平文) | | アクセス制御 | なし | パブリックアクセス | | セッション管理 | ブラウザ依存 | ローカルセッションのみ |
graph TD
A[データ分類] --> B{機密度}
B -->|高| C[API キー]
B -->|中| D[PDF ファイル内容]
B -->|低| E[対話履歴]
B -->|公開| F[UI設定]
C --> G[パスワード入力・ローカル保存]
D --> H[ブラウザメモリ内のみ]
E --> I[セッション限定保持]
F --> J[ローカルストレージ保存]
| 項目 | 要件 | 実装 | |——|——|——| | Azure OpenAI 通信 | HTTPS必須 | TLS 1.2以上 | | CDN 通信 | HTTPS必須 | TLS 1.2以上 | | ローカルファイル | 暗号化不要 | 平文保存 | | ブラウザ間通信 | なし | 単一タブ動作 |
| 脅威 | 対策 | 実装状況 | |——|——|———-| | XSS攻撃 | 入力値サニタイズ | ✅ DOM操作で対応 | | CSRF攻撃 | 影響なし | ✅ 状態変更なし | | 情報漏洩 | データ最小化 | ✅ ローカル処理のみ | | APIキー漏洩 | UI注意喚起 | ⚠️ ハードコード禁止 |
graph LR
A[ユーザータスク] --> B{習熟度}
B -->|初回利用| C[30分で基本操作習得]
B -->|一般利用| D[5分でタスク完了]
B -->|熟練利用| E[2分でタスク完了]
C --> F[チュートリアル・ヘルプ]
D --> G[直感的UI設計]
E --> H[ショートカット・効率化]
| 項目 | 要件レベル | 対応状況 | |——|———–|———-| | キーボード操作 | WCAG 2.1 AA | ✅ フォーカス制御 | | スクリーンリーダー | WCAG 2.1 AA | ⚠️ 部分対応 | | カラーコントラスト | WCAG 2.1 AA | ✅ 4.5:1以上 | | フォントサイズ | 200%まで対応 | ✅ レスポンシブ |
| 言語 | 対応レベル | UI翻訳 | 対話生成 | |——|———–|——–|———-| | 日本語 | フル | ✅ | ✅ | | English | フル | ✅ | ✅ | | 中文 | 対話のみ | ❌ | ✅ | | Deutsch | 対話のみ | ❌ | ✅ | | Français | 対話のみ | ❌ | ✅ | | Español | 対話のみ | ❌ | ✅ | | 한국어 | 対話のみ | ❌ | ✅ |
graph TD
A[ブラウザサポート] --> B{デバイス種別}
B -->|デスクトップ| C[Chrome 90+, Firefox 88+, Safari 14+, Edge 90+]
B -->|タブレット| D[iPad Safari 14+, Android Chrome 90+]
B -->|スマートフォン| E[Chrome Mobile 90+, Safari Mobile 14+]
C --> F[フル機能サポート]
D --> G[レスポンシブ対応]
E --> H[モバイル最適化]
| 技術 | 最小バージョン | 推奨バージョン | 必須機能 | |——|————–|————–|———-| | JavaScript | ES6 (2015) | ES2020 | モジュール、Promise、async/await | | CSS | CSS3 | CSS3 | Flexbox、Grid、アニメーション | | HTML | HTML5 | HTML5 | Canvas、File API |
| 依存サービス | SLA要求 | フォールバック | |————-|———|—————| | Azure OpenAI | 99.5% | エラー表示・再試行 | | Tailwind CSS CDN | 99.9% | ローカルフォールバック不要 | | PDF.js CDN | 99.9% | 必須・代替なし |
graph LR
A[コード品質] --> B[可読性]
A --> C[保守性]
A --> D[拡張性]
B --> E[コメント充実]
B --> F[命名規則]
C --> G[モジュール設計]
C --> H[エラーハンドリング]
D --> I[設定外部化]
D --> J[プラグイン構造]
| ドキュメント種別 | 更新頻度 | 品質基準 | |—————-|———-|———-| | 機能仕様書 | 機能追加時 | 実装との整合性100% | | API仕様書 | API変更時 | サンプルコード付き | | ユーザーマニュアル | UI変更時 | スクリーンショット最新 | | 開発者ガイド | 四半期 | 新規開発者30分で理解 |
| 項目 | レベル | 出力先 | 保持期間 | |——|——–|——–|———-| | エラーログ | ERROR | Console | セッション中 | | パフォーマンスログ | INFO | Console | セッション中 | | ユーザー操作ログ | DEBUG | Console | セッション中 | | API通信ログ | DEBUG | Console | セッション中 |
graph TD
A[ソースコード] --> B[静的ファイル生成]
B --> C[Webサーバー配置]
C --> D{配置方法}
D -->|GitHub Pages| E[自動デプロイ]
D -->|ローカル| F[ファイルコピー]
D -->|CDN| G[アップロード]
E --> H[HTTPS必須]
F --> I[ローカルサーバー]
G --> H
| 対象 | 頻度 | 保持期間 | 復旧時間 | |——|——|———-|———-| | ソースコード | Git管理 | 永続 | 即座 | | ドキュメント | Git管理 | 永続 | 即座 | | ユーザー設定 | なし | ローカル依存 | 不要 |
| 設定項目 | 管理方法 | 変更影響 | |———-|———-|———-| | Azure OpenAI設定 | ユーザー入力 | 機能全体 | | 言語設定 | ユーザー選択 | 対話生成 | | UI設定 | ユーザー操作 | 表示のみ |
graph TD
A[技術制約] --> B[ブラウザ制約]
A --> C[ネットワーク制約]
A --> D[セキュリティ制約]
B --> E[Same-Origin Policy]
B --> F[メモリ制限]
C --> G[CORS制限]
C --> H[API Rate Limit]
D --> I[HTTPS必須]
D --> J[APIキー管理]
| 制約項目 | 内容 | 対応策 | |———-|——|——–| | Azure OpenAI利用料金 | 従量課金 | 使用量監視推奨 | | API Rate Limit | 毎分制限あり | エラーハンドリング | | ブラウザメモリ | 大容量PDF処理限界 | ファイルサイズ警告 | | ネットワーク帯域 | 低速回線での制約 | タイムアウト調整 |
| 項目 | 前提 | 確認方法 | |——|——|———-| | Azure OpenAI契約 | 有効なサブスクリプション | 接続テスト | | モダンブラウザ | 対応ブラウザ利用 | User-Agent判定 | | JavaScript有効 | ブラウザ設定 | 起動時チェック | | インターネット接続 | API通信用 | 接続テスト |
graph LR
A[パフォーマンス] --> B[レスポンス時間]
A --> C[スループット]
A --> D[リソース使用量]
B --> E[平均: 2秒以内]
B --> F[95%ile: 5秒以内]
C --> G[同時処理: 5ファイル]
D --> H[メモリ: 500MB以下]
| 指標 | 目標値 | 測定方法 | |——|——–|———-| | 機能動作率 | 99.9% | 自動テスト | | エラー発生率 | 0.1%以下 | ログ分析 | | ユーザー満足度 | 4.5/5.0以上 | アンケート | | タスク完了率 | 95%以上 | ユーザビリティテスト |
文書バージョン: 1.0
作成日: 2025年7月31日
最終更新: 2025年7月31日
承認者: 開発チーム
次回レビュー: 2025年10月31日