おれ、エンジニアになるよ。

エンジニア志望の大学生だった若造がISUCON7を通して見事就職した後、今度は一人前のエンジニアになることを目指す成長物語

「Webを支える技術」を読んで 〜アーキテクチャスタイルREST〜

こんにちは。

今日から3冊目に突入です。

 

昨日まで読んでいた「サーバ/インフラエンジニア養成読本」ですが、文字でまとめきれなくて記事にするのを断念しましたwwww

 

改訂3版 サーバ/インフラエンジニア養成読本 (Software Design plus)

改訂3版 サーバ/インフラエンジニア養成読本 (Software Design plus)

 

 

なんとなく「こんな感じ」っていうイメージはできたのでまぁいいかなww

割と用語とかコマンドの使い方が多かったので、今後もリファレンス用に使っていきやす!

そして今回からはこちら。

 

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

 

 

1冊目に読んだ「プロになるためのWeb技術入門」をより詳しく説明したものみたい。

 

では、やっていきますぞい。

 

Webを支える技術

 

そもそもの話。

webを支える技術は主に3つあるんや。

 

HTTP, URI, HTML

 

URI(unform resource identifier)を使えば、世界中の情報指し示すことができる。

HTMLはそれらの情報を表現する文書のフォーマット。

そして、HTTPというプロトコル(取り決め)を使って、それらの情報を取得したり発注したりするわけ。

 

この3つの技術を使えばシステムが動くわけなんだけど、これを実現するには中身の設計思想が必要になった。

 

その設計思想の1つがREST。

 

 

 

アーキテクチャスタイル

 

「RESTとはアーキテクチャスタイルである。」

 

はて?

 

アーキテクチャとは、複数のアーキテクチャに共通する性質、様式、作法あるいは流儀を指す」

 

うん、どうやらアーキテクチャスタイルとアーキテクチャとは別物らしい。

例をあげると、

 

アーキテクチャスタイル:REST, P2P, MVC

 

アーキテクチャ:ブラウザ、サーバ、プロキシ、HTTP、URI、HTML

 

実装:Apache, Firefox, IE

 

 

そういえば、MVC(model-view-controller)もこの1つだっけ。

 

つまり、システム作るときにはただ闇雲に作るのではなく、ちゃんとこういうパターンで作ってね、ってことやね。

 

実は「クライアント/サーバ」もアーキテクチャスタイル。

RESTはこの「クライアント/サーバ」から派生しているんやって。

 

んじゃRESTって何??

 

 

 

 REST

Representational State Transfer

 

先にも説明したけど、もうちょい詳しく言うと、

 

「RESTは複数のアーキテクチャスタイルを組み合わせて構築した複合アーキテクチャスタイル」

 

なるほど。

んじゃ、それぞれのアーキテクチャって何なん??

 

・クライアント/サーバ

 => ユーザインタフェースと処理を分離する

 

 

・ステートレスサーバ

 => サーバ側でアプリケーション状態を持たない

 

「クライアント/サーバ」に最初に追加するアーキテクチャスタイル。

アプリケーション状態とはセッション状態のこと。

ログインからログアウトまでの一連の流れをセッションと呼ぶんやったね。

 

そうなると出てくるのが「Cookie」。

こいつはステートフルなやつ。

REST的に考えると、Cookieを使うのは間違ってるんやけど、フォーム認証行うのにCookieやめるわけにはいかないからしゃーないwww

まぁ、こういうこともあるよね。

 

 

・キャッシュ

 => クライアントとサーバの通信回数と量を減らす

 

一度取得したリソースをクライアント側で使い回す。

これによって、サーバとクライアント間での通信回数が減らすことができるんや。

けど、古いキャッシュを使っていると情報の信憑性が下がるから要注意。

 

 

・統一インターフェース

 => インターフェースを固定する

 

URIで指定したリソースに対する操作を、統一した限定的なインターフェースでやりましょう、ってこと。

 

 

・階層化システム

 => システム階層に分離する

 

サーバ/クライアント間には、ロードバランサを設置して負荷分散したり、プロキシを設置してアクセス制限したりする。

 

 

・コードオンデマンド

 => プログラムをクライアントにダウンロードして実行する

 

プログラムをサーバからダウンロードし、クライアント側でそれ実行する。

JSとかFlashがそう。

 

 

これら6つのアーキテクチャスタイルを組み合わせたのがRESTってわけやな。

細かいとこは実際に触りながら覚えていくとしよう。

 

では、今日はここまで。