はじめてのmixiアプリ?


とりあえず面白くないものを作ってみた!
訪問者と、訪問された側のユーザーで同じコミュニティに入ってるのを抽出してみます。

近似度 = 被ってたコミュニティ / 双方のコミュニティ総数(重複はカウントしない)

にしてるんだけど、
訪問者の割る側はコミュニティ総数にしといた方が数値的に気持ち良さそう、ね。

(function() {
  var request = opensocial.newDataRequest();
  // 設置者のコミュニティ一覧を取得
  request.add(mixi.newFetchCommunityRequest(opensocial.IdSpec.PersonId.OWNER),  "CLST[0]");
  // 閲覧者のコミュニティ一覧を取得
  request.add(mixi.newFetchCommunityRequest(opensocial.IdSpec.PersonId.VIEWER), "CLST[1]");
  // クエリそーしん
  request.send(function (response) {
    var CLST = document.getElementById('CLST');
    var communityDuList = document.getElementById('communityDuList');
    var CMS = {};
    var calcList = [];
    var calcLen = 0;
    for (var i=0;i<=1;i++) {
      var items = response.get('CLST['+i+']');
      if (items.hadError())
        return;
      items.getData().each(function (com) {
        var cid = com.getId().split('/')[1];
        if (i == 0) {
          CMS[cid] = {
            id  : cid,
            name: com.getName(),
            icon: com.getField(mixi.Community.Field.THUMBNAIL_URL)
          };
        }
        if (calcList[cid] == undefined) {
          calcList[cid] = [];
          calcLen++;
        }
        calcList[cid][i] = 1;
      });
    }
    // あなたもわたしも所属してます!
    var duplicateCount = 0;
    for (var id in calcList) {
      if (calcList[id][0] && calcList[id][1]) {
        var text = document.createElement('span');
        text.innerHTML = '<a href="http://mixi.jp/view_community.pl?id=' + id + '">'+
                         '<img src="' + CMS[id]['icon'] + '" title="' + CMS[id]['name'] + '" style="width:24px;height:24px;border:0px;" /></a>&nbsp;';
        CLST.appendChild(text);
        duplicateCount++;
      }
    }
    document.getElementById('similarityScore').innerHTML = parseInt((duplicateCount / calcLen) * 100) + '% (duplicated: ' + duplicateCount + ')';
  });
})();

ソースはこんな感じ。
特に面白いこともなし。使い方を何となく覚えれたかなーといった感じ。
id:amachangが前日記で、とりあえずソース晒すといいよ!みたいな事かいてたから、載せてみた!。
もっと面白いのつくりたーい。


以下、個人的メモ。


・もう少し便利な開発環境ないかなー。
 毎回設定変更であげるのは面倒且つサーバーに迷惑かけちゃう。
 OSDE(http://code.google.com/p/opensocial-development-environment/)ってのがあるんだけど、まだ入れてない。
 Eclipseめどい


・毎回利用規約に同意しなおすのめんどいw


・AってユーザーからXっていうアプリを開くやったあとトップに戻ってまたアプリを開くってやると自ユーザーで開こうとする。
 まぁこれはURIなおせばいいのか。


mod_perlだから?古いキャッシュと衝突する場合がある。
 これは仕方ないか。
 因みに設定変更をするとキャッシュクリアされてるのかわかんないけど、新しいのになってる(確率が上がってる気がする)。


・各ユーザーがインストールしたバージョンでアプリは常に動かそうとしてる。
 本家がアップデートしても古いままっぽい?