Gadget API
Gadgetとは、HTML,CSS,JavaScriptで構成されるソフトウェアで、GadgetはXMLによって定義される。Gadget XMLは、以下の要素を用いてGadgetを定義する。
- Meadata : Gadget のタイトルや概要などを定義する
- Feature : Gadget が使用する機能を定義する。ここでOpenSocialのAPIや、UIライブラリなどを使うことを宣言する。いわゆるrubyのrequireみたいなもの。
- User Preference : Key-Value Pairで構成されるユーザーの設定。
- Message Bundle : 国際化のためのメッセージマップ
- Content : HTML,CSS,JavaScript本体。HTML Gadget(本体を直接記述) と URL Gadget(リンク) の2種類。マルチコンテンツが可能(一つのGadgetに複数のViewを定義する)。
で、Gadget Server と呼ばれるものが存在し、以下のリクエストを処理する。
- Gadget Rendering Request : Gadget XML を入力すると、HTML/CSS/JavaScriptを返す。例えば、Google Gadget の場合、http://www.gmodules.com/ig/ifr?url={URI} のような形で記載するが、{URI}がXMLのURIで、www.gmodules.com/ig/ifr がGadget Rendering Request を処理して(iframeに送り込むべき)HTML/CSS/JavaScriptを返してくれる。
- Gadget Metadata Request : Gadget XML を入力すると、Gadget Rendering Request の URI と、必要なJavaScriptコンテナへの参照(
- JavaScript Request : javascriptのパスを入力し、javascriptコードを返してくれるもの
前述した、OpenSocial Container の一部としてGadget Serverがある。OpenSocialのJavaScript API(person.jsなど)と、Gadget JavaScript API は別物で、gadget.* 空間で定義される*1。
*1:これが混乱の元か