Jの衝動書き日記

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

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

Webサービスに関する基本的な技術を体系的によくまとめている良書、「Webを支える技術」を読み終わったのでメモとしてまとめてみたものの第3弾である。今回は第4部のハイパーメディアフォーマットで登場した各フォーマットのポイントをまとめてみた。
ただし、本書はリファレンスではないので、各フォーマットについて詳細に知りたい場合は別資料を読む必要はある。それにいつものように自分向けメモでもある。

ハイパーメディアフォーマット

HTML

メディアタイプは次のうち、どちらかを取る。

microformats

HTMLの中に埋め込むことでセマンティクスを表現する(意味のあるデータの表現)フォーマットのことをいう。HTMLの既存タグの属性として定義する。
セマンティクスとは、リソースが持つ意味を確定させることをいう。意味を確定するとは、プログラムがリソースをどのように処理するかを解釈しやすいようにすることだ。
本書では、利点として、HTML自体に意味のあるデータを持たせることが出来るので、プログラムでも処理可能となる点をあげている(ブラウザによる表示という意味ではない。)WebサービスとWeb APIを分けないという考え方の重要性も上げていた。
個人的には、HTML上の情報に対していちいち意味を持たせるのは面倒だと思っていたが(ホームページを普通のエディタで書いてあるので更に面倒になりそうだ)、WebサービスとWeb APIを分けないという考え方というのは新鮮だった。

RDF

microformatsと同様、HTMLのセマンティクスを表現出来るが、独立して表現する点がことなる。メタデータの表現用フォーマット

ATOM

タイトル、著者、更新日時といった基本的なメタデータを備えたリソース表現のためのフォーマットである。現状では、ブログの更新情報配信として利用されている。
Atom Publishing Protocolはこれを利用してRESTスタイルのWeb サービスを提供する。つまり、HTTPでGET/PUT/POST/DELETEを行うためのフォーマットとして、Atomを用いてREリソース操作を行う。AtomはCRUD操作するためのヘッダー情報代わりになる。Javaフレームワークでは、Apatch Abderaなどがある。

JSON

JSONとは、JavaScript Object Notation、つまりデータ記述言語のことである。表現形式は、JavaScriptの形式を取る。タグでくくる必要がないため、XMLに比べるとデータ量が少なくなるという利点がある。

  • メディアタイプ:application/json
    • オブジェクト 名前:値の組み合わせ
    • 配列
    • 文字列
    • 数値
    • Boolean
    • null
    • 日時 組み込み型で存在しない
      ISO 8601フォーマットで記述するなど規定する必要アリ
      "2010-11-01T05:43:35+09:00"
    • リンク 組み込み型では存在しない
      URIを文字列値として表現する

また、JSONを扱う方法としてJSONP(JSON with Padding)がある。何故必要か?というと、JSONをブラウザ上で扱う場合、JavaScriptXMLHttpRequestを利用するが、これはJavaScrptファイルを取得したのと同じサーバからしか通信出来ないという制限がある(クロスドメイン通信の制限)。

このために、以下の解決方法をとっている。

  • scriptタグ:複数のサイトからJavaScriptを取り込むことが可能
  • 他のサイトからJSONのデータを取得する際、それを受け取るためのコールバック関数を指定する
例
AサイトのJavaScript:関数Aを定義
BサイトのJSON:取得する時、関数Aをコールバックに指定
→ 応答内容が関数Aの引数にJSONを渡した形式のデータが帰る
      application/jsonではなく、application/javascriptになる

参考文献

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

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