Webアプリケーションとは？ざっくり解説

<h1>この記事の概要</h1>
Webアプリケーションとは何かざっくり解説
Webアプリケーションの土台となる技術をざっくり解説

<h1>目次</h1>
Webアプリケーションとは何か
∟ そもそもアプリケーションとは？
∟ アプリケーションの種類から見たWebアプリケーションの特徴

Webアプリケーションの土台となる技術
∟ クライアントサーバシステム
∟ URL
∟ HTTP

<h2>Webアプリケーションとは何か</h2>

<h3>そもそも「アプリケーション」とは？</h3>
「利用者の目的に応じて使うソフトウェア」のことをアプリケーションと呼びます。
正式には、アプリケーション・ソフトウェアapplication softwareであり、略称として「アプリケーション」「アプリ」という言葉が使われます。
<h3>ネイティブアプリケーションとの比較から見たWebアプリケーションの特徴</h3>
「アプリケーション」と一口に言っても、種類があります。

◉Webアプリケーション
「インターネットを通じて情報をやり取りするアプリケーションのこと」
例えばGoogle Chrome, Safariなどのブラウザ上で閲覧するTwitter。
処理はインターネット上のサーバーで行われ、インストールする必要はなありません。
画面はHTMLで作成、ブラウザで表示されます。端末の中にはデータがないため、インターネットでもらう必要があります。

◉ネイティブアプリケーション
「端末（スマホ、タブレットなど）にインストールして端末上で動作するアプリ」
例えば、Appストアなどからインストールした Twitterアプリ。
端末へのインストールが必要であり、操作も端末から行うことができます。
データのやり取りを必要としないものであれば、オフラインでも使用可能。

|  | Webアプリケーション | ネイティブアプリケーション |
| :---: | :---: | :---: |
| 処理 | サーバ上 | 端末上（データのやり取りがない場合） |
| 表示 | ブラウザ上 | 端末上 |
| インストール | 必要なし | 必要あり |
| オフライン | 使えない | 使える（データのやり取りがない場合） |


<h2>Webアプリケーションの土台となる技術</h2>
Webアプリケーションは「クライアントサーバ」「URL」「HTTP」の
3つの基礎を土台として形成されています。これらの技術はWWW（World Wide Web）黎明期に発明され、今もなお使用されています。
<h3>クライアントサーバシステム</h3>




クライアントサーバシステムとは、「クライアントとサーバに役割分担をして運用する仕組み」のことを指します。
クライアントとは、サービスを利用する側のコンピュータのこと、
サーバとは、サービスを提供する側のコンピュータのことを指します。
データを見る側のクライアントと、データを送る側のサーバで役割分担をすることが「クライアントサーバシステム」です。

![無題の図形描画.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/937972/de510a2d-fa10-7b80-affb-edab2a67fca1.png)


▼なぜ役割分担をするのか？
以前は１台の大型コンピュータで全てのデータを処理していました。
しかしそれでは処理が膨大な量になってしまうという問題点がありました。
また、クライアント側の人たちはデータさえ閲覧できればいいので、サーバの中身を知る必要がありません。
むしろ見せないほうがいい大切な情報もあるため、サーバの中身は隠しておくべきです。
そこで、クライアントとサーバの二つに負担を分担することで、これらの問題点を解決することができました。
結果として、不具合が起きた際に、症状に応じた原因の発見をしやすくもなっています。



<h3>URL</h3>
URLとは「リクエストの中身がより具体的になったもの」のことです。
クライアントがサーバにリクエストを送るためには、要求するコンテンツの場所が正確にわかっている必要があります。「どこに」「何を」「どうやって」要求するのかを文字に表したものがURLです。
以下では、例を示した上でURLの構成をざっくりと解説します。
![URL2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/937972/76040c70-5d60-2f5d-16d7-87542ec6f699.jpeg)


①スキーム（どうやって）
「通信の方法を示す」箇所です。
例えば日本人とアメリカ人が日本語と英語でそれぞれ会話してしまっては、意思の疎通をとることができません。それはコンピュータでも同じです。
クライアントとサーバは同じルールで通信をおこなう必要があります。
お互いにどのような通信手段を利用して会話をするのかを示したものがこのスキームです。

②ホスト名（どこに）
ホスト名とは、その名の通り「ホストコンピュータの名前のこと」です。
ホストコンピュータとはネットワークに接続されて、リクエストを受け取り、レスポンスを返すコンピュータのことです。サーバのことと捉えて問題はありません。
ホスト名は「ローカル名」と「親ドメイン名」に分解することができます。

・親ドメイン名（exmple.jp）
そのホストが存在する組織を表す
・ローカル名（www）
その組織の中のコンピュータにつけられた名前を表す

すなわち「www.example.jp」は
「jp（日本）のexampleという組織のwwwサーバー」
と読み解くことができます。

③パス名（何を）
パス名は「サーバの中の何のコンテンツを」要求するのかを示す箇所です。
「contents/index.html」は、（www.example.jpにある）contents配下にあるindex.htmlというファイルを要求する。と読み解くことができます。



<h3>HTTP</h3>
HTTP は 「Hyper Text Transfer Protocol」の略称です。
直訳すると、ハイパーテキストを転送するためのプロトコル。
プロトコルとはWeb上でコンピュータ同士がデータをやり取りするための約束事のことです。

◉プロトコル
通信をするための約束事（日本語、英語のようなもの）

◉HTTP以外にも様々なプロトコルがあります。
https, malito, ftp, file

その中でhttpは非常にシンプルで、実装が簡単という面があり、一般に広く使われるようになりました。


<h1>まとめ</h1>
◉アプリケーションとは、「利用者の目的に応じて使うソフトウェア」のこと。その中で、インターネットを通じて情報をやり取りするアプリケーションのことをWebアプリケーションと呼ぶ。
◉Webアプリケーションは「クライアントサーバ」「URL」「HTTP」を土台にして成り立っている。
◉コンテンツをリクエストする際に、私たちは、コンテンツのある正確な場所、サーバに要求しなければならない。そこで発明されたのが「URL」。
◉URLは、「スキーム」「ホスト名」「パス名」3つのパーツから構成されている。それぞれ、どのやり方で、どのWebサーバに、何のコンテンツをという情報を表している。URLを利用することで、階層的にリソースも位置を示すことができる。URLによってインターネット上のデータは整理されているため、瞬時に探したいデータを見つけることができる。