/WWW_History

The fundamentals of www history.

WWWの基礎

Webの誕生

  1. 欧州原子核研究機構(CERN)で生まれた仕組み。 科学者同士で論文を広く共有する仕組みが必要だった。 www誕生以前は、メールにテキストファイルを載せるなどしてやりとりしていた。 この場合、研究成果(論文)はメールアドレスを知っている人に対してしか送れないため、多くの人に届けることができなかった。

    このような課題に対して、ティム・バーナーズ・リー博士がWorld Wide Web(WWW)を考案 Webは本来クモの巣を意味するが、そのクモの巣が世界中に張り巡らされている概念。

  2. HTML(Hyper Text Markup Language)

  3. Hyper Link 1. 外部リンクなどの参照をコンピュータにも理解できる形で書くもの 2. wwwの名前の由来にもつながっている

  4. Webブラウザ

  5. 当初は文字しか表現できなかった

  6. MosaicというWebブラウザが登場 1. 文字だけでなく画像の表示なども表示できる

  7. PCやOSの価格帯が安価になったため一般利用者にも利用されるようになる

  8. Windows 95

  9. 光ファイバー回線

  10. IEやFirefoxなどのWebブラウザが登場

  11. 動的サイトの登場

  12. 静的サイトのみの運用で手間がかかり、限界が生じていた

  13. 動的サイトとは、プログラムが自動でコンテンツを生成してくれるサイト 1. CGI(Common Gateway Interface) 2. プログラミング言語を使ってWebアプリケーションをつくるようになった(Perl, Java)

  14. フレームワークの登場

  15. 大規模なWebアプリケーションを作ることが多くなった

  16. プログラム(ソースコード)の肥大化と複雑化 1. 同じ機能を作るときに、コードを書く人・企業によって違った内容になる

  17. フレームワークによるコードの再利用(車輪の再発明を防ぐ) 1. オブジェクト指向プログラミングによる再利用

クライアント・サーバ

キャラクター

  1. ユーザ
  2. クライアント端末を扱う人
  3. クライアント
  4. サーバのサービスを利用する端末・プログラム
  5. サーバに対してリクエストしてレスポンスを受け取る
  6. サーバ(ホスト)
  7. クライアントからのリクエストに応じて、サービスを提供する
  8. クライアントに対してレスポンスを返す(ex: HTTP Response)

クライアント・サーバの通信について

ex: HTTP通信

  1. ユーザがWebブラウザの検索ボックスに対して、https://www.example.com と入力してEnterキーを押す (もしくは、ハイパーリンクのテキストをクリックする)
  2. Webブラウザ(クライアント)が、www.example.com のサーバに対してリソースを要求する (= リクエストを投げる)
  3. Webブラウザからのリソース要求を受け取ったサーバが、リソースを生成してリソースをWebブラウザに返す (= レスポンスを返す)

HTTP

  1. HTTPリクエスト
  2. 1つのファイルごとに1回行っている(以下の場合、3回)
    1. HTMLファイル * 1
    2. CSSファイル * 1
    3. JavaScriptファイル * 1
  3. HTTPレスポンス

HTTPリクエストメソッド

https://www.example.com

HTTPレスポンスステータスコード

  • クライアントのリクエストに対して、サーバがHTTP Response Headerに付加する内容
  • ユーザがResponseが成功したか、失敗したか、なぜ失敗したのかなど詳細な情報を得ることができる
    1. 情報レスポンス (100 - 199)
    2. 成功レスポンス (200 - 299)
    3. リダイレクト (300 - 399)
    4. クライアントエラー (400 - 499)
    5. サーバエラー (500 - 599)

Ref

URL(Unified Resource Locator)

https://www.exaple.com/index.html

  1. https://
  2. スキーム 1. プロトコル名
    1. HTTP
    2. FTP
    3. ...etc
  3. www.exaple.com
  4. ホスト名
  5. /index.html
  6. パス名(ホスト内のリソースを表す)

サーバの構成

  1. プレゼンテーション層(≒ Webサーバ)
  • nginx
  • Apache Web Server
  • Oracle WebLogic
  • ...etc
  1. アプリケーション層(≒APサーバ)
  • 各プログラミング言語の実装
  • ソフトウェアアーキテクチャがMVCモデルの場合、、、
    1. Model
    2. View
    3. Controller
  1. データ層(≒ DBサーバ, ストレージ)
  • MySQL
  • MongoDB

※ 1つの物理サーバ上に、各層をデプロイすることも可能

データベース

  • データを管理するためのもの
  1. RDB(Rerational Databes)
  • データをテーブルという単位で管理し、それぞれに関係性を持たせること
  • レコード(各データ)とカラム(属性)が存在するデータ構造
  1. NoSQL
  • KeyValueStore型(KVS)
    • ex) name: "John"
  • ドキュメント
    • ex) JSON
  • グラフ
  • インメモリ
    • コンピュータ上のメモリ上にデータを保管する(= アクセス速度が速いため、レスポンスが早い)
    • Redis