Webアプリケーションとは何か
Webアプリケーションは複数の文脈で理解することができると考えています。mgn901.icon
1. HTTPを踏まえて理解する
HTTPサーバは、Webブラウザ等のクライアントからリクエストを受け付け、レスポンスを返す。
Webブラウザでhttps://example.com/index.htmlにアクセスすると、Webブラウザはexample.comのHTTPサーバにメッセージを送る。
GET /index.html HTTP/1.1
「どのように」「どこに」「何を(GETリクエストの場合は無し)」の情報が入る。
example.comのHTTPサーバにリクエストが届くと、HTTPサーバはその内容に応じて送信元のWebブラウザにレスポンスを返す。
HTTP/1.1 200 OK ...
レスポンスの本文がHTMLであれば、ブラウザはHTMLを描画してグラフィカルに表示する。
https://gyazo.com/2ab492d16b111a7965ebc8d7e291b171
前提: 自動販売機の話
飲み物を買える機械。
1. ユーザーがお金を入れてボタンを押す。
2. 投入金が十分で自動販売機の中に飲み物があるなら、飲み物(とお釣り)が出てくる。
自動販売機という機械は、投入金と飲み物の種類・個数という「状態」を持っている。
「状態」を持っていれば機械っぽい振る舞いをするのでは?mgn901.icon
https://gyazo.com/05c1318eef3c3c93bacf953b87735304
「レスポンスを生成」する際に、リクエストの内容、サーバで保持している「状態」に応じてレスポンスの内容を変えるようにすれば、機械っぽい振る舞いをするアプリケーションになる。
状態はデータベースに保持する。
2. CLIで動作するプログラムの延長として理解する
WebアプリケーションはGUIを持っている。
Webアプリケーションは、GUIを実現するためのプログラムと、CLIで動作するような処理を実現するためのプログラムを合わせたものと考えることができる。
GUIを実現するためにHTML(とそれを表示できるWebブラウザ)を用いる。
サーバはHTTPリクエストを解釈でき、その内容に応じて処理を実行する。
Webブラウザとサーバとの間でHTTPリクエストとそれに対するレスポンスをやり取りすることでアプリケーションを実現していることに注意する。
WebブラウザがサーバにHTTPリクエストを送ることで、処理に必要な情報を入力する。
サーバがWebブラウザにHTTPレスポンスを返すことで、処理の結果を出力する。