フューチャー技術ブログ

「プロになるためのWeb技術入門」を新人が読んでみた

はじめに

2023年4月に新卒で入社したTIGコアテクノロジーユニット所属の木元と申します。秋のブログ週間2023の5本目です。

今回は新人研修の期間で先輩社員の方に薦めていただいた「プロになるためのWeb技術入門」を読んだ感想を書いていきます。

特にIT未経験の同期の中で評判が良く、読んでいる人が多い書籍です。IT未経験の人やWebアプリケーションの基本を改めて復習したい人におすすめできる一冊です。

書籍の概要

Web技術を体系的に解説した書籍です。

主にJavaを元に説明しており、JSPやサーブレットを用いたソースコードがでてくるので、ある程度知識がないと理解できない部分があります。

Webアプリケーション発展の歴史に沿って具体的に解説されており、非常にわかりやすいです。また、Web開発をしている上で一度は聞いたことのあるような基礎的な用語や技術の説明が書かれています。Web技術に必要なプログラミングやネットワーク、HTML、アプリケーションサーバなど幅広い知識を理解することができます。

目次

  • Lesson1 「Webアプリケーション」とは何か
  • Lesson2 Webはどのように発展したか
  • Lesson3 HTTPを知る
  • Lesson4 CGIからWebアプリケーションへ
  • Lesson5 Webアプリケーションの構成要素
  • Lesson6 Webアプリケーションを効率よく開発するための仕組み
  • Lesson7 セキュリティを確保するための仕組み

Webアプリケーションの説明と歴史(Lesson1〜2)

Webアプリケーションについて何も知らない人でもわかるように基礎的な部分から説明されています。

主な内容

  • デスクトップアプリケーションとWebアプリケーションの違い
  • WebサーバとWebクライアントの違い
  • WWWやURL、通信プロトコルの説明
  • CGIからサーブレット、JSP、フレームワークへと発展していくWebアプリケーションの歴史

以下のデスクトップアプリケーションとWebアプリケーションの違いの様に基礎的な内容の説明が書かれています。(p12 表より編集)

デスクトップアプリケーション Webアプリケーション
処理の主体 手元のOS サーバ
画面の表示 OS上で表示 Webブラウザ上で表示
インストール 必要 不必要

Lesson2ではWebアプリケーション開発には必ず必要な知識ではないため、読み飛ばして構わないと書かれていましたが、この後のLessonで出てくる技術要素や用語の説明が書かれているため、理解するためにもよく読んだ方が良い内容だと思います。

HTTPについて(Lesson3)

初学者の中でも特につまづきやすいHTTPの内容について説明されています。

主な内容

  • HTTPにおける基本的なやりとり(リクエストやレスポンスなど)
  • IPアドレスやDNSの実現方法
  • GETリクエストやPOSTリクエストの説明

HTTP通信の流れやHTTPリクエストやレスポンスが具体的にどのように受け渡しされるかが詳しく説明されています。GETやPOSTメソッドの違いについても記載されており、文章による説明だけではなく、ツールを用いてHTTPリクエストやレスポンスの中身を見ている点がわかりやすいです。

ただ、ツールに関しては10年以上前に出版されたということもあり、かなり古臭い印象を受けました。サイトには載っていましたが、最近ではブラウザのデベロッパーツールを使用して開発をしている人が多いので、デベロッパーツールを用いた説明を書籍に記載してほしいと感じました。

Cookieとセッション(Lesson4)

Lesson4では実際にPHPで作成された宅配ピザの注文サイトをもとにWebアプリケーションの技術要素を学ぶことができます。

主な内容

  • リダイレクトの仕組み
  • Cookieとセッションの考え方と実現方法

Cookieとセッションについては私自身の理解が浅かったこともあり、非常に学べることが多かったです。

宅配ピザの注文サイトはログイン機能と注文を選択する機能からなる簡易なアプリケーションのため、Cookieとセッションについてを理解するにはとてもわかりやすかったです。JavaではなくPHPでコードが書かれているため、少しPHPの理解が必要ですが、他のプログラミング言語を学んだことがある人であれば難しくないと思います。

Webアプリケーションの構造(Lesson5)

Webサーバ、データベースサーバ、アプリケーションサーバの3層構造について説明されています。

主な内容

  • Webサーバ、データベースサーバ、アプリケーションサーバの必要性と役割

図やイラストが他のLessonより多いこともあり、わかりやすい印象を受けますが、実際に開発経験がない人にとってはイメージが少ししづらいかもしれません。Javaで用いるTomcatやmod_jkについて触れており、何をしているかはよくわからずに使用している人にとっては非常にタメになる内容だと思います。

データベースサーバの説明でデータベースに対する操作であるCRUD操作について触れられており、SQLについても少しだけ書かれています。

Webアプリケーションの仕組み(Lesson6)

ロジックとデザインを分離することに基づいて必要な考え方やアーキテクチャ、フレームワークについて説明されています。

主な内容

  • サーブレットとJSPの連携によるロジックとデザインの分離方法
  • リクエストスコープとセッションスコープの違い
  • Webアプリケーションで利用されるアーキテクチャ(MVCモデルやレイヤパターン)
  • フレームワークの必要性

この本の中では一番難しい内容であり、開発経験やJavaに関する知識が無いと理解することが難しいと思います。

ここではWebアプリケーションの構築をするときにはロジックとデザインを分離させることが大切であり、分離させるにはどのようにするかが詳しく書かれています。ロジックとはユーザが入力された情報が正しいか判定する処理のことを指し、デザインはユーザが目にする画面表示部分を意味しています。

また、Lessonの最後ではフレームワークの必要性がメリットとデメリットと共に書かれています。フレームワークは便利である反面、ブラックボックスになる箇所が多く、長期的にみると技術力が低下する可能性があると述べられていたことが印象的でした。

セキュリティについて(Lesson7)

Webアプリケーションを開発する上で重要なセキュリティについて説明されています。

主な内容

  • Webアプリケーションにおけるセキュリティの必要性
  • 代表的なWebアプリケーションに対する攻撃手法とその対策
  • セキュリティ問題の原因と対策

Webアプリケーションの代表的な攻撃手法とその対策について書かれています。代表的なセキュリティに対する攻撃手法については以下の例が挙げられていました。

1.SQLインジェクション
2.クロスサイトスクリプション(XSS)
3.セッションハイジャック
4.クロスサイトリクエストフォージェリ(CSRF)
5.強制ブラウズ
6.ディレクトリトラバーサル

まとめ

この書籍はWebに関する基礎的な知識を広く浅く把握するにはとても良い本だと思います。Web開発する上での重要ポイントがまとまっており読みやすかったです。

この本だけではWebの知識が十分とは言えないと思いますが、Webに関する全体像を把握したい人にはおすすめします。

次は原木さんの小学2X年生、100マス計算を毎日しているです。