-
欧州原子核研究機構(CERN)で生まれた仕組み。 科学者同士で論文を広く共有する仕組みが必要だった。 www誕生以前は、メールにテキストファイルを載せるなどしてやりとりしていた。 この場合、研究成果(論文)はメールアドレスを知っている人に対してしか送れないため、多くの人に届けることができなかった。
このような課題に対して、ティム・バーナーズ・リー博士がWorld Wide Web(WWW)を考案 Webは本来クモの巣を意味するが、そのクモの巣が世界中に張り巡らされている概念。
-
HTML(Hyper Text Markup Language)
-
Hyper Link 1. 外部リンクなどの参照をコンピュータにも理解できる形で書くもの 2. wwwの名前の由来にもつながっている
-
Webブラウザ
-
当初は文字しか表現できなかった
-
MosaicというWebブラウザが登場 1. 文字だけでなく画像の表示なども表示できる
-
PCやOSの価格帯が安価になったため一般利用者にも利用されるようになる
-
Windows 95
-
光ファイバー回線
-
IEやFirefoxなどのWebブラウザが登場
-
動的サイトの登場
-
静的サイトのみの運用で手間がかかり、限界が生じていた
-
動的サイトとは、プログラムが自動でコンテンツを生成してくれるサイト 1. CGI(Common Gateway Interface) 2. プログラミング言語を使ってWebアプリケーションをつくるようになった(Perl, Java)
-
フレームワークの登場
-
大規模なWebアプリケーションを作ることが多くなった
-
プログラム(ソースコード)の肥大化と複雑化 1. 同じ機能を作るときに、コードを書く人・企業によって違った内容になる
-
フレームワークによるコードの再利用(車輪の再発明を防ぐ) 1. オブジェクト指向プログラミングによる再利用
- ユーザ
- クライアント端末を扱う人
- クライアント
- サーバのサービスを利用する端末・プログラム
- サーバに対してリクエストしてレスポンスを受け取る
- サーバ(ホスト)
- クライアントからのリクエストに応じて、サービスを提供する
- クライアントに対してレスポンスを返す(ex: HTTP Response)
ex: HTTP通信
- ユーザがWebブラウザの検索ボックスに対して、https://www.example.com と入力してEnterキーを押す (もしくは、ハイパーリンクのテキストをクリックする)
- Webブラウザ(クライアント)が、www.example.com のサーバに対してリソースを要求する (= リクエストを投げる)
- Webブラウザからのリソース要求を受け取ったサーバが、リソースを生成してリソースをWebブラウザに返す (= レスポンスを返す)
- HTTPリクエスト
- 1つのファイルごとに1回行っている(以下の場合、3回)
- HTMLファイル * 1
- CSSファイル * 1
- JavaScriptファイル * 1
- HTTPレスポンス
-
GET
- リソースを取得するために使用する
- クエリストリング(?以降の文字)を用いることができる
- https://www.example.com?user=xxx&date=yyyymmdd
- セキュリティを考慮すると以下はナンセンス https://www.example.com?email=xxx.yyy.zzz@example.com&pass=xxx
- リクエストできるデータ量に制限がある Ref FeeeeeLog 『Googleの検索ワードの上限はいくつか?』 (https://feel-log.net/get-information/google-search/query-words-upper-limit/)
-
POST
- HTTPリクエストのボディに追加して情報を付加することができる
- 使用するケース
- 他の人に見られたらいけない情報(E-mail, password ...etc)
- 容量が多い情報、長い文章などのデータ
- クライアントのリクエストに対して、サーバがHTTP Response Headerに付加する内容
- ユーザがResponseが成功したか、失敗したか、なぜ失敗したのかなど詳細な情報を得ることができる
- 情報レスポンス (100 - 199)
- 成功レスポンス (200 - 299)
- リダイレクト (300 - 399)
- クライアントエラー (400 - 499)
- サーバエラー (500 - 599)
- MDN Web docs(https://developer.mozilla.org/ja/docs/Web/HTTP/Status)
https://www.exaple.com/index.html
- https://
- スキーム
1. プロトコル名
- HTTP
- FTP
- ...etc
- www.exaple.com
- ホスト名
- /index.html
- パス名(ホスト内のリソースを表す)
- プレゼンテーション層(≒ Webサーバ)
- nginx
- Apache Web Server
- Oracle WebLogic
- ...etc
- アプリケーション層(≒APサーバ)
- 各プログラミング言語の実装
- ソフトウェアアーキテクチャがMVCモデルの場合、、、
- Model
- View
- Controller
- データ層(≒ DBサーバ, ストレージ)
- MySQL
- MongoDB
※ 1つの物理サーバ上に、各層をデプロイすることも可能
- データを管理するためのもの
- RDB(Rerational Databes)
- データをテーブルという単位で管理し、それぞれに関係性を持たせること
- レコード(各データ)とカラム(属性)が存在するデータ構造
- NoSQL
- KeyValueStore型(KVS)
- ex) name: "John"
- ドキュメント
- ex) JSON
- グラフ
- インメモリ
- コンピュータ上のメモリ上にデータを保管する(= アクセス速度が速いため、レスポンスが早い)
- Redis