トイレにRESTfulなAPIを実装してみた : Eleclog. がおもしろかった。ブックマークコメント欄の大喜利もおもしろかった、ってのは余談として。
ところで、もし自分が設計者なら「トイレに関する操作を、どのようにリソースの CRUD に落とし込むだろうか」って考えた。これは Web API を開発する人々にとっては、設計のよいエクササイズになるのではないか、と思った。「Internet of Things」と叫ばれる時代において、現実世界のアレやコレやをリソースとして定義して API 経由でナンチャラやカンチャラするシーンは、今後、増えてくるのかもしれないので。
件のエントリよりリンクされているソースコードを見てきた。Android アプリの方のコードが、今回扱う話題に関しては都合がよかったのでこっちを。
https://github.com/9SQ/RESTful-Toilet-App
MainActivity あたりを見ればよさそう。
一部を抜粋してみる。
buttonRear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { httpRequest("POST", "rear"); } }); buttonSoft.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { httpRequest("POST", "soft"); } }); buttonBidet.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { httpRequest("POST", "bidet"); } }); buttonStop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { httpRequest("POST", "stop"); } }); buttonBig.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { httpRequest("DELETE", "big"); } }); buttonSmall.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { httpRequest("DELETE", "small"); } });
bidet
ってたぶん「ビデ」のことだよな〜、とか、無駄な知識を獲得したりもしたけれど、これも余談だ。ぼくがおもしろいと感じたのは「DELETE big」「DELETE small」している処理。これは「大で流す」「小で流す」に相当するものだと思う。
ぼくは当初「水を流す、だから、PUT water かなぁ」とか思ったりしていたのだけど。これを DELETE で表現するのがおもしろいと思った。DELETE が成功したときに 204 No Content
が返ってきたら「ちゃんと流れたな」と感じられてよさそう。なんの話だ。