「好きなHTTPエラーとそのコードを教えてください」の模範回答を考えた

f:id:ryoutaku_jo:20190303222429p:plain

【結論】
・HTTPエラーのコードとは、クライアントとサーバーとの通信が
 正常に完了しなかった時に、サーバーから返ってくる
 エラー内容を表したコード

・500エラーとは、サーバー側に原因がある場合に
 表示されるエラーコード

・エラーは、乗り越える度に強くなる!!


【目次】


【本題】

面接でよく聞かれる質問

最近就活に力を入れ出したので、面接についても色々対策を講じています。
その中で、スクールのキャリアアドバイザから「模擬面接質問一覧」という
面接でよく聞かれる技術質問集みたいな物を貰ったのですが、その中に下記の様な内容がありました。

「好きなHTTPエラーとそのコードを教えてください」













なんだ!
この質問!?

恐らく、WEB技術に関する基礎知識(HTTP通信)があるか測る為の質問でしょうが、
ちょっとウィットに富み過ぎやしないでしょうか・・・

採用担当の方も苦労されているのだろうなぁ〜と勝手に同情する一方、
即答出来なかった事に危機感を覚え、模範回答を考える事にしました。

模範回答の条件

まず模範回答を定義するところから始めます。

・自身が経験したエラーであること
実体験に紐付かない考えは説得力に欠けます。
なので、自分が実際に経験したエラーである事は必須条件だとと考えています。

・HTTPに対する理解力をアピール出来ている
面接が求職者を見極める為に行われているのであれば、
この質問のその一貫のはずで、決して面接官の気紛れでは無いので、
自身の技術に対する深い理解を証明する様な返答をすべきでしょう。

・ウィットに富んでいる
とはいえ面接官も、普通の面接に飽きだしたから、こんな質問をしているのでしょう。
ユーモアにはユーモアで対抗しましょう

HTTP通信とは

まず、そもそものHTTP通信から説明します。

HTTP通信とは、クライアントとサーバーが通信を行う際の取り決めで、
通信プロトコルと呼ばれるものの一種です。

イメージとしては、野球のサインの様な物です。
野球では、ハンドシグナルなどのサインで作戦の伝達を行っていますが、
事前にハンドシグナルの内容を取り決めていないと、全く意図が伝わりません。

インターネットの通信でも同様の事が言え、
様々な種類の機器が正常に通信し合うには、
どの様に情報の送受信を行うのか取り決める必要があります。

そこで登場するのが通信プロトコルです。
通信プロトコルによって、クライアントとサーバーが互いに、
どういった通信を受け取ったら、どういう処理をするか?を、
取り決める事で、正しく情報の伝達が出来る
様になっています。

そして、通信プロトコルにはいくつか種類がありますが、
その中の一つが「HTTP」です。

他にも、色々種類がありますが、
現状多くのWEBでの通信にはHTTPが用いられています。

HTTPエラーのコードとは

クライアントとサーバーとが正常に通信完了しなかった時に、
サーバーから返ってくるコードの事です。

何が原因でエラーになったかを表しており、
三桁の番号でエラー内容は分類されています。

400,500番台がエラーコードと呼ばれ、
エラー内容を表しています。

過去に遭遇したエラー

では、私が過去に遭遇したHTTPのコードを覚えている範囲で書き出して行きます。

・200
正常に通信出来ている事を表すコードです。
エラーでは無いので、一番好きです(笑)
「好きなエラーは?」という質問で無ければ、これを真っ先に挙げていました・・・

・304
更新されていない事を表したコードです。
このコードが表示された場合は、
ブラウザ内のキャッシュに残っているコンテンツを表示します。

確か以前ハッキングを試みてた時にも表示されたと思います。

ryoutaku-jo.hatenablog.com

・401
認証に失敗した事を表すコードです。
以前、ajax通信(POST)を実装しようとした際に発生したエラーです。
結局原因が分からず、一からコードを書き換えたら直った記憶があります・・・

・404
これは開発中に発生したエラーでは無いですが、
存在しなくなったサイトのリンクを踏んだ時などに表示される事が
何度かあったので、唯一プログラミングを始める前から知っていたコードです。

・500
サーバー側に原因がある場合に発生するエラーです。
サーバー側の問題といっても、アプリケーションサーバー側(Nginx・Unicornとか)なのか?
データベース側なのか?アプリケーション側なのか?アプリケーションなら、
どのコードが原因なのか?などなど・・・

原因が非常に多岐に亘るので、非常に厄介なエラーです
正直もう見たく無い(遠い目)

・・・ただ、最も遭遇したので思い入れが強いです
なので、これで模範回答を考えました。

模範回答

私の好きなエラーは、500エラーです。
理由は、最も多く遭遇した事と、最も得られる知見が多かったからです。

500エラーはサーバー内部でエラーが発生している事を表していますが、
サーバーのエラーと一口でいっても、WebサーバーであるNginxや
アプリケーションサーバーであるUnicornの設定内容が原因の場合や、
アプリケーション自体のコードに原因がある場合もあったりと、
原因が非常に多岐に亘り、デバックでかなり苦しめられました。

その一方で、このエラーを解消させる度に、サーバーの仕組みについて理解が深まったり、
エラーログがどこに格納されるのか?といった
デバックに必要な知見も増えたりと、非常に多くの学びを得られました。

(ユーモアなんて、そうそう思い付くもんじゃ無いです)

《今日の学習進捗(3年以内に10000時間に向けて)》

就活オンリー

学習開始からの期間 :86日
今日までの合計時間:854h
一日あたりの平均学習時間:10h
今日までに到達すべき目標時間:785h
目標との解離:69h
「10,000時間」まで、

残り・・・「9146時間!」