stMind

about Tech, Computer vision and Machine learning

mixiアプリ、はじめました

はじめに

Google Developer Day 2009に登録したこともあり、OpenSocialで何かを作ろうと思い、
mixiアプリを作ることにしました。

つくったもの

プロフィールページに来てくれた人のマカー度を勝手に測定するアプリです。

f:id:satojkovic:20090607155340p:image

やってること

  1. OpenSocialAPIでVIEWERのコミュニティ一覧を取得
  2. 名称に'mac' もしくは 'apple' が含まれているコミュニティ数をカウント
  3. マカー度(参加コミュニティに占めるapple関連コミュニティの割合)を計算

ソースコード

上記のページを参考に、こんな感じで実装しました。

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs title="mac or win">
    <Require feature="opensocial-0.8"/>
  </ModulePrefs>
  <Content type="html">
  <![CDATA[
        <script type="text/javacript">

function isMacFan() {
  var req = opensocial.newDataRequest();
  // 訪問者の会員情報の取得
  req.add(req.newFetchPersonRequest("VIEWER"), "viewer_data");
  // コミュニティの情報の取得
  req.add(mixi.newFetchCommunityRequest(opensocial.IdSpec.PersonId.VIEWER), "community_data");
  req.send( function(res) {
    // 訪問者のニックネームを表示
    var viewer = res.get("viewer_data").getData();
    var nickname = document.getElementById('nickname');
    var text = document.createTextNode(viewer.getDisplayName());
    nickname.appendChild(text);
    // コミュニティのリストを取得
    var list = res.get("community_data").getData();
    var commu_cnt = 0;
    list.each( function(p) {
      var commu = p.getName();
      // apple関連のKWを含むコミュを探す
      var str = commu.match(/mac|apple/gi);
      if( str ) {
	commu_cnt = commu_cnt + 1;
      }
    });
    // コミュニティ総数に対するapple関連コミュニティの割合を算出
    var total = list.getTotalSize();
    if( total != 0 ) {
      var ratio = commu_cnt / total;
      ratio = ratio * 100;
      ratio = Math.floor(ratio);
      ratio = ratio / 100;
    } else {
      ratio = 0.0;
    }
    var cnt = document.getElementById('cnt');
    var text2 = document.createTextNode(ratio);
    cnt.appendChild(text2);
  });
}
// エントリポイント
gadgets.util.registerOnLoadHandler(isMacFan);

        </script>
	<div align="center">
	  <p><span id="nickname"></span>さんのマカー度</p>
	  <h1 id="cnt"></h1>
	</div>

  ]]>
  </Content>
</Module>

終わりに

今回、初めてのOpenSocialアプリということで結構手こずりましたが、
簡単にソーシャルアプリを作れて、実際にmixi上で実行させられる
ようになるのは楽しいですね。

GDD 2009でもOpenSocialのセッションがいくつか開催されるみたいなので
いってみようかと思います。