はじめに
mixiアプリで始めるOpenSocial入門も第3回目となりました。ここまでOpenSocialの概要と、mixiアプリの作成方法について解説してきましたが、今回はOpenSocialアプリケーションの基本となるガジェットXMLの仕様と、ビューとユーザーの役割という概念について解説します。次回から詳しく解説するOpenSocial APIを使う上で重要なポイントが含まれていますので、しっかり押さえておきましょう。
ガジェットXMLの仕様
シリーズの過去2回でも少し解説しましたが、OpenSocialアプリケーションの実体はガジェットXMLと呼ばれるXMLファイルです。ガジェットXMLの基本的な構造は次のとおりです。
ガジェットXMLは、ルートのModule要素以下に、OpenSocialアプリケーションの設定情報のためのModulePrefs要素と、表示するコンテンツのためのContent要素を置くことになっています。
ModulePrefs要素以下には、使用するモジュールを定義するためのRequire要素と、コンテナに対するオプション指定を行うためのOptional要素を置きます。
モジュールについて(Require要素)
第1回でOpenSocialのJavaScript APIが「Gadgets API」と「OpenSocial API」で構成されていることを説明しましたが、それぞれのAPIはさらに細かくモジュールという単位に分割されています。以下に、mixiアプリで指定可能なモジュールのいくつかを示します。
モジュール名 | 対応するAPI | 説明 |
opensocial-0.8 | OpenSocial API | OpenSocial API全体を含むモジュール。コンテナからの情報取得などを行う場合には必須 |
tabs | Gagdets API | タブ機能のためのモジュール |
dynamic-height | Gagdets API | アプリケーションの表示領域を調整するためのモジュール |
flash | Gagdets API | Flashコンテンツを埋め込むためのモジュール |
minimessage | Gagdets API | アプリケーションからユーザーに対するメッセージを表示するためのモジュール |
views | Gagdets API | ビュー(後述)の情報の取得や切替のためのモジュール |
表にも記したように、OpenSocial APIを使ったmixiアプリを作成する場合は、opensocial-0.8モジュールの指定は必須となります(逆に、前回のサンプルのようにOpenSocial APIを呼び出さないのであれば、opensocial-0.8モジュールは不要です)。
Gadgets APIは機能ごとにモジュールに分割されており、必要とする機能に応じてモジュールを指定して使用します。Gadgets APIに含まれるモジュールのいくつかは、この連載でも解説する予定です。
コンテナへのオプション指定(Optional要素)
Optional要素は、コンテナに対して特定のオプションを指定するための要素です。コンテナごとに機能が異なるため、OpenSocialでは具体的な機能は定義されていません。
mixiアプリについて現時点で公開されている情報の範囲では、先回説明した、Optional要素の指定によるContent Rewriteの制御機能だけが定義されています。
表示するコンテンツ(Content要素)
Content要素には、実際にWebブラウザに表示するコンテンツを記述します。
type属性に"html"を指定した場合には、CDATAセクションとしてHTML形式でコンテンツを記述します。type属性に"url"を指定した場合には、href属性にコンテンツのURLを指定します。
type属性に"html"を指定した場合、ガジェットXMLがコンテナで解析され、Webブラウザに送信される際には、HTMLのbody要素以下にContent要素のCDATAセクションの内容が展開されます。従って、html要素やhead要素などをCDATAセクション内に記述することはできません。CDATAセクションにはHTMLだけでなく、JavaScriptやCSSなども記述することができます。CDATAセクション内の要素がどのように変換されるかについては、第1回の説明を参照してください。
type属性に"url"を指定した場合には、アプリケーションの内容として指定したURLの内容が表示されます。単純にWebブラウザが指定したURLに移動するのではなく、OpenSocialアプリケーションの表示領域内に、指定したURLの内容が表示されます。
アプリケーションのビューごとに異なった内容を表示させるため、Content要素は複数記述することができます。この機能についてはビューの詳細と併せて次項で説明します。