Open2

Webを支える技術の勉強ログ

ピン留めされたアイテム

目的

  • Webの構造的な理解

期間

6月下旬~

内容

本の章に沿って進める

備考

はてなブログに投稿していたものを移行

日付

  • 6/28
  • 開発日記~5日目~

概要

  • Webを支える技術
    • 80分程度
    • 第1章と第2章の2.4まで

内容

第1章:Webとは何か?

1.1 全ての基盤であるWeb

  • ブラウザを介してWebサーバーとやりとりすることで、様々な用途にコンピュータを使うことができる
    • 例:SNS、雑貨品の購入、地図の表示

1.2 様々なWebの用途

  • Webサイト
    • 例:ポータルサイト(Yahoo!)、ショッピングサイト(Amazon)、検索サイト(Google)、など
    • 特徴
      • Webサイトの裏の構成を意識せずに使うことができる
      • 多くのソフトウェアやハードウェアから利用することができる
  • UIとしてのWeb
    • 人間向けのインターフェース
    • 例1:各種デバイスの設定画面(パソコンのソフトウェア上で操作する場合、リモコンなどのハードウェアを必要としない)
    • 例2:HTMLによるヘルプの記述(WindowsのHTMLヘルプ)
    • HTMLは記述しやすく、多様な環境で利用できるため
  • プログラム用APIとしてのWeb
    • プログラム向けのインターフェース
    • 例:XMLやJSONなど

1.3 Webを支える技術

  • HTTP、URI、HTML
    • HTTP:HTMLなどの情報を取得するためのプロトコル(コンピュータ同士が通信する際の手順や規格のこと)
    • URI:情報の位置を指し示す
    • HTML:Web上での情報を示す文書のフォーマット
  • ハイパーメディアシステム
    • テキストや画像や音声などの様々な情報をハイパーリンクにより結びつけて構成したシステム、ハイパーリンクを元にアクセスが可能
      • ハイパーリンク:情報同士を結びつける機構のこと
      • ↔︎書籍や映画:線形的なアクセスが必要
  • 分散システム
    • 複数のコンピュータを組み合わせて処理を分散するシステム、特にWebはダントツで大きな分散システムと言える
    • 大極的に考えた時、Webは世界中のサーバーに世界中のブラウザからアクセスできる分散システム

1.4 本書の構成

  • 第1章〜第3章:技術的なバックグラウンドとアーキテクチャについて
  • 第4章〜第5章:URI
  • 第6章〜第9章:HTTP
  • 第10章~第14章:ハイパーメディアフォーマット
    • 興味のあるフォーマットのみ、とりあえず
  • 第15章〜第17章:WebサービスやWeb APIの設計

第2章:Webの歴史

2.1 Web以前のインターネット

  • ARPANET
    • 1969年に開発
    • インターネットの始祖
    • それ以後も様々なインターネットが開発

2.2 Web以前のハイパーメディア

  • Memex
    • ハイパーメディアの起源
    • 1945年に論文で構想として投稿
    • 電気的に接続した本やフィルムを相互にリンクし、リンクを辿って次々に表示する
  • Xanadu
    • "ハイパーメディア"という言葉の誕生
    • ハイパーテキスト:文字情報中心の文書を相互にリンクさせた概念
    • ハイパーメディア:ハイパーテキストという概念を拡張、様々なメディア同士で相互にリンクさせた概念
    • 現在のWebよりも高機能であったが、複雑さが故に頓挫
  • HyperCard
    • カードと呼ばれる文書を単位として相互にリンクを張る
    • HyperTalkと呼ばれるスクリプト言語によるプログラムを実行できる
    • スタンドアローン(外部に依存せずに単独で機能する)なWebサービス
  • Web以前のハイパーメディアの問題点
    • リンクの実装が複雑であった
    • インターネットを利用していなかった

2.3 Web以前の分散システム

  • 集中システムと分散システム
    • 初期:端末からホストコンピュータにアクセスし、ホストコンピュータで集中処理を行う(集中システム)
    • 発展:コンピュータの小型化+性能の向上
    • Now:複数のコンピュータを組み合わせて処理を分散させることで、全体の処理性能の向上を図る
  • RPC(Remote Procedure Call)
    • リモートサーバで実行しているプログラムをクライアント側から呼び出すための技術
    • 例:SunRPC、DCE、など
  • CORBA、DCOM
    • 分散オブジェクト技術
    • リモート側にあるオブジェクトをクライアント側で使えるようにするための技術
  • Web以前の分散システムの問題点
    • 性能劣化の問題:ネットワーク越しでの関数呼び出しのオーバーヘッドが大きい
    • インターフェースバージョンアップ時の互換性の問題:古いクライアントに対して下位互換性を保てない
    • 負荷分散の問題:サーバー上にクライアントのアプリケーション状態を保存するため、負荷を多数のサーバー間で分散するのが難しい

2.4 Webの誕生

  • 誕生から普及
    • 背景:ハイパーメディア構想や分散システムの誕生
    • 1990年:ハイパーメディアを用いたインターネットベースの分散情報管理システムをTim Berners-Leeが提案
    • 1993年:Mosaicの開発(本文中に文字だけでなく画像を混在させることのできるブラウザ、FirefoxやIEの源流)
  • ハイパーメディアとしてのWeb
    • インターネットを用いたハイパーメディアとして設計
      • 不特定多数の情報をリンクさせ合うことができる
      • システムを大規模化しやすいが、情報の集中的な管理は難しい(リンクが切れるなどの問題点)
    • リンクは単方向のリンクとして単純に実装
  • 分散システムとしてのWeb
    • 閉じたネットワーク環境でサービスを提供するにはRPCで十分だが、不特定多数を相手にするには…?
    • クライアントとサーバの間のインターフェースをHTTPというシンプルなプロトコルに固定したことで、様々なデバイスやブラウザからアクセス可能に
作成者以外のコメントは許可されていません