どうも、Webまわりの技術について学習しているものです。
さて突然ですがHTTPって聞いたことがあるでしょうか?Webページの住所であるURLでもhttp://~~とあって、聞いたことがある人は多いと思います。
しかし実際何をするものか?どう言う特徴があるのか?と言うことはわからない人もいるのではないでしょうか?
そこで今回はざっくりとHTTPの基本の基本について、まとめておきたいと思います。結論から言うと「HTTPはシンプルなので誰でも使えて、どんなデータでも送信できる便利なもの」です。
HTTPの基本の基本をざっくりと
HTTPでデータを転送
まずHTTPですが「データを転送するもの」です。
コンピューターで使うデータにはいろいろなものがありますよね。例えばざっとあげていくと、HTML、XML、静止画、動画、音声、PDF、JavaScriptなどなどたくさんのものがあります。
HTTPを使えば、コンピュータで扱えるデータなら何でも転送可能です。すごいですよね。
HTTPのステートレス性
HTTPの特徴のひとつが「ステートレス性」です。
ステートレス性と言うのは「サーバーがクライアントの状態を保存しないこと」をいいます。逆にステートフルと言うのは「サーバーがクライアントの状態を保存していること」です。
わかりにくいかと思うので、1度ステートレスとステートフルなやりとりについて、具体例を示したいと思います。まずはステートフルなやりとりです。
ステートフルなやりとり
客:こんにちは。
店員:いらっしゃいませ。マクドナルドへようこそ。
客:ハンバーガーのセットをお願いします。
店員:サイドメニューは何になさいますか?
客:ポテトで。
店員:ドリンクは何になさいますか?
客:コーラで。
店員:以上でよろしいですか?
客:はい。
店員:かしこまりました。
いつもの会話という感じがしますね。ではステートレスなやりとりです。
ステートレスなやりとり
客:こんにちは。
店員:いらっしゃいませ。マクドナルドへようこそ。
客:ハンバーガーのセットをお願いします。
店員:サイドメニューは何になさいますか?
客:ハンバーガーセットをポテトでお願いします。
店員:ドリンクは何になさいますか?
客:ハンバーガーセットをポテトとコーラでお願いします。
店員:以上でよろしいですか?
客:ハンバーガーセットをポテトとコーラでお願いします。以上です。
店員:かしこまりました。
どうでしょうか?日常会話とは全く違いますよね。ここまでの例をまとめると次のようなことがわかります。
ステートフルなやりとりは簡潔
ステートレスなやりとりは冗長
ステートフルなやりとりでは、サーバーがクライアントの注文を覚えている
ステートレスなやりとりでは、クライアントは毎回全ての注文を繰り返している
最初にHTTPはステートレスだといいましたが、ステートフルとステートレスのメリット・デメリットがあります。以下の通りです。
ステートフルのメリット・デメリット
メリット:前回の注文内容を覚えているため、やりとりが完結になること
デメリット:客(クライアント)が増えるに従って、注文内容を覚えておくのが大変になること。スケールアウトさせにくい
ステートレスのメリット・デメリット
メリット:客からの注文内容が毎回全て送られてくるため、店員が前回の内容を覚えていなくてもOK。また通信エラーなどが起きても、情報を伝達できる。
デメリット:毎回情報を全て送信しなくてはいけないので、データ量が多くなりパフォーマンスが悪くなる。
つまりステートレス性があったからこそ、HTTPはスケールアウトに成功し、たくさんの人に使われることになったということができます。
HTTPのシンプルさ
HTTPの特徴としてあげたいのが、そのシンプルさです。HTTPには、たった8つのメソッドしかありません。
このシンプルさがあったからこそ、誰もが使うことができ、様々なサービスに使用されることになりました。例えばブラウザだけでなく、他の様々なデバイス上で現在も使われています。
まとめ
HTTPの特徴についてまとめてきました。HTTPはデータ転送するときに使われるもので、それはステートレスにやりとりされるということがわかっていただけたと思います。
またHTTPはとってもシンプルにできています。だからこそたくさんの人に使われてきたということですね。
HTTPのシンプルさを活かした設計をするためには、HTTPの使い方を正確に知る必要がありますのでより深く知りたい場合は、HTTPのメソッドやステータスコード、ヘッダなどについて知識を深めていくといいと思います。