Site logo

カスみたいなエラーの話

やっぱこういう細かいところにこだわりたいっすよね

カスみたいなエラーの話

やっぱこういう細かいところにこだわりたいっすよね

HTTPってなんだよ

HTTP ってよく聞きますけど何でしょうか。 答えは Hyper Text Transfer Protocol の略です。 Hyper Text とは Hyper Text という形式のテキストデータという意味です。 Transfer は転送という意味なのは分かるでしょう。 では Protocol とはなんでしょうか。和訳すると規約という意味です。 コンピュータ間で通信するにあたってお互いがお互いの話している内容を理解するためにお約束事が必要です。 日本人はお互いが日本語を話すという認識があるので意思疎通が取れます。同じことです。 つまりテキストデータを送受信するためのお約束事です。 このお約束事は RFC1 というものによって定められており、インターネットに繋がるデバイスはこれに従うことによってお互い通信することができています。 例えば皆さんも知っている 404 not found というエラーはRFC9110にて要求されたリソースが見つからない際の一時的なエラーとしてナンバリングされています。

フロントのエラー画面

さて、実際にウェブアプリを作成するうえでエラー画面は作って置いた方が良いでしょう。 自分はデフォルトのエラー画面ではなくイイ感じのエラー画面を作ってみました。 例えば存在しないページで404を返してくるであろう https://l-uploader.puresign.tokyo/hoge にアクセスしてみましょう。 イイ感じのアスキーアートが出てきたかと思います。 これは黄昏酒場の自機の浅間伊佐美です。かわいいね。

418 I'm a teapot

いくらインターネットの定義書であるRFCとはいえ、エイプリルフールもします。 1998年のエイプリルフールにて、RFC2324が出されました。 これはコーヒーのサーバとウェブサーバをかけて、ウェブサーバにコーヒーを入れてもらうためのHTTP拡張プロトコルである、 Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0) についての定義書です。 ここで 418 I'm a teapot というエラーが追加されています。 これはコーヒーにサーバを入れてもらおうとしたところサーバはコーヒーサーバじゃなくてティーポットだったので淹れられないというエラーです。2 貴重なエラーコードの割り当てをクソみてぇなエイプリルフールネタに使ってしまったわけですが、問題視したときは時すでに遅しみんな418エラーをネタとして組み込んでいました。のちのRFCで みんなジョークに使ってしまっているので何か特別に割り当てがない限り永久欠番なエラーとする としています。

ということでえるろだにも418番エラーを返すバックエンドAPIが存在しています。 https://l-uploader-api.puresign.tokyo/alcohol にアクセスしてみてください。 /alcohol に向かってGETリクエストを投げているのでつまりサーバに対して酒を要求していることになります。 これはZUNが酒好きなことに由来します。 しかしサーバ自体はティーポットなので 418 I'm a teapot を返します。 ただ、エラー文が少し違います。

{"detail":"I can't serve you alcohol, because I am a little teapot. But I can pour you some Returner Liqueur instead."}

ティーポットなのでアルコールは提供できない、ただリターナーリキュールなら提供できる というエラー文です。 リターナーは紅茶リキュールです。 クライアントから酒を要求されたが、サーバ自体はティーポットである都合上提供できない。だがティーポットとしてせめて紅茶リキュールなら提供してあげられるという妥協点を提示しているというエラーです。 そのうえでhttps://l-uploader-api.puresign.tokyo/returnerにアクセスしてみましょう。 今度はリクエストが成功したうえで以下のような文が出てきます。

{"name":"Returner Liqueur","type":"tea liqueur","abv":"24%","note":"A smooth black tea spirit served only by little teapots."}

リターナーリキュールが無事届き、注意書きとして 小さなティーポットでしか淹れられない滑らかなティーリキュール というイイ感じの文が出ています。 こういう小ネタを作ってみました。 本来418番エラーはコーヒーを淹れるためのプロトコルにおけるエラーなのでRFC違反ではありますが、まぁ418にRFC違反を考えてもしょうがないので良いでしょう。

おわり

ということでカスみたいなこだわりを付けたという話でした。 まじめなアプリなんてつまらないんでね、こういうネタくらいつけても良いと思いました。

Footnotes

  1. Request For Comment の略。和訳すると 意見募集中 となります。インターネットはみんなで作っていくというスタンスを取っているので、今あなたが『この仕組みよりこっちがより良い』という意見提出をすれば正当な手続きを経て受理されます。つまり開かれているのがインターネットなのです。
  2. これってコーヒーを淹れるためのリクエストを正当にしているクライアントが正しく、コーヒーを淹れる能力がないサーバが間違っているように見えないか?すると一時的なエラーじゃなくて恒久的なエラーだから5系エラーなのではという気がしてきたな…でもchatgptに聞いたらティーポットにコーヒーを淹れさせようとしているクライアントが間違っているので5系って返ってきた。もうこれわかんねぇな。