はじめに
Google Developer Day 2009に登録したこともあり、OpenSocialで何かを作ろうと思い、
mixiアプリを作ることにしました。
やってること
- OpenSocialのAPIでVIEWERのコミュニティ一覧を取得
- 名称に'mac' もしくは 'apple' が含まれているコミュニティ数をカウント
- マカー度(参加コミュニティに占める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のセッションがいくつか開催されるみたいなので
いってみようかと思います。