web技術の基礎　 Chapter5　まとめ

# Chapter5

## Webアプリケーションの３層構造

- ネットワークを介してブラウザ上で動作するアプリをwebアプリケーションという。
- webアプリケーションは、３層構造(３層アーキテクチャ)と呼ばれる階層からできている。
- ユーザーインターフェイスとなる「プレゼンテーション層」、業務処理を行う「アプリケーション層」、データの処理や管理を行う「データ層」の３つからなる。

## MVCモデル

- MVCモデルとは、Model、View、Controllerの３つの役割からできるアプリである。
    - Modelとは、アプリケーションの扱うデータと業務処理を行う。
    - Viewとは、ユーザーへの出力処理を行う。
    - Controllerとは、必要な処理をModelやViewに使える。
- 分業を行いやすく、さらに修正や機能追加が容易なので開発では多く使われる。

## フレームワーク

- サーバーサイド・スクリプトの開発を行う場合は、データの受け取りから通信処理などの多くのシステムを実装する。そこで、一般的な処理の流れを「雛形」として準備することによって開発スピードを高め、独自のアプリケーションを組めるようにしたものをフレームワークという。
- javaをベースにした「Java EE」「Struts」「Spring Boot」、PHPをベースにした「Cake PHP」、Rubyをベースにした「Ruby on Rails」が有名。

## webサーバー

- webサーバーとは、webアプリケーションにおいてクライアントに対する窓口の役割を果たすプログラム。
    - 静的ページや動的ページを呼び出しの元のコンピュータに転送する。
- webサーバーの機器台数を増やすことで１台あたりの負荷を少なくすることで故障した際もサービスを運用することができる構造を冗長化。

## webクライアント

- webサーバーとやりとりを行い、webシステムを利用するためのプログラムをwebクライアントと呼ぶ。
    - webサーバーから送られてきたHTTPレスポンスを解釈し、わかりやすいように表示するソフトウエア。
    - webアプリケーションを利用するためのwebクライアントとして利用されるものをwebブラウザという。

## アプリケーションサーバー

- アプリケーションサーバー(APサーバー)は、webアプリケーションの中核となる業務処理を行うプログラム。
    - 役割jは、webサーバーから送られてきたデータを受け取り、サーバーサイドのプログラムを実行することでデータの加工や検索をおこない転送。
- HTTPは、一回のリクエストとレスポンスで通信が遮断されるので、クライアントが同のような状況か把握できない。
    - アプリケーションサーバーは、クライアントごとに発行したID(セッションID)を通信データに含めることで同じクラインアントとの通信を１つのセッションとして判別し、ログイン状況などを把握する。
- トランザクションとは、通信を行う一連の作業の最小単位のこと。
    - コンピュータ用語としては密接に関連していて切り離すことができない複数データや、一まとめに処理を行う単位（引用：[https://www.r-agent.com/it_engineer/glossary/glossaryList/glo_transaction.html#:~:text=トランザクションとは、処理を,を指す場合が多い。](https://www.r-agent.com/it_engineer/glossary/glossaryList/glo_transaction.html#:~:text=%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E3%81%AF%E3%80%81%E5%87%A6%E7%90%86%E3%82%92,%E3%82%92%E6%8C%87%E3%81%99%E5%A0%B4%E5%90%88%E3%81%8C%E5%A4%9A%E3%81%84%E3%80%82)）

 

## データベース管理システム

- webアプリケーションに蓄積されるデータはデータベース(DB)に格納される。
- データベースの管理を行っているのが、データ管理システム(DBMS:Database Management System)。
- DBMSを搭載したサーバー機器を一般にデータベースサーバーという。
- ミラーリングとは、データの更新命令に対して複数のデータベースに同時に更新を行う方法。
- レプリケーションとは、ミラーリングとは異なり更新命令をただちに送らず、任意のタイミングで更新を行う方法。
- シェアードディスクとは、複数のDBサーバーから更新を行う方法。

## キャッシュサーバー

- キャッシュサーバーとは、リクエストに対するレスポンスを覚えておく役割を持っている。
- リクエストに対するレスポンスの記憶をキャッシュという。
- コンテンツキャッシュとは、文章や画像、動画といったコンテンツの記憶。
- クエリキャッシュとは、DBMSデータ検索要件の結果を記憶。

## Ajax

- クライアントとサーバーを交互に処理を行い、同調して通信を行うことを同期通信という。
- 同調通信の欠点である通信の遅さを補うのがAjaxという技術。
    - webブラウザ上で直接動くサーバーサイドスクリプト、javascriptが通信を行いHTMLを更新。
    - DOMをつかってHTMLを変換するので同期通信よりもデータ量は少なくなる。
- 非同期通信を行うことができるのでレスポンスを待つ間の時間をその操作に左右されない箇所の更新を行える。

## Webプログラミング

- プログラミング言語を使ってwebアプリケーションを開発することをwebプログラミングという。
- 特徴として、サーバーサイドスクリプトとクライアントサイドスクリプトの２種類からなる。
- サーバーサイドスクリプトは、素早いリクエストの処理やDBMS,セキュリティーを意識した技術が必要。
- クライアントサイドスクリプトは、主にwebブラウザーでの表示を整えたり、Ajaxでの非同期処理などを行う。

## WebAPI

- webAPI(Appllication Program Interface)とは、アプリケーションがwebサーバーの機能を利用するためのインターフェイスで、webブラウザーから操作しなくてもアプリケーションが直接webサービスを利用することができる。

## マッシュアップ

- さまざまなwebAPIを利用し、組み合わせることで別のサービスを提供することをマッシュアップという。

## CGI

- webサーバーかがクライアントかr尚要求に応じてサーバーサイドスクリプトを起動するための仕組みをCGIという。
- 通常webサーバーは、クライアントからのリクエストを受け取ると対応するコンテンツを返すが、CGIプログラムとして用意された場合そのままクライアントに返信せずにそれをwebサーバー上で実行した結果を返す。
- CGIにデータを渡す方法がいくつかあり、代表的なものが「コマンドライン引数渡し」「パス渡し」の二つ。
    - コマンドライン渡しとは、「http://example.com/test.cgi?データ１+データ２」のように「？」と「+」で区切って並べる方法。
    - パス渡しとは、「http://example.com/test.cg/でーた１/でーた２」のように「/」で　区切る方法。