mixiアプリ作成入門(3)- mixiアプリのXMLを読んでみる -
前回は、「Hello,(ニックネーム)!」とプロフィール写真を表示する、簡単なmixiアプリを作成してみました。
今回は前回作成したXMLをもとに、mixiアプリのコードについて簡単な説明をしてみたいと思います。
以下に前回のサンプルコードを記載します。
<?xml version=”1.0″ encoding=”UTF-8″?>
<Module>
<ModulePrefs title=”Hello, world!”>
<Require feature=”opensocial-0.8″ />
</ModulePrefs>
<Content type=”html”><![CDATA[<div>Hello, <span id="target"></span>!</div>
<div id="photo"></div><script type="text/javascript">
function init() {
var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER), "viewer");
req.send(function(data) {
var viewer = data.get("viewer").getData();
var name = viewer.getDisplayName();
var thumbnailUrl = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);
document.getElementById("target").innerHTML = name;
document.getElementById("photo").innerHTML = '<img src="' + thumbnailUrl + '" />';
});
}
gadgets.util.registerOnLoadHandler(init);
</script>]]></Content>
</Module>
mixiアプリはXML形式で記述されますが、そのファイルはすべて「Gadget XMLファイル」と呼ばれるものです。
たった一つのGadget XMLファイルの中に、mixiアプリに関するすべての機能を記述することができます。
尚、mixiアプリのGadget XMLファイルは、OpenSocial および Gadgets の仕様に準拠しているそうです。
Gadget XMLファイルの具体的な記述方法は以下です。
- <Module> をルート要素として記述する。
- mixiアプリのタイトルや説明等の情報や利用するAPIについて、 <ModulePrefs> 要素に記述する。
- <Content> 要素の中にmixiアプリの中身をHTMLで記述する。
(中身をCDATAセクションで囲むことにより、HTMLタグがXMLとして処理されないようにしておきます)
では、サンプルにおけるこれらの要素を見てみましょう。
<Module>
ルート要素として記述しています。
<ModulePrefs>
<Require feature=”opensocial-0.8″ /> を宣言しています。
これは、ニックネームやプロフィール写真のURLパスなどの情報を使用するためです。
<Content>
ここにはHTMLを記述できますので、HTMLタグやJavaScriptを記述しています。
表示部分は、staticな「Hello, 」文字列と取得したユーザ情報を挿入するための場所を用意しただけのシンプルな構造です。
<div>Hello, <span id=”target”></span>!</div>
<div id=”photo”></div>
あとは、target にニックネーム、photo にプロフィール写真がそれぞれ挿入されるようJavaScriptで記述していきます。
ユーザ情報は、JavaScriptコード中の newFetchPersonRequest() 関数によって取得することができます。
この第1引数に取得したいユーザを特定するための値を指定するのですが、今回は取得したいユーザとして「Viewer」が指定されています。
———————————
◆「Owner」と「Viewer」
OpenSocialでは「Owner」と「Viewer」という概念があり、それぞれ「Owner = mixiアプリをインストールしているユーザ」「Viewer = mixiアプリを操作しているユーザ」を意味しています。
サンプルの例で言いますと、「Owner」が指定された場合、そのmixiアプリがインストールされた自分のページを誰が閲覧しようとも、常に自分のニックネームと写真が表示されます。しかし、「Viewer」指定の場合は訪問者によって表示される情報が変わるような仕組みです。
———————————
実は、newFetchPersonRequest()関数を使うと、一気に以下の 3 つの情報が呼び出せます。
- ID
getId() - ニックネーム
getDisplayName() - プロフィール写真
getField(opensocial.Person.Field.THUMBNAIL_URL)
サンプルをカスタマイズするとき、ニックネームの他にプロフィール写真も表示することにしたのは、そんな理由からでもありました。
リクエストを送る処理には、DataRequestオブジェクトを使用します。
まず、newDataRequest() 関数によりリクエスト送信用オブジェクトを生成し、add()関数を使用して DataRequest オブジェクトに要求を追加しています。
このとき、第1引数に newFetchPersonRequest() 関数などで生成されたリクエストオブジェクト、第2引数にこのリクエストの結果を取り出すためのキー文字列を指定します。
send()関数でリクエスト送信後、取得したユーザ情報からそれぞれの情報を取り出し、document上の意図した場所へ挿入するよう記述したら完成です!
このままのコードでは何の彩色もないシンプルな表示の完成図ですが、CSSや画像を使ってもう少しリッチな表示にチャレンジしてみてもいいかもしれませんね。
CSSは<Content> の中にもちろん記述できますが、画像や外部CSSの読み込みをする際は、それらのファイルがWebサーバ上に存在しなければなりませんのでご注意ください。
次回は、newFetchPersonRequest() では取得できないユーザ情報の取得方法についてご紹介したいと思います。
Post Footer automatically generated by Add Post Footer Plugin for wordpress.
関連するmixiアプリ情報:
- mixiアプリ作成入門(2)- はじめてのmixiアプリ作成 - 前回は、mixiアプリをはじめるための準備を 3 ステップでご紹介しました。 今回は、せっかく mixiアプリのデベロッパーになって「mixiアプリオープンβ (http://platform001.mixi.jp/)」 [...]...
- mixiアプリ入門(7) – マイミク一覧でページ送りする - こんにちは、mixiのアプリ管理機能が充実しはじめててちょっとびびったマイキーです。 今回は久しぶりの「mixiアプリ入門」シリーズをおもむろに投稿します。 前回は、マイミク全員を一度に表示する方法をご紹介しました。 そ [...]...
- mixiアプリ作成入門(5) – マイミク情報を取得する - 前回は、ユーザのプロフィール情報の取得方法についてご紹介しました。 さまざまな種類のプロフィール情報を取得することによって、mixiアプリの作成の幅が広がったかと思います。 前回までは「Owner」または「Viewer」 [...]...
- mixiアプリ入門(8) – ページ送りの裏側を知る! - お久しぶりです、マイキーです。 mixiアプリが一般公開されたし自分もアプリ作ってみたくなっちゃった方のための・・・「mixiアプリ入門」シリーズ! 不定期すぎる更新でごめんなさい。 前回は、マイミク一覧をページ送りで表 [...]...
- mixiアプリ作成入門(4)- 詳細なユーザ情報を取得する - 前回はmixiアプリ作成入門(2)で作成したコードについて簡単な解説を行いました。 今回は、ユーザの詳細なプロフィール情報の取得方法をご紹介したいと思います。 mixiアプリでは、以下のプロフィール情報とマイミク一覧を取 [...]...






mixiアプリ作成入門(4)- 詳細なユーザ情報を取得する - | mixiアプリ.info said,
Wrote on 6月 23, 2009 @ 16:20
[...] 前回はmixiアプリ作成入門(2)で作成したコードについて簡単な解説を行いました。 今回は、ユーザの詳細なプロフィール情報の取得方法をご紹介したいと思います。 [...]