# 観点表: 仕様から判断できる問題

対象の仕様（設計書、実装、製作者への確認）から評価する観点。ブラックボックスでの操作では
発見しづらく、仕様を知らなければ判定できないものが中心となる。

製作者から仕様の説明を受ける場合、**楽観的な回答を信頼してはならない**。製作者自身が把握
できていないことや、回答に信憑性がないことはしばしばある。可能な限り自分で挙動を確認する。

---

### SPEC-01: 時間制限

- WCAG: SC 2.2.1 (A)
- 確認手段: `both`
- 判定: コンテンツの操作に時間制限がある場合、以下のいずれかを満たすこと。
  - 利用者が制限時間に達する前に制限を解除できる
  - 制限時間が20時間より長い
  - リアルタイムのイベントと連動するなど、必要不可欠な理由がある
  - 時間切れの少なくとも20秒前に通知され、簡単な操作で延長できる
  - 制限時間に達する前に、デフォルトの制限時間の10倍を超える時間に調整できる
- `code` からの判定: セッションタイムアウト、`setTimeout` / `setInterval` による自動遷移や
  自動ログアウト、カウントダウン表示、フォームの有効期限トークンを探す。延長・解除の
  UI と、事前通知の実装があるかを確認する。
- `page` からの判定: 実際に待つことは現実的でないため、仕様と実装の確認に頼る。
  短い制限であれば実際に放置して挙動を確認する。
- よくある問題: セッション切れで入力内容が失われる。予告なくログアウトされる。
- 重篤度の目安: 入力内容が失われるなら Major。予告なく操作が中断されるなら Major。

### SPEC-02: 動きによる起動

- WCAG: SC 2.5.4 (A)
- 確認手段: `both`
- 判定: デバイスの動き（シェイク、傾き）や利用者の動き（ジェスチャー、カメラ入力）で
  操作できる機能は、通常の UI コンポーネントでも操作でき、かつ偶発的な起動を防ぐために
  動きへの反応を無効にできること。
- `code` からの判定: `devicemotion` / `deviceorientation` イベント、`DeviceMotionEvent`、
  加速度センサー API、カメラを用いたジェスチャー検出の使用を探す。
- 補足: Web サイトでこの種の機能を持つことは少ない。仕様として存在する場合には注意深く確認する。
- 重篤度の目安: 動きでしか実行できない機能があるなら Major。

### SPEC-03: 認知機能テストによる認証

- WCAG: SC 3.3.8 (AA)
- 確認手段: `both`
- 判定: 認証プロセスの各ステップにおいて、認知機能テスト（パスワードの記憶、パズルの求解、
  計算など）に依存しないこと。依存する場合は以下の例外のいずれかを満たすこと。
  - 代替: 認知機能テストに依存しない別の認証方法がある
  - メカニズム: 認知機能テストの完了を支援するメカニズムが利用できる
  - 物体の認識: 認知機能テストが、物体を特定させるものである
  - 個人特有のコンテンツ: 認知機能テストが、利用者本人が提供した非テキストコンテンツを
    識別させるものである
- `code` からの判定: パスワード入力欄に `autocomplete="current-password"` /
  `"new-password"` が指定され、コピー＆ペーストやパスワードマネージャーによる自動入力が
  阻害されていないか（`onpaste` の抑止、入力欄の分割など）を確認する。CAPTCHA、
  ワンタイムパスワードの手入力強制、秘密の質問の実装を探す。
- `page` からの判定: 実際にパスワードマネージャーによる貼り付けが可能かを試す。
- よくある問題: パスワード欄で貼り付けが禁止されている。文字認識型 CAPTCHA が唯一の
  認証手段になっている。ワンタイムパスワードを分割入力欄に手入力させ、貼り付けができない。
- 重篤度の目安: 認証を完了できない利用者が生じるため、原則 Critical または Major。

### SPEC-04: 想定される利用環境と操作フローの網羅

- WCAG: （直接対応する達成基準はない。チェックの網羅性を担保するための観点）
- 確認手段: `both`
- 判定: チェックの対象範囲が、想定される利用環境と操作フローを網羅していること。
  - モバイル向けの表示が PC 向けと異なるなら、両方をチェックしたか
  - 操作フローに分岐があるなら、分岐ごとにチェックしたか
  - 権限やログイン状態によって表示が変わるなら、それぞれをチェックしたか
  - 状態によって画面が変化する（メニュー開閉、モーダル、エラー表示）なら、状態ごとに
    チェックしたか
- この観点は指摘としてではなく、**チェック自体の網羅性の記録**としてレポートに書く。
  網羅できなかった範囲は「要追加確認」に明記する。
