もう一度HTTPについて学んでみる

2021-12-06

この記事はたくりんとん、ひとりアドベントカレンダー!2021!の 6 日目の記事です.

たくりんとん、ひとりアドベントカレンダー!2021!

はじめに

以前,自作フレームワークに関する記事を書いたのですが,その自作フレームワークを開発している中で,HTTP プロトコルについてもう一度復習したくなったので,WEB エンジニアが最初に読むべき本としてよく言及される「WEB を支える技術」という本をもう一度読んでみたという内容について記し,最近の HTTP プロトコルの仕様などについても様々なところで言及されていることについて少し触れていきたいと思います.

イチから php フレームワークを作ってみる

Web を支える技術 -HTTP、URI、HTML、そして REST (WEB+DB PRESS plus)

そもそも僕がこの本を読んだのは確か 2 年半以上前だったと思います.今回この本を読むに至った理由としては,2 年半以上前と現在の自分の知識の差がどれくらいあるかということを確かめたかったという理由も兼ねています.

読んでみた感想

これまで行ってきた開発経験などからどれくらい自分の知識として身についているか知れるのはいい機会だったと思います.最初に読んだ頃は開発経験の少なさや WEB の分野に対する理解の深さが未熟であり,本に書かれている内容も「よく分からない」,「とりあえずわかるところだけ読んでみた」という状態で読了していました.

しかし,今回読んでみた感想としては,最初に読んだ時よりもわかりやすく書かれていることが実感でき,自分の HTTP プロトコルに対する理解度が深まっていることを確認することが出来ました.

HTTP プロトコルの仕様の記述で触れられている内容もそれほど難しくはなく,この本が WEB の分野に進む際に読むべき本として取り上げられる理由がよく分かった感じがしました.

右も左も分からない状態で WEB の分野にやってきた人におすすめするのにはちょうどいいかなとは思いますが,一方で,対象者にとってまだ分からない内容をたくさん含んでいる可能性もあると思います.

なので,僕個人としては,その部分はとりあえず読み進めていただいて,対象者が分かる部分だけを理解し,また時間をおいて読み返してみてほしいというと思います.

HTTP の仕様に対する理解度

HTTP プロトコルの仕様はHTTP/1.1RFC2616として規定されてから何年間もバージョンを変えずに利用されていたのは周知の事実ですが,それでも僕は HTTP プロトコルの仕様についてしっかりと理解しているというわけではありませんでした.

HTTP プロトコルの仕様について,知っていたとしても普段から開発に利用するフレームワーク内で,リクエストを作成するために Laravel の HTTP ファサードのような HTTP クライアントが提供するgetメソッドやpostメソッドなどについてのみであり,完全に HTTP メソッドの処理の理解をフレームワークのメソッドに委譲していた形になります.よって,HTTP メソッドのリクエストやレスポンスの中身について理解を深めていないまま開発をしており,理解した気になって開発を行っていたことに対してやや嫌悪感を覚えてしまいました.

Laravel 8.x HTTP クライアント

自作フレームワークを行う中で HTTP メソッドのリクエストやレスポンスの中身についてどのような内容が記述されているのか気になったことで勉強する気になったのですが,これまでにフレームワークで HTTP メソッドを利用していた分,それほど難しい内容ではない部分が多く理解は早かったと思います.むしろ復習になる部分が大半を占めていたのは予想外でした.

ただ,冪等性や安全性について,さまざまな HTTP ヘッダについては知らない部分や理解不足な面が多数あったのでこれらについては今回もう一度読んだことによって勉強になったと思います.

これからの HTTP の仕様

現在,HTTP/2HTTP/3が登場しており,HTTP ヘッダの圧縮やリクエストやレスポンスのパイプライン化を行ったり,多重化したストリームをトランスポート層の通信プロトコルに移行させたりするなど,近年のバージョンアップは自分にとっては難しい内容ですが,なんとなく面白そうなことをしているなという感想を持っています.

最近では以下のような記事を各所でよく目にします.これから HTTP の仕様がどのように変わっていくのかについて,大変興味深いので常にアンテナを張り,情報を収集したいと感じています.

新しい HTTP メソッド、QUERY メソッドの仕様

終わりに

これから HTTP プロトコルの進化を遂げていく様子を見ながら,その歴史を語れる人間になれるよう,日々の技術力の研鑽に励みたい所存です.

Share