「プロになるためのWeb技術入門」まとめと感想 #2
「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか
- 作者: 小森裕介
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/10
- メディア: 大型本
- 購入: 57人 クリック: 1,242回
- この商品を含むブログ (35件) を見る
前回↓
#2ではLesson4とLesson5について扱う。
Lesson4
ここから実際のWebアプリケーションの中身を追っていく。本ではPHPをもとに説明されるが,本記事ではコードの詳細には立ち入らず最低限の理論にとどめておく。重要な概念を次に記す。
モック
まず画面構成を考える。本ではログイン画面や商品一覧画面などから構成される宅配ピザ注文サイトの例があげられている。実際の業務ではクライアントの要望(漠然としていることが多い?)を聞き取りながら形にまとめる「要求分析フェーズ」を経て作成される。画面の案ができたら,まずHTMLだけの画面(モック)をつくり,クライアントと確認をとる。
リダイレクト
モックが出来上がったら,プログラムを追加していく。本ではPHPを例に,「POSTリクエストで渡されたユーザ名(UN)とパスワード(PW)を変数へ格納→UNとPWの一致を確認→Locationヘッダに移動」という手順を踏んでいる。リダイレクトとは,リクエストしたURLと異なるURLに誘導することであり,レスポンス・ラインで「302 Found」と表される。
ステートレス・プロトコル
HTTPは状態をもたない,「ステートレス・プロトコル」である。例えば,ログイン画面に正しいUNとPDを入力すると商品一覧画面に移動できるとする。しかし,HTTPではURLさえわかればログイン画面を経ることなく商品一覧画面に移動できてしまう。なぜなら,ログインしているかの状態を確認していないからである。
一方で状態をもつプロトコルを「ステートフル・プロトコル」といい,FTP(File Transfer Protocol)がその例である。
ステートレスが優れている点として,認証が不要,オーバーヘッドが少ないことがあげられる。
Cookie(クッキー)
Cookieはアプリケーションとブラウザ間で情報をやり取りする技術である。リクエストに対し,レスポンスのヘッダにUNとPWの情報をCookieとして加えて送信する。Cookieを受け取ったブラウザは次に同じサーバにアクセスするとき,そのCookieをリクエスト・ヘッダに加えて送信する。アプリケーションがCookieを調べ,それに対したレスポンスを返す。
Google ChromeではCookieを確認する機能がある。アドレス横にある鍵アイコンをクリック→Cookieでそのサイトで使用中のCookieが確認できる。
セッション
Cookieにより状態を持たせることが可能になった反面,ヘッダさえわかればその情報をのぞけてしまい,安全面において危険である。そこで「セッションID」を用いてやり取りをするようにしている。セッションIDは,例えばUNとPWをもとに文字列に変換したものであり,情報そのものをやり取りするよりも安全性が高い。
Lesson5
Webアプリケーションはクライアントとサーバの関係により成り立っている。そのうちサーバにはWebサーバ,データベースサーバ,アプリケーションサーバがあり,役割を理解しておく必要がある。
Webサーバ
まずは歴史の流れについての説明。WWW黎明期において,多くのシステムはWebクライアント-Webサーバという単純な構成であった。CGIの発明により,サーバ側ではWebサーバとCGIで呼び出されるアプリケーションの2種類のソフトウェアで稼働するようになり,さらにWebサーバの中でアプリケーションが実行されるようになった。
データベースサーバ
コンピュータ上で扱う情報集合を「データベース(DB)」といい,それの取り扱いに特化した「DBMS(Database Managemennt System)」というソフトウェアが開発されるようになった。DBに対する動作は「CRUD」と呼ばれ,以下から構成されている。
- Create(生成)
- Read(読み取り)
- Update(更新)
- Delate(削除)
DBではデータを「テーブル」という表の形で管理する。情報を抽出するために「SQL(Structured Query Language)」文で命令する。DBサーバは,一般的にWebサーバと分離して配置される。
アプリケーションサーバ
CGIはWebサーバへのリクエストごとに,起動と終了を繰り返す。対してアプリケーションサーバはDBサーバのように常に起動している。本ではTomcatを例にWebサーバとアプリケーションサーバとの連携について説明されている(クライアントのHTTPリクエストをApacheに送る→mod_jkがTomcatに転送→TomcatがWebアプリケーションに渡す)。
Webシステムの基本構成
Webシステムを構成するソフトウェアは,以下の3つに分けられる。
- Webサーバ
- アプリケーションサーバ
- データベースサーバ
この3つを連携させる「3層構造」が構成の基本である。
次回↓