十の並列した脳

何でも勉強する,毎週月木曜に投稿予定

「プロになるためのWeb技術入門」まとめと感想 #2

 

「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか

「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか

 

 前回↓

 

ryosuke-okubo.hatenablog.com

 

#2ではLesson4とLesson5について扱う。

 

 

Lesson4

ここから実際のWebアプリケーションの中身を追っていく。本ではPHPをもとに説明されるが,本記事ではコードの詳細には立ち入らず最低限の理論にとどめておく。重要な概念を次に記す。

  • モック
  • リダイレクト
  • ステートレス・プロトコル
  • Cookie(クッキー)
  • セッション

モック

まず画面構成を考える。本ではログイン画面や商品一覧画面などから構成される宅配ピザ注文サイトの例があげられている。実際の業務ではクライアントの要望(漠然としていることが多い?)を聞き取りながら形にまとめる「要求分析フェーズ」を経て作成される。画面の案ができたら,まずHTMLだけの画面(モック)をつくり,クライアントと確認をとる。

 

リダイレクト

モックが出来上がったら,プログラムを追加していく。本ではPHPを例に,「POSTリクエストで渡されたユーザ名(UN)とパスワード(PW)を変数へ格納→UNPWの一致を確認→Locationヘッダに移動」という手順を踏んでいる。リダイレクトとは,リクエストしたURLと異なるURLに誘導することであり,レスポンス・ラインで「302 Found」と表される。

 

ステートレス・プロトコル

HTTPは状態をもたない,「ステートレス・プロトコル」である。例えば,ログイン画面に正しいUNPDを入力すると商品一覧画面に移動できるとする。しかし,HTTPではURLさえわかればログイン画面を経ることなく商品一覧画面に移動できてしまう。なぜなら,ログインしているかの状態を確認していないからである。

一方で状態をもつプロトコルを「ステートフル・プロトコル」といい,FTPFile Transfer Protocol)がその例である。

ステートレスが優れている点として,認証が不要,オーバーヘッドが少ないことがあげられる。

Cookie(クッキー)

Cookieはアプリケーションとブラウザ間で情報をやり取りする技術である。リクエストに対し,レスポンスのヘッダにUNPWの情報をCookieとして加えて送信する。Cookieを受け取ったブラウザは次に同じサーバにアクセスするとき,そのCookieをリクエスト・ヘッダに加えて送信する。アプリケーションがCookieを調べ,それに対したレスポンスを返す。

f:id:ryosuke_okubo:20190127095446p:plain

図1 Cookieの仕組み

Google ChromeではCookieを確認する機能がある。アドレス横にある鍵アイコンをクリック→Cookieでそのサイトで使用中のCookieが確認できる。

f:id:ryosuke_okubo:20190127103144p:plain

図2 Cookieの確認

 

セッション

Cookieにより状態を持たせることが可能になった反面,ヘッダさえわかればその情報をのぞけてしまい,安全面において危険である。そこで「セッションID」を用いてやり取りをするようにしている。セッションIDは,例えばUNPWをもとに文字列に変換したものであり,情報そのものをやり取りするよりも安全性が高い。

 

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_jkTomcatに転送→TomcatがWebアプリケーションに渡す)。

 

Webシステムの基本構成

Webシステムを構成するソフトウェアは,以下の3つに分けられる。

この3つを連携させる「3層構造」が構成の基本である。

f:id:ryosuke_okubo:20190127102322p:plain

図3 基本的なWebシステムの構成

 次回↓

 

ryosuke-okubo.hatenablog.com