yujiroのプログラミング

勉強内容をアウトプットし、サボらないようにする為のブログ

<DAY62>WEBを支える技術を読んで 第3章

\ Follow me!! /

f:id:yujiro0320:20190415152250p:plain


#学習時間と累計時間


●学習日数
 62日 


●学習時間(本日) 
 1.5時間


●累計学習時間
 161.0時間


●一日あたりの平均学習時間
 2.59時間 

#<この記事のまとめ>

この6つを組み合わせたアーキテクチャ スタイルをRESTと呼ぶ。

1クライアント/サーバーで分けて、UIと処理を分離する事
2ステートレスサーバー(サーバー側でアプリケーションの状態を持たない)
3キャッシュ(サーバーとクライアントの通信を減らす)
4統一UI(インターフェイス)
5階層化システム
6コードオンデマンド

 RESTというアーキテクチャスタイル

スクリーンショット 2019-04-22 15.12.11.png

アーキテクチャスタイルとはRESTその物の事をさす。

実装を一つ抽象度をあげたものをアーキテクチャと呼び更に抽象度をあげたものをアーキテクチャスタイル(REST)と呼ぶ。
RESTを構成する重要な概念を順に紹介する。

リソースとは

RESTの重要な概念の一つ。WEB上に存在するありとあらゆる名前を持った情報の事。
リソースの名前とはURLの事です。
このURLがもつリソースの情報を簡単に指し示す事のできる性質を<アドレス可能性>よーするにURLにちゃんとした名前をつけておけば、プログラムを作成しやすくなります。一つの情報は複数のURLを持つ事ができる。サーバーとクライアントの間でやり取りするデーターを<リソースの表現>と呼ぶ。

サーバーとクライアント(アーキテクチャスタイルその1)

HTTPプロトコルプロトコルとは手順や約束事。HTTPプロトコルに準じて、サーバとクライアントがやり取りをする。
スクリーンショット 2019-04-22 15.24.41.png

この仕組みのメリットはクライアントとサーバを分離し処理ができる。だからクライアントをマルチプラットフォームにできる。よーするにWEBは携帯からPCゲームまでなんでもやり取りができる。しかもUIはクライアント側の仕事のため、サーバーはデーターストレージとしての機能をもつだけで良い。 (ストレージ 記憶装置)

 ステートレスサーバー(アーキテクチャスタイルその2)

クライアントのアプリケーションの状態をサーバーで管理しない事。これによりサーバーの実装を簡素化できる。ただ現実にはCookieを使ったセッション管理などあえてステートレスではない処理をしているケースもある。あくまでの必要最低限の実装にする理解で留めておく。
スクリーンショット 2019-04-22 15.33.40.png

キャッシュ(アーキテクチャスタイルその3)

一度取得したリソースをクライアント側で使い回す事。
メリットはサーバーの通信を減らすことで負担減となる。

統一のインターフェイスアーキテクチャスタイルその4)

限定した8個のメソッドで処理をする。これ以上メソッドを拡張出来ない制限を加えることで、シンプルなアーキテクチャを実現した。この統一インターフェイスがRESTを印象づけるアーキテクチャです。
スクリーンショット 2019-04-22 15.39.25.png

階層化システム(アーキテクチャスタイルその5)

統一UIを採用していることで階層化システムを採用しやすくなっている。
サーバーの負荷分散のためにプロキシを設置してアクセスを制限したりする。
スクリーンショット 2019-04-22 16.09.59.png

プロキシとは

直訳は代理。統一したUIのおかげで、クライアントはプロキシに繋がろうが、サーバーに繋がろうが、意識することはない。
サーバーに対しては、クライアントの情報を受け取る。クライアントに対してはサーバーの情報をサーバーの働きをする。

コードオンデマンド(アーキテクチャスタイルその6)

サーバーからプログラムコードをDLしてクライアントで実行するアーキテクチャスタイル。
メリットはクライアントを後からいくらでも拡張できる事。HTTPアプリケーションプロトコルに従って通信している間はリソースは明白なのに対して、DLしクライアントで実行してしまうので、可視性は低下する。

スクリーンショット 2019-04-22 15.51.39.png

RESTのアーキテクチャスタイルのまとめ

この6つを組み合わせたアーキテクチャスタイルをRESTと呼ぶ。

1クライアント/サーバーをで分けて、ユーザーインターフェイスと処理を分離する事
2ステートレスサーバー(サーバー側でアプリケーションの状態を持たない)
3キャッシュ(サーバーとクライアントの通信を減らす)
4統一インターフェイス
5階層化システム
6コードオンデマンド

アプリケーション状態エンジンとしてのハイパーメディア

WEB上のリソースが持つリンクを辿ってその作業をいくつか実施することで一つのアプリケーションを実現すること
この考え方は接続性とも呼ばれる。

RESTful

RESTの制約に従って、RESTらしい設計をする事