Jの衝動書き日記

さらりーまんSEの日記でございます。

Webを支える技術 勉強会まとめ その1

Webサービスに関する基本的な技術を体系的によくまとめている良書、「Webを支える技術」を読み終わったのでメモとしてまとめてみたものである。こういう良書を読むと、体系的に技術を学ぶには本が最適だなと思う。

1. RESTの概念

1.1 RESTとは何か?

RESTとは、Webアーキテクチャスタイルの一つである。REST = Representational State Transfer、リソース状態の転送。つまり、Webサービス・WebAPIをリソースに対する操作という思想で設計しているという考え方だ。
そのため、通常Webサービス・WebAPIはGET/POSTが主になるが、リソースに対する操作ということでDELETEやPUTといったメソッドも使用する。Web上に存在するリソースに対して、CRUD操作(追加・読込・変更・削除)を実現するということである。それらの操作をWebサービス・WebAPIとして提供するということだ。

1.2 リソースの概念

リソースとは、Web上に存在する、名前を持ったありとあらゆる情報のことを言う。通常、これらは名前で区別される。そのために使用するのがURIである。リソースは複数の表現を持つことが可能で、サーバとクライアント間ではこのリソースの表現(Resource Representation)をやりとりする。
リソースの表現は、例えばHTML、XML、JSON等、リソース情報を必要とするクライアントの要求する形式に応じて変わる。例えば、住所情報を要求する時、HTML形式でもらったり、JSON情報でもらったりと、情報の内容自体は同じだが、その表現形式は変わる。

2.URI

Webを支える技術の一つ。Webは、HTTP、URI、HTMLといった3つのアーキテクチャで支えられている。

2.1 URIとは?

URI=Uniform Resource Identifier、つまりリソースを統一的に識別するIDのことである。このURIにより、Web上に存在するリソースは一意に識別出来る。
形式は、プロトコル名+ : + // + [ユーザ名:パスワード@] + ホスト名 + リソースへのパス
ユーザ名とパスワードは省略可能だ。
例)

→ http + : + // + homepage3.nifty.com +/jis/

  • file:///Users/newWell/Documents/MyWeb/Jis/index.html

→ file + : + // + [localhost] + /Users/newWell/Documents/MyWeb/Jis/index.html 
→ ホスト名を省略している

日本語のリソースも指定することが可能。その場合は、%エンコーディングで指定する(対応する文字コードのバイトを%区切りで指定するやり方)。
例) あ → %E3%81%82 (UTF-8)
ただし、%エンコーディングは、文字コードの指定が出来ないため(UTF-8EUC等明示する方法がない)、通常はUTF-8にしておくのが望ましい。

2.2 よいURIとは?

よいURIとは、変わりにくいものである。
駄目な例を以下に示す

開発言語・環境に依存したURIを含めているので駄目。実装環境が変わるとURIも変わってしまう。cgiからJavaに変えた場合等。

  • login.do?action=showPage

メソッド名をURIに含めているので駄目。メソッド名が変わるとURIまで変わってしまう。


よいURIを設計する指針を以下に示す。

→ 参照の場合は、そのリソースのID(データベース上の主キー等)

Apatchのmod_rewriteでユーザ向きのURIと内部向けのURIを使い分けるというのも一つの手。この場合、ユーザ向きのURIは極力実装依存の部分を除くのがポイント。

参考文献

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

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