mixiアプリつくってみた

ついにmixiアプリの個人開発者登録が開始しました。
http://developer.mixi.co.jp/appli

というわけで、さっそく作ってみた。

名付けて「ミクミク占い」。相性の良いマイミクに★マークをつけて表示するアプリ。
見ての通りクソアプリですが、とりあえずmixiアプリ登録自体はスゴく簡単だということが分かった。基本はWeb上のどっかにGadgetXMLというXMLを置いておき、それをmixiアプリ側から呼び出すだけ。今回はマイミク情報を取得するためにfriends_dataというデータをOpenSocialAPI経由でjavascriptで取得して表示しただけ。

OpenSocial、俺には関係ないや〜と思って激しくスルーしてきましたが、実環境で実際に作ってみると、ちょっとおもろいかも。
mixiアプリ、流行りそうですね。よういちろうさんのOSDE?も今週末あたり使ってみよう。

ソース

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="use Social Data">
<Require feature="opensocial-0.8"/>
</ModulePrefs>
<Content type="html">
<![CDATA[
<script type="text/javascript">
  function request() {
    var req = opensocial.newDataRequest();
    req.add(req.newFetchPersonRequest("VIEWER"), "viewer_data");
    req.send(response);
    get_viewer_friends();
  }

  function response(dataResponse) {
    var viewer = dataResponse.get("viewer_data").getData();
    var nickname = document.getElementById('nickname');
    var text = document.createTextNode(viewer.getDisplayName());
    nickname.appendChild(text);
  }
  function get_viewer_friends() {
    var request = opensocial.newDataRequest();
    var param = {};
    param[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;
    param[opensocial.IdSpec.Field.GROUP_ID] = "FRIENDS";
    var viewer_friends = opensocial.newIdSpec(param);
    request.add(request.newFetchPeopleRequest(viewer_friends), "friends_data");
    request.send(function (response) {
      var item = response.get("friends_data");
      if (item.hadError()) {
        // エラー処理。item.getError() で詳細情報を取得
        return;
      }
      var list = document.getElementById('list');
      var people = item.getData();
      var array = people.asArray();
      var n = Math.floor(Math.random() * 1000 % people.size());
      alert(n);
      for(var i = 0; i < array.length; i++){
        var person = array[i]; 
        var nickname = person.getDisplayName();
        var li = document.createElement("li");
        if(i == n){
          nickname += "★";
        }
        var text = document.createTextNode(nickname);
        li.appendChild(text);
        list.appendChild(li);
      }
    });
  }
  gadgets.util.registerOnLoadHandler(request);
</script>

<p>こんにちは<span id="nickname"></span>さん.</p>
<p>今日、一番相性がいいのはこいつ(★がついている人)だ!!</p>
<ul id="list"></ul>
]]>
</Content>
</Module>