今更だけどこちらを読んだ。
Webそのものの仕組みもだけど、その背景を全く知らなかったのでとても勉強になった。
気になった部分だけ簡単に箇条書き。
#インターネットについて
・インターネットとは
→世界中のコンピュータを相互に接続し、通信できるようにしたネットワーク網
→仕組みは電話線と同じ。網羅された範囲内で、相互がやり取りを行っている。
・wwwの黎明期
cernにて研究結果を共有するために、WWWを開発。
ハイパーリンクを用いてHTMLで記載された研究結果を瞬時に表示させることが可能
このネットワーク上でリンクされたハイパーリンクのつながり→WWW(Web)
・文字と画像を表示できるように
cernで開発された当時はまだテキストのみでHTMLが構成されていた。
MosaicというWebブラウザの登場によって、画像を表示できるように。
→Mosaicは無料で誰でも使用できるように公開。研究者以外の様々な人がインターネット上に情報を公開するように。
→→1990年代後半から2000代前半にかけて、パーソナルコンピュータの低価格化、ADSLや光ファイバーの普及により
インターネットが利用が普及。
→→MosaicをベースにしてIEやFireFoxなどのWebブラウザが登場した。
・Webサーバとクライアント
クライアント:サーバに対して要求(リクエスト)を行うソフトウェア。
→Webブラウザ
サーバ:クライアントからの要求に対して、処理を行い応答(レスポンス)を返却するソフトウェア。
→ApacheやIIS
・クライアントとサーバに分ける理由
不特定多数の人に情報を公開するには、そのコンテンツを一か所にまとめておいた方が管理が楽。
しかし一か所に集まってるコンテンツを不特定多数の人が、直接操作するのは現実的ではない。
そのため、コンテンツの利用は利用する人のPCをクライアントとして使い、サーバとインターネットで接続をすることでWWWを実現するように。
・URL
WWWは不特定多数の人が様々なコンテンツをWebサーバ上で公開する。
そのためインターネット上で一意な名前をつけないと、Webクライアントがデータを取得できない。
URL:インターネット上のコンテンツを一意に指定するための仕組み。
・HTTP
インターネット上には様々なコンピュータが繋がっている。
WebクライアントとWebサーバにはどのよように情報をやりとりするか取り決めが必要。→通信プロトコル
当時すでにFTP(ファイル転送)やSMTP(メール転送)などのプロトコルは存在している。
HTMLの転送に適した、プロトコルが考案された。→HTTP
現在普及しているHTTPはH「HTTP/1.1」
#動的コンテンツの生成
・CGI
企業や一般の人にもWebが浸透してくると、なるべく多くの人に見てもらいたいため、コンテンツを更新したい人が増えてきた。
全てのコンテンツを人間が手作業で更新を行うのはひどく時間がかかる。しかしコンピュータはコンテンツを「創る」ことはできない。
そのためプログラムを使用して、リクエストを元に動的に変化を加えることができるコンテンツが生まれた。「動的コンテンツ」
あらかじめ用意されたコンテンツは、「静的コンテンツ」
動的コンテンツを作るには、Webサーバとプログラムの連携が必要。
→CGIがクライアントから送信されたリクエストを、プログラムへ渡す。プログラムが生成した動的コンテンツをCGIを経由して、Webサーバへ返却する。
→→つまりCGIとはWebサーバとプログラムの間でリクエストや、レスポンスをやりとりするための規約。
・サーブレット
CGIの問題点:CGIはWebサーバとコンテンツを生成するプログラムを、別プロセスで動作させており
リクエストが来てからプロセス起動が行われるため、アクセスが集中するとプログラム起動処理が多くなり処理が追いつかなくなっていった。
Perlの問題点:大規模アプリケーション開発に向いていない。
そのためJavaとサーブレットが開発された。
Java:大規模開発に向いたオブジェクト指向の機能をフルサポートした言語。
JavaVM上で動作するため、JavaVMが動くコンピュータならOSを問わずJavaを実行可能。
サーブレット:Javaで作られた、動的コンテンツを生成するためのプログラムのこと。
サーブレットの仕組みはCGIと基本的に同じ。だがCGIと違いWebサーバとコンテンツを生成するプログラムが、同じプロセスで実行する。
そのためリクエストの度、新たなプロセスを立ち上げる必要がなく、高速に動作する。
・JSP
サーブレットの問題点:同じファイルにデザイン部分と処理部分があるため、Webデザインとプログラミングの分担ができない。
またサーブレットではJavaの出力命令を使って、HTMLを出力する仕組み。そのためHTMlが想像しにくく、HTMLを修正するときに修正箇所がわかりにくい。
上記を改善するために、JSPが開発された。
HTMLで記述されたファイルに、Javaコードを埋め込むような形になった。→JSP
・フレームワーク
元々の想定よりも大規模なWebアプリケーションが出てきた。Amazonなど。
こういった大規模なアプリケーションをゼロからサーブレットや、JSPで作っていると莫大な量のコーディングを行わなくてはならない。
またPJも大規模化し、人が多くかかわると実装者が勝手に独自クラスを作ってしまったり、デザインとロジックの繫ぎ合わせで不整合が起きたりした。
そのためどのアプリケーションでも共通的な部分に関しては、「ライブラリ」として部品化を行い再利用可能にした。
このような再利用可能な部品を集めて、開発の土台にしたのが「フレームワーク」