<全体概要>
Webアプリケーション開発の仕組みについて、基礎を解説している。
<全体所感>
時系列やフロー的に説明していたり、理由とそれ故に開発された技術を解説してくれたりしていて分かりやすい。また、使っている言葉も分かりやすい。PHPやJavaのコードが使われているが、コードを読むことは目的ではなく、どんなことをサーバ側でしているのか?を言葉で説明してくれるので、コードが読めなくても問題ない。
2010年出版されたので、その頃のかなりオーソドックスなWebアプリケーション開発のやり方を解説している。現在と使っている技術が違うかもしれないが、Webアプリ開発の流れを汲む・基本理解という意味ではとても勉強になった。またJava関連(サーブレット・JSP・フレームワーク)情報が多いので、Java×Webアプリ開発×Web開発基礎を知りたい私にはうってつけだった。
<内容概要>
・Webの発展(HTTP, CGI, サーブレット・JSP, Webアプリ)
・Webアプリの構成要素、開発の仕組み・流れ
<本書から得られた知見>※個人の理解なので誤りの可能性有
・Webアプリ開発がなぜ難しいかというと、サーバとクライアント間で通信してWebアプリを構築するため、動作の起点や作動する場所(サーバorクライアント)、通信まで幅広く関わっていて、全体像が掴みにくいから
・CGIはサーバ側に行かず、クライアントPC内で完結する
・サーブレットはJavaプログラム中にHTML表示を埋め込み、JSPはHTML中にJavaプログラムを埋め込む
・URIはリダイレクトしても同じ名前を持つように考えられたプロパティ(統一)
・ポート番号でどのソフトウェアに送るかを決めている
・GETメソッドはURLに丸見えで、POSTはリクエストの中にリクエスト内容が入っている
・HTTPはログイン状況が記録できないステートレスプロトコルである(FTPはステートフル)→記録のためにCookieやセッションが使える
Cookie:例)ログイン状態を覚えておく
セッション:例)受付→選択→会計といった流れを覚えておき、その状態が終わり次第チェックをつける。それぞれの流れにセッションIDをつける
・Javaを使うとき、Webブラウザ←→Webサーバ←→APサーバ←→DBな感じ
Webサーバ:静的HTMLリクエストといった回数が多くて処理が軽いものの受付
APサーバ:動的リクエストといった回数が少なくて処理が重いものの処理、で役割分担が多い
・サーバのフォワード処理ではリクエストを複数発行せず、レスポンスに宛先のURLを含んで返す
・リクエストパラメータはHTMLからきた文字列なので使用するとサーブレット内部で処理するのに使えない、代わりにリクエストスコープを使い、リクエストとレスポンス間でデータを共有し、処理をする
・アーキテクチャ=今まで開発に使ってきて便利だった考え方を実装するためのフレームワーク
アーキテクチャ:ロジックとデザインの分離(MVCモデル)を実現するためのフレームワークのStruts、レイヤパターン分離によるデータアクセス層分離を実現するためのO/RマッピングフレームワークiBatis
・フレームワークは設計を固める(自由度が下がる)ことで設計・開発工数を削減しており、学習コストを払うことで品質が保証できる(作成部が減る)。テスト工数も減らせるが、フレームワークは現技術の賜物の結晶なので、使えても原理が分からなければその場しのぎとなり、長期的な技術力にはならない(勉強しよ)
・クライアントはどんな使い方をするか?入力リクエストによってブラウザを操作されない、SQLを実行されない、個人情報を取得されない、成りすましができないために、SSL(HTTPS)を使う、セッションIDを判定に使う等する。
また、戻るボタンや処理遅さによる連続クリックでの複数リクエストを防ぐために、ワンタイムトークンを使う、グローバル変数に情報を持たせない等
面白そうだと思う方がいたらぜひ読んでみてください~