初学者が押さえておきたいWebの基本用語と概念

## はじめに

**『Webの用語が多すぎて何から覚えれば良いのかわからない』**
と思ったことはありませんか？？僕はまさしくこうなりました。そこでまずはこれだけは覚えておきたいという用語や概念について自分用の備忘録としてまとめてみました。基本的なものだけを紹介しているので、より詳しく知りたいものについては適宜ご自身で調べながら読み進めて頂けると幸いです。

また、こちらはプログラミング初学者がまとめた記事となりますので間違っていることがあるかもしれません。その際はご指摘等頂けると幸いです。宜しくお願いします。

## 本記事の内容
Webでよく使われる用語の解説。

## 対象者

HTML,CSS,Ruby,PHP等で基礎文法を学んだことはあるが、Webの用語や概念については勉強したことがない初学者の方。

## 構成

- [Webの歴史](#webの歴史)
- [Webの根幹を支える技術](#webの根幹を支える技術)
- [サーバークライアントモデル](#サーバークライアントモデル)
- [URI](#uri)
- [HTTP](#httpについて)
- [Webアプリの構成要素](#webアプリケーションの構成要素)

## Webの歴史

Webという言葉が広く使われるようになりましたが、Webとはそもそも何なのでしょうか。簡単な言葉で表すと、**インターネットを利用して「文書や画像等を公開・閲覧できる仕組みのこと」**です。Webが使われるている用語としてはWebサイトやWebAPIなどが有名です。このWebの起源は実はインターネットの誕生にまでさかのぼります。

ここで用語を整理しておくと、

- インターネットとは世界中のコンピューターを相互接続したネットワーク網。Webとインターネットは別物。ネットワークとはネットワーク網のこと。

- Webとはティムバーナーズリーがwwwの仕組みを提案・開発。インターネットを利用して研究成果を簡単に閲覧できるように作られたもの。

Webが誕生する以前はインターネットの利用者はごく少数でした。利用するのに高価であり、用途が地味で不便だったためです。利用用途としては、研究者間で研究成果を共有するのに電子メールやファイル転送を使うという限られたものでした。この時の課題として研究成果をインターネットで共有するのが不便ということがありました。この課題を解決するためにwebが誕生し、インターネットが広く普及していくことになります。

ただ、Webの初期段階では研究者が自分の研究成果の共有として公開するためだけのものであり、一般ユーザーに広く使われることはありませんでした。ブラウザが質素で見やすいものではなかったからです。そこで無料で利用できるMosaicが登場し、一般の人の目を引くようになります。その後パーソナルコンピューターの低価格やネット回線の普及、スマホの普及を経てWebは爆発的に普及していきます。


このように技術というのは当時何らかの課題があり、それを解決するために生まれてきたものなので、当時どんな課題があったのかその背景を抑えておくことで、その技術がなぜそのような仕組みになっているのかがわかります。

## Webの根幹を支える技術

ではWebを支えている技術は何なのでしょうか。それはHTTP、URI、HTMLの三つです。
図に表してみました。
![スクリーンショット 2021-09-07 22.52.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1838981/80f2c2c3-5fd8-c143-1aa1-569416a17235.png)

## サーバークライアントモデル
Webの構造はサーバークライアントモデルと言われます。これはクライアントがリクエストを送り、サーバーがレスポンスを返す構造になっていることからそう言われています。

1. どのデータ？→URI
2. データは何？→HTML
3. どうやってデータのやり取りをする？→HTTP

クライアントがデータを要求します。それに返すのがサーバーという構造です。クライアントサーバーモデルを採用することで不特定多数の人がWebを閲覧できるようになりました。

Webの根幹を支えているのがHTTP,URI,HTMLの３つです。

- HTTP：情報を取得したり発信したりする際の約束事
- URI：インターネット上の情報の場所
- HTML：情報を表現するための共通の書式

## URI

URIはインターネット上のデータを一意に特定するための仕組みです。


URIはスキーム、ホスト名、パス名から構成されています。

- スキーム：データを取得するための方法
- ホスト名：データが存在するコンピュータの名前
- パス名：ホスト名で指定されたコンピュータ上のデータの場所

![スクリーンショット 2021-09-14 17.00.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1838981/72eafeb5-165a-1d31-679b-3e89e8190b64.png)

URIが存在する前は書き言葉からデータの場所を特定しないといけませんでした。しかしその状況を変えるために、URIを作ることによってプログラムで簡単にデータを扱えるようにしたのです。

## HTTPについて

HTTPはクライアントとサーバーが通信するときの通信方法をとり決めたものです。HTTPリクエストとHTTPレスポンスでやりとりされます。原始的な例でいえばモールス信号がHTTPの例として一般的に挙げられます。難しい言葉で表すと、やりとりのインターフェースと表現します。
また、この際の取り決めのことをプロトコルと呼びます。

## IPアドレスとドメイン名

IPアドレスとはネットワーク上の機器を識別するためのインターネット上の住所です。しかしIPアドレス自体は数字の羅列でとてもわかりづらいものです。そこでそれを人間が理解できるようにわかりやすくしたものをドメイン名と呼びます。また、IPアドレスとドメイン名の対応表をDNSと呼びます。


## Webアプリケーションの構成要素

初期のWebアプリケーションはWebサーバーだけの構成でした。そこにwebアプリケーションサーバーを追加することにより動的コンテンツを配信できるようになり、表示内容も動的に変更できるようになりました。しかし、そのままでは大量のデータを取り扱うことができなかったため、データベースが登場し、大量のデータを効率的に検索、安全に保管できるようになりました。
ただ、データベースだけでは通信量が多くなってしまうためデータベースサーバーを用意し、分離することでデータ数やユーザー数の増加に対応できるようになりました。

その後アプリケーションサーバーを分離するようになり、Webサーバーを受け口として静的コンテンツのみをかえす場合はwebサーバーにまかせ、動的コンテンツが必要な場合はAPサーバーを利用するという仕組みが出来上がりました。Webサーバー、webアプリケーションサーバー、データベースサーバーに分かれた構成を三層構成と呼びます。
![スクリーンショット 2021-09-16 12.58.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1838981/d72421fb-6a29-0014-b92f-47366961e588.png)



## おわりに
最後まで読んで頂き誠にありがとうございました。
この記事が今後の皆様の学習のお役にたてれば幸いです。

### 抑えておきたい用語まとめ
- HTTP
    - データのやり取りの取り決め。
- HTML
    - 情報を表現するための共通の書式。
- URI 
    - インターネット上のデータを一意に特定するための仕組み。
- スキーム
    - データを取得するための方法。
- ホスト名
    - データが存在するコンピュータの名前。
- パス名
    - ホスト名で指定されたコンピュータ上のデータの場所。
- IPアドレス
    - 通信の相手先を識別するための番号。
- ドメイン名
    - IPアドレスを人間が理解できるようにわかりやすくしたもの。
- DNS
    - IPアドレスとドメイン名の対応表。