LoginSignup
0
0

More than 1 year has passed since last update.

仕様書にあるMUSTとSHOULD どう違う? RFC2119を読んでみた

Last updated at Posted at 2022-03-20

MUST/SHOULDって何が違う?

さまざまな仕様書に、Must, shouldといったキーワードが出てくることがあります。そのニュアンスの違いがよくわからなかったので調べてみました。

RFC2119

前に読んだOpenAPI specificationに、以下RFCへの参照がありました。
Must, shouldなどの用語が定義されています。

まとめ

Key word 同義語 説明
MUST REQUIRED, SHALL 必須。仕様上、絶対やらなきゃダメ
MUST NOT SHALL NOT 禁止。仕様上、絶対やっちゃダメ。
SHOULD RECOMMENDED 基本やるべきだが、状況によっては正当な「やらない理由」がありえる。ただし仕様の意味するところを十分理解し、慎重に検討したうえで、他の方法をとること。
SHOULD NOT NOT RECOMENDED 基本やらないべきだが、状況によっては正当な「やる理由」がありえる。ただし仕様の意味するところを十分理解し、慎重に検討したうえで、他の方法をとること
MAY OPTIONAL 本当にオプション。やってもやらなくてもよい。ただし、このオプションが実装されたプロダクトと実装されていないプロダクトは、問題なく相互運用できなくてはいけない。

所感

SHOULDの仕様に対し、「MUSTじゃないのでやりませんでした。中身はちゃんと読んでいません。」というのは、RFC2119の定義に反していることを理解しました。
SHOULDの仕様を実装しないとき、もしくはSHOULD NOT仕様を実装する際には、十分検討して理由がきっちり説明できることが必要ですね。

また、MAYの仕様に対し、他の実装と相互作用する場合、実装されている場合いない場合両方に対応する必要がある、というのも要注意です。
実装されていないケースを想定しない実装は、やはりRFC2119の定義に反しているということです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0