こんにちは。
自粛要請からリモートワークに変わり、座椅子のせいか腰が砕けそうです。
リラックスを取るなら座椅子、健康を取るなら椅子みたいです。究極の選択や。。選択の結果は、、ストレッチした方が良い。
どうもハチマキです。
はじめに
入社早々に上長から教えてもらった
エンジニアデビュー3ヶ月後くらいに読むと良さそうな書籍
「Webを支える技術 -HTTP、URI、HTML、そしてREST」
について読んでみたので、自分なりにまとめてみました。
書籍は、第1部から第5部とあるので、1部ずつまとめて行きたいと思います。
▼書籍はこちら
www.amazon.co.jp
本日の概要 : 第1部 Web概念について
- どんな時にために、この書籍は読んでおくべき?
- 書籍のテーマと目的
- 書籍の構成
- 第1部 Web概念
- 学んだこと
- 現在のPCで最も重要なソフトとは
- Webの3つの用途
- Webを支える技術
- RESTの誕生
- Webのアーキテクチャスタイル
- スタイルを組み合わせてRESTを構成する
- RESTの2つの側面
- RESTの意義
- まとめ
- 参考資料
どんな時にために、この書籍は読んでおくべき?
他のWebエンジニアと技術的な話をする際に必要な概念や言葉を正確に理解するために読んでおくべき!
Web全般の教科書的な内容となっていますが、職場や勉強会などでエンジニアと対話する際にインプットしていると良い内容がまとまっております。
by 上長エンジニア
書籍のテーマと目的
- テーマ
- WebサービスをいかにWebらしく設計するのか
書籍の構成
- 第1部 : Web概念
- 第2部 : URI
- 第3部 : HTTP
- 第4部 : ハイパーメディアフォーマット
- 第5部 : Web サービスの設計
※今回は、第1部 : Web概念についてまとめております。
第1部 Web概念
第1部では、Webの概要、歴史などを振り返りながら現在のWebを支えているアーキテクチャについて触れ、解説がされております。
学んだこと
Webがどういう仕組みで動いているのか、今あたり前に使っているWebがどのように普及したのかを知ることができ、Web概念について理解が進んだ。
また、以前参加したレビュー会では、RESTの概念が出てきたがその時は???だったのが、書籍を通じて概要やRESTとは何かを理解することができた。
早速、エンジニアと会話する際に活用していきたい。
現在のPCで最も重要なソフトとは
- 10年前であれば、基幹業務のソフトウェアであったが、現在は変化し、Webを閲覧するソフトウェア、ブラウザが最も重要なソフトとなった
Webの3つの用途
Webを支える技術
HTTP / URI / HTMLはシンプルな技術さによって、Webはいろいろな応用な対応が可能になっている。
- HTTP
- 役割 : プロトコルを使って、それらの情報を取得、発注などを行う
- シンプルさの由縁 : 定義しているメソッドは8つだけ
- URI
- 役割 : URIを使うことで、動画サイト、ショッピングサイトの商品など、世界中の情報を指し示すことができる
- シンプルさの由縁 : 紙の広告に記載できるくらい短い文字列
- HTML
- 役割 : 情報を表現する文章フォーマット
- シンプルさの由縁 : XMLをもとにした汎用の文章フォーマット
また、情報システムとして見ると、2つの側面を持っている。
- ハイパーメディア
- ハイパーリンクで結びつけて構成したシステム(情報同士を結びつける機構のこと)
- ユーザが自分でリンクを選択して情報を取得する
- ユーザはある情報から別の情報へと自由に参照が可能になる
- ユーザにとってわかりやすく、且つ実装が簡単なリンクだからこそ、Webはここまで普及した
RESTの誕生
- 当時大学院生のRoy Filedingが、一つのアーキテクチャスタイルとしてまとめた論文を「REST」と名付けことがきっかけ。その後Amazon Webサービスが誕生したことを弾みに普及し、REST形式(ある定められたURLをHTTPでGETする形式)と呼ばれるようになった。
Webのアーキテクチャスタイル
スタイルを組み合わせてRESTを構成する
RESTとはつまり、下記6つを組み合わせたアーキテクチャスタイルを指す。
ただし、重要なことは、6つ全てを組み合わせてアーキテクチャスタイルを完成させることではなく、理想概念を念頭に置きながら、実際に動作して価値を提供できるシステムを作ることです。
※無理矢理RESTを採用する必要、6つ全てを組み合わせる必要はなく、システムにより適したアーキテクチャを思考することが重要です。
- クライアント/サーバ
- ステートレスサーバ
- サーバ側でアプリケーション状態を持たない
- 利点は、サーバ側の実装を簡略化できる
- キャッシュ
- クライアントとサーバの通信回数と量を減らす(一度取得したリソースをクライアント側で使い回す方式)
- 利点は、ネットワークス帯域の利用や処理時間を縮小し、より効率的に処理ができる
- 統一インターフェース
- 階層化システム
- システムを階層に分離する
- 利点は、システム全体が階層化しやすい
- コードオンデマンド
- プログラムコードをクライアントにダウンロードして実行する
- 利点は、クライアントを後から拡張できること。ただ、プロトコルの可視性の低下が欠点となる
RESTの2つの側面
- RESTとハイパーメディア
- Web上のリソース同士が持つリンクをたどることを、RESTでは「アプリケーション状態エンジンとしてのハイパーメディア」と呼ぶ
- RESTの基幹をなす思想とは、リソースをリンクで接続することで1つのアプリケーションを構成する考え方
- RESTと分散システム
- リソース活用できるHTTPメソッドは常に固定であり、HTTPを実装したクライアントであれば同じように接続が可能