書評☆3 Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門 | 簡易WebサーバーをJavaで作りながら学ぶ

other

概要

  • 書名: Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門
  • 副題:
  • 著者: 前橋 和弥
  • 出版日: 2016-06-07
  • 読了日: 2018-04-04
  • 評価: ☆3
  • パーマリンク: https://book.senooken.jp/post/2018/05/25/

評価

Webアプリケーション開発は複雑になってきている。しかし,基本的なところは15年くらい前から変わっていない。ここに着目して,Web開発の基礎を学ぶために簡易WebサーバーをJavaで開発しながら,どういう処理を行うのか解説している。

全体の構成は以下の3部構成だった。

  • 1/3がWebサーバーの作成
  • 1/3が認証まわり(サーブレット,Cookie,セッション)
  • 1/3がWebアプリ開発に必要なその他の知識の解説

順を追って解説してあって,まあまあわかりやすかった。要所要所できちんと定義元のRFCを引用していたのがよかった。

引用

p. 62: 補足 URLの末尾のスラッシュはいるの?いらないの?

  • ホストのトップのページであれば、あってもなくても同じ
  • ディレクトリの場合は、スラッシュを付けないと、リダイレクトが発生してリクエストが2回発生する(よって付けるのが望ましい)

なお、ホストのトップのページの場合、URLを最初に規定したRFCであるRFC 1738に「If neither nor is present, the "/" may also be omitted.」、つまり、「パスも検索部分(URLのうち[ ?」以後の部分のこと)もないのであれば、「/」も省略される」と陽に書いてあります。

古典的な問題に対して,実際にブラウザーの開発ツールの[Network]タブからアクセスして発生する要求と応答のやりとりも確認し,さらにRFCもきちんと明記しており参考になった。

p. 64: 2.5 URLエンコードに対応する

ところで、IEとFirefoxがディレクトリやファイル名部分をUTF-8でエンコードするというのは良いとして、それはどこかで規格として文書化されているのかが気になりますが、W3CのHTML 4.01 specificationの附属書Bに記載がありました。

We recommend that user agents adopt the following convention for handling non-ASCII characters in such cases:

  1. Represent each character in UTF-8 (see [RFC2279]) as one or more bytes.
  2. Escape these bytes with the URI escaping mechanism (i.e., by converting each byte to %HH, where HH is the hexadecimal notation of the byte value).

ブラウザーのURLエンコードでUTF-8で解釈される理由がわかって参考になった。

p. 138: 補足 Cookieの容量制限

そこで、標準化された中では一番古いRFCであるRFC 2109の6.3を見ると、次の記述があります。

  • at least 300 cookies
  • at least 4096 bytes per cookie (as measured by the size of the characters that comprise the cookie non-terminal in the syntax description of the Set-Cookie header)
  • at least cookies per unique host or domain name

Cookieの制限をしれて参考になった。

p. 142: 4.3 Cookieの使用

Cookieに関する最新のRFCであるRFC 6265を参照すると、次の属性が記載されています。

CookieのRFCがわかってよかった。

結論

Javaで簡易Webサーバーを作ることでWebの仕組みを学べるようになっている。RFCも要所要所で参照していてよかった。

個人的には,JavaではなくC/C++で解説してあればもっとよかった。JavaでWeb開発をするなら参考になると感じた。

コメント

タイトルとURLをコピーしました