Q1: 仕様を書いています.「適合する実装なら必ず証明書検証を行う」なら,どの文がいちばん筋が良い?
Multiple Choice
**解説:**
**定義(問題語):**
- `MUST`: 仕様適合のために必須です. 守らない実装は不適合になります.
- `SHOULD`: 原則は守るが, 例外はあり得ます. ただし例外には理由が必要です.
- `MAY`: 任意です. 実装しても, しなくても適合性は崩れません.
**RFCを読むときの見方:**
まず, その文が「適合条件」なのか, 「設計上の推奨」なのか, 「任意機能」なのかを切り分けます. 証明書検証のように, 実装が必ず行わないと安全性も相互運用性も崩れる項目は `MUST` で読むのが自然です.
**Bが正しい理由:**
問題文は「適合する実装なら必ず証明書検証を行う」と言っています. これは例外なしの必須条件なので, `MUST` が最も筋が良い書き方です. RFC の文をレビューするときも, 「この文はテストで yes/no 判定できるか」を見ると `MUST` の妥当性を判断しやすくなります.
**A/Cが違う理由:**
- A(`SHOULD`): 例外の余地が残るため, 証明書検証を省いた実装でも「事情があった」と言えてしまいます.
- C(`MAY`): 任意機能になってしまい, セキュリティ要件として弱すぎます.
**関連トピック例:**
AI に仕様文を書かせると, 強い気持ちで `SHOULD` を提案してくることがあります. そのときは, その文が「適合条件」なのか「推奨」なのかを人間が明示的に戻してあげるのが大事です.