どうもです。タドスケです。
dockerやAWSの勉強を進める中で、Linuxと並んでまだ足りないと感じた知識が「Web技術」です。
業務では一切関わることのない領域。
応用情報技術者のネットワークの項目で軽く学んだものの、Webアプリケーションに関する基本知識が足りないと感じました。
そんな中で見つけたのがこの本。
Web周りの知識をいい感じに補完できたので、学んだ内容を簡単にまとめておきます。
※応用情報技術者やネットワーク基礎でも触れられている内容は省略して、この本で新しく学べたことに絞っています。
Web技術とは
REST
- 統一インターフェース:統一されたやり取り(HTTPなど)
- 接続性:情報にリンクを含められる
- アドレス可能性:全ての情報を一意なURLで表す
- ステートレス性:前の状態に依存しない
セマンティックWeb
情報に意味を持たせる。
SEOなどで利用しているメタデータがこれにあたる。
HTTPでやり取りする仕組み
HTTPメッセージ
HTTPメッセージにはリクエストとレスポンスがある。
メッセージ内にはヘッダー部とボディ部が含まれる。
GETはURLに、POSTはメッセージボディにデータを含める。
HTTPバージョンの違い
1.1
サーバーとのコネクションを毎回切断しないことで、接続のやり取りにかかる時間が減る。(キープアライブ)
複数のメッセージをまとめて送って順番に処理する。(パイプライン)
2
ストリームによる多重化を行い、メッセージの到着順番が前後しても待ち時間が発生しない。
バイナリ形式をそのまま送れる。
ヘッダーの差分だけを送る。
HTML内に含まれる画像データなどをサーバー側で判断して送る。
Cookie
ステートレスな実装では前のやり取りを保存できないので、代わりにCookieを使う。
Cookieには有効期限が設定可能。
設定しない場合は処理が終わったタイミングで勝手に消える。
セッション
セッションIDを利用して同一ユーザーからのリクエストかどうかを見分ける。
データ形式
DOM
プログラムからHTMLを操作する仕組み。
HTMLをツリー構造のデータとして扱う(DOMツリー)。
フィード
更新履歴を配信する仕組み。
RSSが代表的。
ポッドキャストはRSSに音声データを流している。
Webアプリケーションの基本
3層構造(アーキテクチャ)
- プレゼンテーション層(Webサーバー、ブラウザ)
- アプリケーション層(アプリケーションサーバー)
- データ層(DBサーバー)
それぞれの置き場所を分けたり分散させたりすることで、パフォーマンスを上げたり機器故障に備えたりすることができる。
Ajax
JavaScriptがWebサーバーと通信し、DOMの機能を利用してHTMLの中身を書き換える。
Webシステムの構築と運用
要件定義→サーバー設計→インフラ構築→運用までの一通りの流れ。
クライアントアプリと大きく違うのは、セキュリティの重要性とインフラ構築の部分。
まとめ
Web特有の用語が多くあり、「何となく知ってはいるけど、詳しくは説明できない」ものが多かったので、この機会に正しく知ることができたのは良かったです。
次はこれまでの知識を生かして、実際に簡単なWebアプリケーションを作ってみたいと思います。
その最初の一歩として、
Linuxのローカル環境にApacheサーバーを立てて、Vimエディタで作った適当なhtmlファイルを表示させる。
に挑戦してみます。
コメント