書評:プロになるためのWeb技術入門
先日参加した勉強会で、Webエンジニアの方にまずは読んだ方が良い書籍として以下の書籍を紹介していただいた。
読了したので、概要と感想を記載します。
プロになるためのWeb技術入門
目次
1. 書籍・著者情報
2. 本書の概要
3. 学べたこと
4. 今後生かしたいこと
1. 書籍・著者情報
【著者】
小森 祐介さん
2000年に東京工業大学工学部情報工学科卒業、2005年からはOSSプロジェクトに興味を持ちSeasarプロジェクトにも参加するなど様々な知見がある方
他第標的な著書に「なぜ、あなたはJavaでオブジェクト思考ができないのか。」などが挙げられます。
【書籍情報】
初版は2010年4月10日発売
私が購入したのは第12版で2019年7月2日発売のもので、情報書籍としてかなり重版されており根強い人気が伺えます。
2. 本書の概要
本書では、以下の通り初心者の方を対象としたドキュメントとなっております。
- これからWebアプリケーション開発に取り組もうとする人
- Webアプリケーションに開発の経験があるものの、どのような仕組みで動作しているのか自分で説明できない人←私はこれ
- Webアプリケーション開発プロジェクトを管理しているが、現場で使われている技術がいまいち把握できないと感じている人
しかしながら、自分のような初心者についてはWebアプリケーションを体系的に理解することができ非常に有用な書籍となっていました。
特に、ただ技術・仕組みを説明するだけではなく記載内容が初心者でも理解しやすいように「ピザ・ペントミノ」というピザ(商品)注文サイトを例として記載されているためとっつきやすい内容となっています。
なお、Lesson6以降はより実践的な話が多いですが熟練者には物足りないかもしれません。
3. 学べたこと
Cookieやセッションについての理解がふわふわ としていたのですが、書籍の中で図解された内容で説明されているため言語化して説明できるレベルで理解できました。
・MVC
Model View Controllerの略で、今のWebアプリ開発では広く普及した考え方です。
例えば商品発注であれば、以下のように分けて実装されます。
Model・・・商品など
Controller・・・発注など処理
View・・・画面表示(商品画像など)
私がPHPで利用しているLaravelもこのMVCの概念が根底にあるため、改めて概念を図解をもとに理解することが大いに役立ちます。
よく知らなかったのですが、クッキーはブラウザ側に保持する接続に関する情報を保持するものであり、これがあるおかげで各サイトとの処理で必要なデータが何度も入力する手間が省けます。
ただ、これにUserID、Passwordなどの情報をもたせることをしてしまうとCookieが盗まれる=ユーザログイン情報の漏洩となり現在はセッションIDを保持するのが主流だそうです。
・セッション
Cookieに接続情報をもたせるために、セッションという概念が登場します。
セッションIDとしてランダムに割り振られた情報を保持し、この情報はサーバ側・ブラウザ側それぞれが保有することで接続の際にIDが一致しているかどうかでログインが可能な仕様となります。
しかし、セッションIDが盗まれた場合サーバ側でセッションがクリアされる前であればログインができてしまうことになるのでSSL証明により暗号化することで盗聴されても問題ないように対処することが主流のようです。
・ワンタイムトークン
フォーム情報のダブルサブミット(二重送信)を防ぐための仕組みです。
注文など、レスポンスが遅くて「押し忘れたかな?」と思ってボタンを押した時同じ注文が2回飛んでしまうことを防げる仕組みです。
注文画面にワンタイムトークを持たせておくことで、サーバ側も同様に保持しその情報が一度でも一致すれば2度目の処理は行わない仕組みだそうです。
今後のWeb開発でも重要な知識となると思いますのでよく覚えておきたいです。
やや残念に感じた点としては、本書は2010年当時の技術が広く取り上げられていますがフレームワークなどは過去の遺産になりつつあると思います。
書籍内ではStrutsやiBatisが主流で今後も使われるだろうと記載がありますが、Strutsは2014年時点で様々な脆弱性が見つかっており現在ではあまり利用されていません。
JavaのフレームワークとしてはJava EE, Spring Framework や Pray Frameworkなどが人気だとのことです。またiBatisも廃止され、MyBatisに移行しています。
4. 今後生かしたいこと
やや記載されている技術がが古いことについて上記で触れましたが、本書ではプロローグの時点で「Webアプリケーションの世界は次々と新しい技術が登場しており、本執筆時点での最新技術を紹介してもすぐに陳腐化する。」と明記されています。
私がSEとして働き始めた2012年からWeb系はかなり進歩が早い状態です。(SIerとしてはあまり技術は変わっていません。。。)
すでに10年前主流だった技術は廃れつつあるので、今後も勉強は継続しておく必要がありますが本書に記載してある内容は体系的なものなので大きく移り変わることはありません。
直接的な技術(言語、フレームワーク)だけでなく、本書のような体系的な技術書も引き続き読んで習得していきたいと思います。