Tatehitoの技術メモ

ソフトウェアエンジニアです。いろいろ書きます。

感想『Webを支える技術』

以前、イラスト図解式 この一冊で全部わかるWeb技術の基本という、WEB技術に関するトピックを幅広く取り上げた、図解本を読みました。見開き1ページに解説と図解がセットになっていて頭に入りやすく、Web技術についてザックリと把握したい、という目的を叶えてくれる良書でした。

https://blog.tatehitolog.com/entry/2019/08/18/100433blog.tatehitolog.com

そんな『イラスト図解式 この一冊で全部わかるWeb技術の基本』は広く浅くWeb技術について教えてくれましたが、「もう少し突っ込んだ内容も学んでみたいな~」と思い、今回は技術評論社のWebを支える技術 ―― HTTP,URI,HTML,そしてREST WEB+DB PRESS plusを読んでみました!

どんな本か

  • 2012年に発売され、現在も増刷されているWeb技術の定番書
  • Webの歴史から、Web技術の仕様、Webサービス設計の具体例について解説
  • 図解による解説はほぼない
  • Webシステム開発未経験だと敷居が高いかも

本書のテーマは「Webらしい設計ができるようになること」

最初にこのテーマを見たときは、「Web"らしい"設計ってなに?」って感じだったのですが、最後まで読んでから振り返ってみると「Webらしさとは何か」、漠然とですがイメージすることができるようになり、「今までWebらしくない設計しちゃってたかもなあ......。」と、過去に自分が書いたコードがクソコードに見えてきました。

ゼロからWebアプリをつくってみると分かりますが、Webアプリは「Webらしく」つくることもできるし、「Webらしくなく」つくることもできます。Webらしくない設計でも、問題なく動くのですが、保守性が落ちたり、Webのポテンシャルを最大限発揮することができません。

過去のコードがクソコードに見えるようになったということはすなわち、本書は良書です(笑)。読んで良かったです。何度も読み返したい。

個人で趣味でつくったアプリなどは「Webらしくなくても、動けば良い」という考え方もありますが。そんな場合でも、「(Webらしさを知ったうえで)Webらしくなくつくろう」と判断できることが大事なんでしょうなあ。

あ、それと本書の対象読者は「Webシステム開発経験者」ということで、少なくともプログラミング未経験のような方が読むのはちょっと辛いと思います。

ちなみに僕は業務でのWebアプリ開発経験はないですが、Railsの勉強がてら開発している『ポケモンしりとり』の経験のおかげで、わりと内容が頭に入ってきたかな、という印象です。なので、実務経験がなくても「Railsチュートリアル」のようなサイトでサンプルアプリをつくった経験があれば、理解できる内容だと思います。

意識する必要がなくても仕組みを知っておく

Railsのようなモダンなアプリケーションフレームワークを使えば、強く意識しなくてもある程度は「Webらしく」なります。たとえばRailsではクライアントに返すステータスコードをプログラマが意識して設定しなくても(*1)、フレームワークが「Webらしい」ステータスコードを返してくれます。

ステータスコード以外にも、おそらく意識していないところでフレームワークがいい感じにWebらしくしてくれているのでしょう。

フレームワークがよしなにやってくれるなら、「Webらしさなんで知らなくてもいいじゃん」となりそうですが、Webらしさを知らないと、せっかくフレームワークがいい感じにしてくれているのに、Webらしさを損なうような修正をしてしまうこともあるでしょうし、当然、プログラマ自身でWebらしくしないといけない部分もあります。

例えば、「HTTPメソッド」のうち、GET、POST、PUT、DELETEのどれを使うべきか?を判断するのはプログラマの仕事です。(Railsの場合、scaffoldで自動生成してくれるものもありますが)

POSTは何でもできちゃう万能メソッドなので、POSTを使いがちですが、誤用をするとWebらしくなくなり、HTTPメソッドの良さを最大限発揮できなくなります。(この点については本書で詳しく解説されています)

本書で頻出する用語・キーワード

それなりのボリュームの本なので、一度読んだだけで「完全に理解した」となるのは難しいと思いますが、Web技術に関する用語を見て「ああ、あれのことね~」とイメージできるようになればとりあえず十分かなーと思ってます。人に説明できるようになるのが理想ですが、まあそれはおいおい......。

用語の意味と、それぞれの関連性を理解しながら読むと、内容が頭に入ってきやすいです。本書に登場する用語・キーワードをざっと上げるとこんな感じ。

  • ハイパーメディア
  • ハイパーリンク
  • ハイパーメディアフォーマット
  • 分散システム
  • Web API(Webサービス)
  • TCP/IP
  • HTTP
  • HTTPメソッド
  • HTTPヘッダ
  • ステータスコード
  • URI
  • リソース
  • REST
  • SOAP
  • XML
  • HTML
  • JSON
  • Atom
  • microforamts

おわりに

前評判通りの良書でした。

ブラウザでURLを叩くだけでも、「GETリクエストが飛んで、こんなハイパーメディアフォーマットを含んだレスポンスが、こういうヘッダ付きで返ってきてるのかな...でそれをブラウザがレンダリングして...」と、ネットワークを介したやり取りが、以前よりはっきりとイメージできるようになった......ような気がします。

Web技術について学んだことのない人は特に、Webの世界や、ブラウザの向こう側で起きていることがちょっぴり、分かるようになると思います。

Webの開発に触れた経験がある人であれば読みやすいと思いますし、触れたことがない人でも、読んでみる価値がある本です。(ダメそうなら一旦積読して再チャレンジ!)ぜひ読んでみてください。

*1:railsではrenderメソッドの引数でステータスコードを決められる