気ままに気ままのエンジニアブログ

定期的に得た知見を気ままに発信中

エンジニアデビュー3ヶ月後に読むべき書籍 "Webを支える技術" 第一部の要点をまとめてみた

こんにちは。

自粛要請からリモートワークに変わり、座椅子のせいか腰が砕けそうです。
リラックスを取るなら座椅子、健康を取るなら椅子みたいです。究極の選択や。。

f:id:hachimaki37:20200425091843j:plain
腰以外にも実は上半身全般が痛い。。鍼灸院いこ。
選択の結果は、、ストレッチした方が良い。
どうもハチマキです。

はじめに

入社早々に上長から教えてもらった
エンジニアデビュー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 上長エンジニア

書籍のテーマと目的

  • 目的
    1. HTTPとURI、そして各種ハイパーメディアフォーマットの仕様の解説(仕様を知ることが、良いWebサービス設計への第一歩に繋がるため)
    2. 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サイト
    • 例 : AmazonGoogle検索サイトなど
    • 特徴 : Webサイトの裏がどのような構成になっているかをクライアントが意識しないで済む
  • プログラム用APIとしてのWeb
    • 例 : XML , JSONなど
    • 特徴 : プログラム向けのインターフェイスであり、プログラムで解釈・処理しやすいものを用いる
Webを支える技術

HTTP / URI / HTMLはシンプルな技術さによって、Webはいろいろな応用な対応が可能になっている。

  • HTTP
    • 役割 : プロトコルを使って、それらの情報を取得、発注などを行う
    • シンプルさの由縁 : 定義しているメソッドは8つだけ
  • URI
    • 役割 : URIを使うことで、動画サイト、ショッピングサイトの商品など、世界中の情報を指し示すことができる
    • シンプルさの由縁 : 紙の広告に記載できるくらい短い文字列
  • HTML
    • 役割 : 情報を表現する文章フォーマット
    • シンプルさの由縁 : XMLをもとにした汎用の文章フォーマット

また、情報システムとして見ると、2つの側面を持っている。

  • ハイパーメディア
    • ハイパーリンクで結びつけて構成したシステム(情報同士を結びつける機構のこと)
    • ユーザが自分でリンクを選択して情報を取得する
    • ユーザはある情報から別の情報へと自由に参照が可能になる
    • ユーザにとってわかりやすく、且つ実装が簡単なリンクだからこそ、Webはここまで普及した
  • 分散システム
    • 複数のコンピュータを組み合わせて処理を分散させる形式(複数のコンピュータやプログラムをネットワーク上に分散して配置し、効率的に処理できるようにしたシステム)
    • 複数のコンピュータ上に保存するデータを一元的に扱ったり、1台のコンピュータでは扱いきれない膨大な情報を操作できたりする
    • Web = 分散システム
    • クライアントとサーバの間のインターフェイスをHTTPというシンプルなプロトコルで固定したことで、様々なブラウザから1つのWebサービスへのアクセスが実現できている
RESTの誕生
  • 当時大学院生のRoy Filedingが、一つのアーキテクチャスタイルとしてまとめた論文を「REST」と名付けことがきっかけ。その後Amazon Webサービスが誕生したことを弾みに普及し、REST形式(ある定められたURLをHTTPでGETする形式)と呼ばれるようになった。
Webのアーキテクチャスタイル
  • システムのアーキテクチャを決定する際の羅針盤となるのが、アーキテクチャスタイルである
  • RESTとは、Webアーキテクチャスタイル(設計思想)であり、特にネットワークシステムのアーキテクチャスタイルで、クライアント/サーバから派生したアーキテクチャスタイルである
  • RESTにおける重要な概念の一つにリソース(URI)というものがあり、リソースがあるからWeb上の情報アクセスが可能になる
  • リソースとは、「Web上に存在する、名前を持ったありとあらゆる情報」を指す
スタイルを組み合わせてRESTを構成する

RESTとはつまり、下記6つを組み合わせたアーキテクチャスタイルを指す。
ただし、重要なことは、6つ全てを組み合わせてアーキテクチャスタイルを完成させることではなく、理想概念を念頭に置きながら、実際に動作して価値を提供できるシステムを作ることです。

※無理矢理RESTを採用する必要、6つ全てを組み合わせる必要はなく、システムにより適したアーキテクチャを思考することが重要です。

  • クライアント/サーバ
    • ユーザインターフェイスと処理を分離する
    • 利点は、クライアントはサーバにリクエストを送り、サーバはそれに対してレスポンスを返す。よって、クライアントとサーバに分離して処理することが可能(マルチプラットホームを実現)
  • ステートレスサーバ
    • サーバ側でアプリケーション状態を持たない
    • 利点は、サーバ側の実装を簡略化できる
  • キャッシュ
    • クライアントとサーバの通信回数と量を減らす(一度取得したリソースをクライアント側で使い回す方式)
    • 利点は、ネットワークス帯域の利用や処理時間を縮小し、より効率的に処理ができる
  • 階層化システム
    • システムを階層に分離する
    • 利点は、システム全体が階層化しやすい
  • コードオンデマンド
    • プログラムコードをクライアントにダウンロードして実行する
    • 利点は、クライアントを後から拡張できること。ただ、プロトコルの可視性の低下が欠点となる
RESTの2つの側面
  • RESTとハイパーメディア
    • Web上のリソース同士が持つリンクをたどることを、RESTでは「アプリケーション状態エンジンとしてのハイパーメディア」と呼ぶ
    • RESTの基幹をなす思想とは、リソースをリンクで接続することで1つのアプリケーションを構成する考え方
  • RESTと分散システム
    • リソース活用できるHTTPメソッドは常に固定であり、HTTPを実装したクライアントであれば同じように接続が可能
RESTの意義
  • RESTは、Web全体のアーキテクチャスタイルを指す
  • WebサービスやWeb APIは、Webを構成する一部である
  • RESTの制約に従っていてRESTらしくなる(RESTful)と、Webは全体としてより良くなる

まとめ

  • エンジニアデビューから3ヶ月を経過した方は、ぜひ読んでみてください
  • WebサービスをいかにWebらしく設計するのかを学べます
  • RESTの制約に従っていてRESTらしくなる(RESTful)と、Webは全体としてより良くなる
  • RESTで重要なことは、6つ全ての要素を組み合わせてアーキテクチャスタイルを完成させることではなく、理想概念を念頭に置きながら、実際に動作して価値を提供できるシステムを作ること

参考資料

『Webを支える技術』まとめ① - Qiita

                                            • -

次回は、第2部 URIについてまとめて行きたいと思います。
以上、ハチマキでした。