SHOEISHA iD

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

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

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

mixiアプリで始めるOpenSocial入門

mixiアプリによるソーシャルデータの活用

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

個人の情報の取得サンプル

 では早速、newFetchPersonRequestメソッドを使い、個人の情報を取得してみましょう。

 前回のサンプルでもソーシャル情報の取得を行いましたが、今回はより詳細な情報として、アプリを開いているVIEWERのすべての情報を表示します。

ソーシャル情報取得の流れ

 サンプルの解説に入る前に、ソーシャル情報取得の流れを確認しましょう。以下の手順で、OpenSocialアプリケーションからソーシャル情報を取得することができます。

DataRequestオブジェクトを使った、情報取得のサンプルコード
    // 1.DataRequestオブジェクトの作成
var dataRequest = opensocial.newDataRequest();
    // 2.リクエストの作成
var requestObject = dataRequest.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER);
    // 3.DataRequestオブジェクトへのリクエストの追加
dataRequest.add(requestObject, "viewer");
    // 4.DataRequestオブジェクトの送信
dataRequest.send(
    // 5.リクエストの結果をコールバック関数で処理
  function(response) {
    var viewer = response.get('viewer').getData();
    var msg = 'Hello ' + viewer.getDisplayName();
  });

 まずは、コードの大まかな流れについて概観します。

1. DataRequestオブジェクトの作成

 ソーシャル情報のリクエストの基点となるDataRequestオブジェクトはopensocial.newDataRequest関数で作成することができます。

2. リクエストの作成

 DataRequestオブジェクトの中に格納するリクエストは先ほど記したDataRequestオブジェクトのメソッド群で作成します。

 サンプルコードでは、VIEWERの情報を取得するためのリクエストであるnewFetchPersonRequestメソッドでリクエストを作成しています。

3. DataRequestオブジェクトへのリクエストの追加

 2.で作成したリクエストを、DataRequestオブジェクトのaddメソッドで追加します。この際、リクエストごとに任意の名前を付けることができます。ここで付けた名前は、OpenSocialコンテナからレスポンスが返ってきた時に使用します。

 サンプルコードでは、リクエストにviewerという名前を付けています。

4. DataRequestオブジェクトの送信

 DataRequestオブジェクトのsendメソッドを使って、OpenSocialコンテナに対し、情報のリクエストを行います。sendメソッドの引数にはコールバック関数を指定します。

 サンプルコードでは、その場で匿名関数としてコールバック関数を定義しています。

5. リクエストの結果をコールバック関数で処理

 OpenSocialコンテナでリクエストが処理されると、sendメソッドの引数に指定したコールバック関数に結果がDataResponseというオブジェクトとして渡されます。このDataResponseオブジェクトには、DataRequestオブジェクトに指定したリクエストに対応する結果がResponseItemというオブジェクトとして複数格納されており、それぞれは3.でリクエストごとに指定した名前で呼び出すことができます。

 サンプルコードではリクエスト時に指定したviewerという名前で結果を取得しています。

 以上がDataRequestオブジェクトを使ったリクエストの大まかな流れとなります。このうち、2.のリクエストの作成と、5.のコールバック関数での処理の部分が、リクエストの種類ごとに異なっていきます。

newFetchPersonRequestメソッドについて

 newFetchPersonRequestメソッドは個人の情報を取得するためのリクエストを作成します。

 DataRequestオブジェクトの各種リクエストを作成するメソッドは、作成時にオプションを指定することができます。newFetchPersonRequestメソッドの場合は2つの引数でオプションを指定します。

 メソッドの第1引数には、個人を特定するためのPersonIDというIDを指定します。このPersonIDは個人に紐付けられた不変のIDです。

 PersonIDはOpenSocial APIの中ではopensocial.IdSpec.PersonIdクラスとして定義されています。このクラスには以下の2つのフィールドが存在します。

opensocial.IdSpec.PersonIdクラスのフィールド
フィールド名 概要
opensocial.IdSpec.PersonId.OWNER OpenSocialアプリケーションのOWNERを指すPersonID
opensocial.IdSpec.PersonId.VIEWER OpenSocialアプリケーションのVIEWERを指すPersonID

 これらのフィールドを用いて、OWNER・VIEWERの情報を取得するリクエストを作成することができます。

 また、友達の情報を取得した場合には、それぞれの個人を特定するためのPersonIDが結果として返ってきますので、そこから個人の情報を取得することもできます。

 newFetchPersonRequestメソッドの第2引数には、パラメータ(名前と値のペア)を複数格納した連想配列を追加パラメータとして指定します。第2引数は省略することもできます。

 パラメータとして扱える項目は、opensocial.DataRequest.PeopleRequestFieldsクラスのフィールドとして定義されています。なお、このクラスでは個人の情報を取得する際のパラメータだけでなく、次回説明する友達の情報を取得する場合のパラメータも定義されています。PeopleRequestFieldsクラスの多くのフィールドは、友達の情報を取得する場合に使用し、newFetchPersonRequestメソッドでは、PROFILE_DETAILSフィールドのみを使用します。他のフィールドについては後述します。

 PROFILE_DETAILSパラメータは、デフォルトで取得できる情報以外のフィールドを取得する場合に設定します。取得できるフィールドはopensocial.Person.Fieldで定義されています。これらのフィールド以外にも、OpenSocialコンテナごとに取得可能なフィールドが定義されている場合があります。以下にmixiで取得できるフィールド一覧を示します。

mixiで取得できるソーシャル情報の一覧
項目 デフォルトで取得 指定する定数
ID opensocial.Person.Field.ID
ニックネーム opensocial.Person.Field.NICKNAME
プロフィール写真のURL opensocial.Person.Field.THUMBNAIL_URL
プロフィールURL × opensocial.Person.Field.PROFILE_URL
現住所(県のみ) × opensocial.Person.Field.ADDRESSES
年齢 × opensocial.Person.Field.AGE
生年月日 × opensocial.Person.Field.DATE_OF_BIRTH
性別 × opensocial.Person.Field.GENDER
血液型 × mixi.PersonField.BLOOD_TYPE(mixiの独自拡張)
アプリケーションをインストールしているかどうか × opensocial.Person.Field.HAS_APP

 表にも示したとおり、mixiアプリでは、デフォルトでID(先ほど紹介したPersonID)、ニックネーム、プロフィール写真のURLを取得します。それ以外の情報が必要な場合には、PROFILE_DETAILパラメータを設定する必要があります。

次のページ
まとめ

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

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/4488 2009/11/04 14:00

イベント

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

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

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

メールバックナンバー