SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

mixiアプリで始めるOpenSocial入門

mixiアプリで友達情報を取得する

mixiアプリで始めるOpenSocial入門(5)

サンプルコード

 それでは、実際のサンプルコードを見てみましょう。今回作成するアプリはmixiでも実際に公開しています。

 以下の内容をfetch-people-sample.xmlという名前でUTF-8形式で保存し、第2回の手順に沿ってアプリを作成します。なお、ここでは一部省略しているため、コードの全文は記事添付のサンプルファイルを参照してください。

複数のリクエスト、追加パラメータのサンプル(fetch-people-sample.xml)
<?xml version="1.0" encoding="UTF-8"?>
<Module>
  <ModulePrefs title="view-sample">
        <Require feature="opensocial-0.8" />
    </ModulePrefs>
    <Content type="html"><![CDATA[
    <div id="message"/>
    <script type="text/javascript">
            gadgets.util.registerOnLoadHandler(function() {
        var req = opensocial.newDataRequest();

        // *1(ここから)
        // VIEWERのFRIENDSの情報をリクエストする
        var fparams = {};
        fparams[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;
        fparams[opensocial.IdSpec.Field.GROUP_ID] = "FRIENDS";
        var fetchOpt = {};
        fetchOpt[opensocial.DataRequest.PeopleRequestFields.MAX ] = 1000;
        var idSpec = opensocial.newIdSpec(fparams); //fparamsで指定した範囲のIdSpecを作成する
        req.add(req.newFetchPeopleRequest(idSpec, fetchOpt), "friends");
        // *1(ここまで)

        // リクエストを実行
        req.send(function(response) {
          var friends = response.get('friends').getData();
          var msg = 'VIEWERのFRIENDS(マイミクシィ)は現在'
                            + friends.getTotalSize() + '人です';  // *2
          friends.each(function(friend){  // *3
            msg += 'ニックネーム: ' + friend.getDisplayName() + '<br/>';
          });
          document.getElementById('message').innerHTML=msg;
        });
      });
        </script>
        ]]></Content>
</Module>

 以下、(1)~(3)はリスト内の*1*3と対応するものとします。

 (1)newFetchPeopleRequestメソッドへの追加パラメータとして、最大件数を表すopensocial.DataRequest.PeopleRequestFields.MAXパラメータを指定します。また、取得範囲として、「VIEWERのFRIENDS」という範囲を表すIdSpecオブジェクトを指定します。

 (2)コールバック関数でレスポンスを処理します。newFetchPeopleRequestで作成したリクエストの場合、Personオブジェクトを複数持つopensocial.Collectionオブジェクトが返ります。ここではコレクションの属するセット全体のサイズを取得するgetTotalSizeメソッドを使い、マイミクの総数を取得します。

 (3)opensocial.Collectionクラスのeachメソッドを使って、コレクション内の各メンバーの情報を取得します。今回はPerson.getDisplayNameメソッドで、マイミクシィのニックネームを順に取り出します。

 実行結果は次のような画面となります。

サンプル実行結果。マイミクの人数とニックネームが表示される
サンプル実行結果。マイミクの人数とニックネームが表示される
mixiのコミュニティ情報取得について

 前回のDataRequestオブジェクトについての説明の中で少し言及しましたが、mixiアプリでは、OpenSocial標準のリクエスト以外に、コミュニティ情報を取得するリクエストを行うことができます。

 

 基本的な流れはこれまでのnewFetchPersonRequest・newFetchPeopleRequestメソッドで作成するリクエストの場合と同様です。ただし、これまで説明してきたリクエストはDataRequestオブジェクトのメソッドで作成したのに対し、コミュニティ情報を取得するリクエストは、mixi.newFetchCommunityRequest関数で作成する点が異なります。

 

 mixi.newFetchCommunityRequest関数は、引数としてPersonIDを指定します。VIEWERやOWNER、あるいは任意のユーザーのユーザーIDから、そのユーザーの所属するコミュニティの情報を取得できます。

 

 結果はコミュニティ情報オブジェクトを複数持つopensocial.Collectionオブジェクトが返ります。

 

 コミュニティ情報オブジェクトからは以下の情報を取得することができます。

 

コミュニティ情報オブジェクトから取得できる情報
項目名 取得方法
コミュニティID getIdメソッド
コミュニティ名 getNameメソッド
コミュニティ画像のURL getFieldメソッド(引数にmixi.Community.Field.THUMBNAIL_URLを指定)

 以下に、VIEWERの所属するコミュニティ情報を取得するサンプルコードを示します。

 

VIEWERの所属するコミュニティ情報を取得するサンプル
var req = opensocial.newDataRequest();
req.add(mixi.newFetchCommunityRequest(opensocial.IdSpec.PersonId.VIEWER), "communities"); //mixi.newFetchCommunityRequest関数でリクエストを作成
req.send(function(response) {
  var communities = response.get("communities").getData(); //
  communities.each(function(community) { //eachメソッドでコミュニティごとに処理
    var community_id = community.getId(); //コミュニティIDを取得
    var community_name = community.getName(); //コミュニティ名を取得
    var community_thumbnail = community.getField(mixi.Community.Field.THUMBNAIL_URL); //コミュニティ画像のURLを取得
    ・・・中略・・・

取得した個人情報の取り扱いについて

 前回、今回とOpenSocialコンテナから個人情報を取得する方法について説明しましたが、取得した個人情報の取り扱いについては、OpenSocialコンテナが定める規約等に従う必要があります。

 例えばmixiアプリでは、取得した個人情報(プロフィール情報やマイミクシィ情報など)について、ガイドラインが設けられています。

 例えば

  • 取得したデータの二次利用の禁止。取得したデータの利用はアプリの開発・実行のために限定される
  • 取得したユーザーID以外のデータについては、24時間以内に削除する

などのガイドラインがあります。

 これら以外にも、mixiアプリを作成する上で遵守すべきガイドラインがありますので、詳細は「mixiアプリガイドライン」を参照してください。

 規約違反の場合にはmixiアプリが削除される場合がありますので、十分に注意してください。

まとめ

 今回は友達の情報を取得するためのリクエストについて説明しました。リクエスト作成の際の引数に指定するIdSpecオブジェクトは、直感的には分かりづらい部分ですので、図表とオプション指定の方法でイメージを固めておきましょう。

 前回と今回は、DataRequestオブジェクトの使い方を説明する中で多数のオブジェクトが出てきました。実際のコードを記述する上では、それぞれのオブジェクトの定義やフィールドの確認のため、OpenSocialオフィシャルのドキュメントを頻繁に確認することになります。参考資料にOpenSocial APIリファレンスのリンク先を記してありますので、ぜひ本連載と併せて参照してください。

 次回はユーザーの更新情報を通知するためのアクティビティについて扱います。お楽しみに。

参考資料

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
mixiアプリで始めるOpenSocial入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 土井 毅(ドイ ツヨシ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4561 2009/11/24 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー