トップ » 技術記事 » OpenSocialを始めよう(6) - アクティビティの作成

OpenSocialを始めよう(6) - アクティビティの作成

タグ: Ajax Google OpenSocial

今回は、OpenSocial APIを用いたアクティビティの操作について学びます。
アクティビティとはSNSのプロフィール画面に表示される小さなメッセージのことで、多くは「ユーザの更新情報」として扱われ、友人からもメッセージを見ることができるのが普通です。

アクティビティとは

アクティビティとは、SNSのプロフィール画面に表示される小さなメッセージのことです。Orkutでは、プロフィール画面において以下のように表示されます。

activities.png

OpenSocial APIを用いると、この部分に表示されるメッセージをプログラムによって生成することができます。
また、一人のユーザから発信されたアクティビティの「流れ」のことを、「アクティビティ・ストリーム」と呼びます。その人物がSNS上で行った活動の「履歴」であると言えます。
アクティビティ(ストリーム)は、設定にもよりますが、基本的には友達からも参照できるので、あまりへんてこなメッセージを生成するアプリはいやがられてしまうでしょう(^^; そのため、Orkutではアプリケーションの設定でアクティビティをオフにすることができますし、スパムを防ぐために、(サンドボックスではない)本番環境では「1日3件まで」と言う制限が課せられることになっています。

このように、簡単なメッセージを表示するだけの機能の割に制限がいろいろときついアクティビティですが、「ユーザの友達の目に触れる」と言うのは非常に重要です。なぜなら、ユーザの友達に対してアプリケーションの宣伝を行うことができる、と言うことに繋がるからです。バイラルマーケティングと言う広告手法が流行りですが、それを実践するためにも重要な機能だと言えるのではないでしょうか。

では、アクティビティを追加するためのプログラミング手法を学んでいくとしましょう。

アクティビティ操作の基本

では、実際にアクティビティにメッセージを追加するサンプルを作ってみましょう。以下に示すサンプルは、テキストフィールドに入力されたメッセージをそのままアクティビティとして追加するものです。

sample.png

では、このサンプルのソースコードを見ていきましょう。ポイントは以下で解説します。

    <?xml version="1.0" encoding="UTF-8" ?>
    <Module>
      <ModulePrefs title="Hakkaku Example 6-1">
        <Require feature="opensocial-0.7" />
      </ModulePrefs>
      <Content type="html">
        <![CDATA[
        <script type="text/javascript">
          function submitActivity() {
            // (1) アクティビティオブジェクトを作成
            var params = {};
            params[opensocial.Activity.Field.TITLE] = document.getElementById("message").value;
            var activity = opensocial.newActivity(params);
            // (2) アクティビティを送信
            opensocial.requestCreateActivity(
              activity,
              opensocial.CreateActivityPriority.HIGH,
              onResponse);
          }
         // (3) アクティビティ送信の結果を取得
          function onResponse(response) {
            if (response.hadError()) {
              alert(response.getErrorCode() + ":" + response.getErrorMessage());
            } else {
              alert("Success!");
            }
          }
        </script>
        アクティビティを入力: <input type="text" id="message">
        <button onclick="submitActivity()">送信</button>
        ]]>
      </Content>
    </Module>

(1) アクティビティを送信するには、まずアクティビティオブジェクト(opensocial.Activity)を作成します。

    // (1) アクティビティオブジェクトを作成
    var params = {};
    params[opensocial.Activity.Field.TITLE] = document.getElementById("message").value;
    var activity = opensocial.newActivity(params);

アクティビティを作成するためのメソッドは、opensocial.newActivity()メソッドです。このメソッドは引数を一つだけとり、アクティビティに関する各種パラメータを指定することができます。
パラメータのキーは、opensocial.Activity.Fieldクラスで宣言されている定数を使用します。
同クラス内の定数には、以下のようなものがあります。

定数名 説明
APP_ID アプリケーションのID
BODY メッセージ本文
BODY_ID メッセージ本文のテンプレートID
EXTERNAL_ID アプリによって生成されるオプショナルなID
ID このアクティビティを表すID
MEDIA_ITEMS メディアアイテム
POSTED_TIME 投稿日時
PRIORITY 優先順位
STREAM_FAVICON_URL ストリームのfaviconを表すURL
STREAM_SOURCE_URL ストリームのソースURL
STREAM_TITLE ストリームのタイトル
STREAM_URL ストリームのURL
TEMPLATE_PARAMS テンプレートの文字列置換を行うパラメータ
TITLE タイトル
TITLE_ID タイトルのテンプレートID
URL このアクティビティを表すURL
USER_ID アクティビティが対象としているユーザのID

これらの定数の中で、現在のOrkutが対応していると確認できたのは「TITLE」と「BODY」だけです。ちょっとさみしい気もしますが、いずれ対応するのは確実ですので、気長に待つとしましょう。

(2) アクティビティを送信するためのメソッドが、opensocial.requestCreateActivity()メソッドです。

    // (2) アクティビティを送信
    opensocial.requestCreateActivity(
      activity,
      opensocial.CreateActivityPriority.HIGH,
      onResponse);

このメソッドは引数を三つとります。第一引数はアクティビティオブジェクト、次の引数が優先度、最後が非同期処理の結果を受け取るためのコールバック関数です。

優先度の指定には、opensocial.CreateActivityPriorityクラスの定数であるHIGHとLOWを使用します。ドキュメントによると、HIGHを指定した場合は、アプリがアクティビティを作成することを許可していなかった場合も、ユーザにアクティビティを作成する許可を求めることができます。LOWの場合は、許可されていない場合はアクティビティを作成しません。・・・となっているのですが、現在のOrkutではユーザの設定が常に優先されてしまいます。

(3) アクティビティを作成した結果を受け取っています。

    // (3) アクティビティ送信の結果を取得
    function onResponse(response) {
      if (response.hadError()) {
        alert(response.getErrorCode() + ":" + response.getErrorMessage());
      } else {
        alert("Success!");
      }
    }

requestCreateActivity()メソッドは、処理が非同期で行われるのですぐリターンします。結果を受け取るには、関数の呼び出し時にコールバック関数を指定する必要があります。コールバック関数は、opensocial.ResponseItemクラスのオブジェクトを引数にとります。

まとめ

今回は、アクティビティの基本的な作成方法について学びました。
次回は、さらに進んだアクティビティ作成方法について学びたいと思います。

Series Navigation«友達のデータを取得するアクティビティ応用プログラミング»

執筆者紹介

shiraishi

shiraishi

最近書いてばっかりいます。 眠いとおんなじことばかり書きます。 そして、大概眠いです。

TrackBack URL :