kent備忘ログ

お仕事と趣味生活と

書籍「プロになるためのWeb技術入門」を読んだ所感

学習の合間、「プロになるためのWeb技術入門」(技術評論社)を読む機会があったので、わかったこと・思ったことを書いていきたいと思います。

全体感

現在では当たり前のように利用される、ECサイトや検索サイトに代表されるWebアプリケーション、普段一般的な利用者側からすれば考えることもないような、サーバサイドからの観点とその仕組み・構造が体系的にわかる一冊でした。



1章〜2章

  • スタンドアロンで使用できるデスクトップアプリケーションと、インターネットを介して使用するWebアプリケーションの違い
WWWの生い立ち・Webの仕組み
  • 当初ほ研究論文の共有を目的として、一部の研究者の間でしか利用されていなかった。そこから無償公開されたWebブラウザをはじめとして、一般的に利用できるPCとネットワークの普及により万人が利用しやすくなった。
  • 一般的な利用者(クライアント)と利用者に情報提供者(サーバ)で成り立つ
  • 初期の仕組みとしてはサーバからクライアントへ、HTMLだけで構成された単純な静的コンテンツを表示するだけのものであったが、
    やがてCGIJavaサーブレットの登場でクライアントのアクセスの状況に応じて、サーバ側コンテンツの表示内容を変化させる、動的コンテンツを生み出すようになった。
  • コンテンツ豊かな大規模なサイトが主流となってくると、主なコンテンツで利用される共通部分に関しては、設計・開発の段階で再利用できるようにするという考えの基に生まれたのがフレームワークであり、今日の大規模開発の効率化と開発コスト低減に貢献している。

3章〜4章

  • HTTPの仕組みとログイン認証機能・セッション機能
HTTPの仕組み
  • WWW・Webの発達に伴い、お互いのPC間で通信を行う機会が増え、どの端末でも同じように通信できるように策定された規格が通信プロトコルである。
  • コンテンツリソースを取得する手段(スキーム)の一種であるHTTPで行われる通信は、主にクライアント側の要求(リクエスト) とサーバ側の応答(レスポンス)で行われる。リクエストにはコンテンツの取得を要求するGETメソッドと、クライアントが入力したパラメータをサーバ側で反映させるPOSTメソッドがある。
  • 実際の通信ではお互いの位置情報であるIPアドレスに向け、TCP/IPプロトコルを介してパケット単位で行っている。それだけではなく、ネットを介して届けられた情報を受け取った際、どのアプリケーションで使用するか判別可能にするため、あらかじめスキーム毎に受け取り側で番号が割り当てられた入り口(ポート番号)が決められている。
ログイン認証機能・セッション機能
  • ファイル共有プロトコルの一種であるFTPは通信を行う毎に毎回、ユーザ情報やセッションの保持が必須のステートフルプロトコルであり、対してHTTPはそういった情報の保持が必要なく通信を行えるステートレスプロトコルである。
  • WWW黎明期、互いのPCのコンテンツを手軽に共有できるようにする為、HTTP通信を余分な情報を持たないステートレスな通信が行える規格として策定した。
  • 一方でWebアプリケーションの普及に伴い、ログイン認証機能やセッション機能を持つコンテンツに対応できるよう、元々ステートレスな通信であるHTTPでは、クライアントのWebブラウザ内で状態を保持できるようCookieが考案された。(ログイン時に使用されるIDやパスワードを、直接Cookieに保存する手段は第三者に傍受される危険性がある為、Cookieの中にはユーザの状態を管理するセッションIDを保存して通信を行うのが一般的である。)

5章~6章

  • Webアプリケーションの構成要素と開発のための仕組み
Webアプリケーションの構成要素
  • Webアプリケーションはクライアント側のWebブラウザ、サーバ側の(Web・アプリケーション)サーバ、DBサーバの三層構成で成り立っている
開発のための仕組み
  • 黎明期より試行錯誤の末、考案された最適なアーキテクチャ(建築様式)が現在のMVCモデルフレームワーク
  • Webアプリケーションをレイヤーパターンにより分解すると、プレゼンテーション層(ビュー・コントローラ)・ビジネスロジック層・データアクセス層(モデル)になる。

7章

セキュリティ
  • Webアプリケーションを実装・運用する上で一番の大敵が顧客情報の漏洩。次いで設計上のバグ
  • よく情報セキュリティの話題にも出てくるが機密性・完全性・可用性の保持の必要性。実際に攻撃の手段としてCSRFXSSセッションハイジャックといった紹介とその防衛策(セッションIDのランダム化・ワンタイムトークンの発行・暗号化など)の解説があった。


実際に読み終えて…
  • インターネットの普及に伴い、Webページのコンテンツの多様化と合わせて、利用者が様々なコンテンツを利用するようになった。一方でコンテンツ制作サイドも大衆の目を引くような先進的なコンテンツを作ろうと、様々なアイデアの中でWebアプリケーションも発達していいたことが分かった。
  • 第5章ではサーバサイドの内部構成が解説されており、実際の環境でosにlinuxが使用されていること、現在ではDockerをはじめとする仮想プラットフォームがなぜ必要なのかということが分かり、webアプリケーションの仕組みに対する解像度が上がり、個人的に一番ためになった解説だった。