mixi Developer Center (ミクシィ デベロッパーセンター)

mixiアプリ

mixiアプリ » mixiアプリ for PC » mixiアプリを作ってみよう » アクティビティを送信してみよう

アクティビティを送信してみよう

mixiアプリにおいて、マイミクとのコミュニケーションは非常に重要です。マイミクがmixiアプリでどのように楽しんでいるのか、これを知りたいと思うことがmixiアプリを繰り返し利用することの大きなモチベーションとなるのです。

OpenSocialでは、更新情報のことをアクティビティと呼んでいます。mixiアプリにおけるアクティビティの利用価値は、API全体の中でも非常に高く位置づけられています。OpenSocial JavaScript APIでは、OpenSocialアプリケーション内からアクティビティを作成し公開する機能を規定しています。mixiアプリでは、画像を含むアクティビティを作成することも可能です。画像の利用によって、アクティビティはよりマイミクの目に留まることになるでしょう。

activities
(画像は縦76px 横76pxです)

アクティビティの作成と公開は、OpenSocialアプリケーションを実行しているユーザ(すなわちViewer)に対して行われます。つまり、作成されたアクティビティの持ち主は、mixiアプリを実行したユーザということになります。作成および公開されたアクティビティは、例えばそのユーザのプロフィール画面にあるフィード一覧に掲載され、さらにそのユーザのマイミクのページにおいても掲載されることになります。

アクティビティの送信

OpenSocial JavaScript APIによるアクティビティの送信は、以下の手順が必要となります。

  • アクティビティの情報を持つopensocial.Activityオブジェクトを生成する。
  • opensocial.requestCreateActivity()関数を使って、アクティビティの作成をサーバに依頼する。

もし画像を伴うアクティビティを作成したい場合は、Activityオブジェクトを生成する際に、opensocial.MediaItemオブジェクトを生成することも必要となります。

opensocial.Activityオブジェクトを生成する

アクティビティを作成し公開するために、まずはopensocial.Activityオブジェクトを生成します。このActivityオブジェクトに、具体的なアクティビティの情報を保持させます。以下のリストは、文字列のみを持つシンプルなActivityオブジェクトを作成する例です。アクティビティの文字列は、opensocial.Activity.Field.TITLEにて指定します。

var params = {};
params[opensocial.Activity.Field.TITLE] = "Hello!";
var activity = opensocial.newActivity(params);

上記に加えて、画像を伴うアクティビティも作成することが可能です。その場合は、opensocial.MediaItemオブジェクトを作成します。以下のリストは、画像を伴うアクティビティの作成例です。MediaItemオブジェクトは、opensocial.newMediaItem()関数を使って生成することができます。この際に、MIME Typeと画像のURL、そして画像を示すパラメータを引数として渡します。

var mediaItem = opensocial.newMediaItem("image/gif", "http://your.server.host/image.gif");
var ap = {};
ap[opensocial.Activity.Field.TITLE] = "Hello!";
ap[opensocial.Activity.Field.MEDIA_ITEMS] = [mediaItem];
var activity = opensocial.newActivity(ap);

MediaItemオブジェクトは、opensocial.Activity.Field.MEDIA_ITEMSフィールドとして配列で指定します。mixiアプリでは、3個までMediaItemオブジェクトを配列に指定することが可能です。

MediaItemオブジェクトとして指定する画像は、横76px、縦76pxの画像を指定するようにしてください。それ以外のサイズの画像が指定された場合に関しても、76×76の大きさで表示されることになります。

アクティビティの作成と公開をサーバに依頼する

生成したActivityオブジェクトは、このままでは何も起きません。サーバに対して、アクティビティの生成を改めて依頼することが必要となります。そのために、opensocial.requestCreateActivity()関数を使用します。以下のリストは、作成されたActivity オブジェクトの内容を元に、アクティビティの作成と公開をサーバに依頼する例です。

var activity = ...;
opensocial.requestCreateActivity(
        activity, opensocial.CreateActivityPriority.HIGH, function(response) {
  if (response.hadError()) {
    var code = response.getErrorCode();
    // do something...
  } else {
    // do something...
  }
});

requestCreateActivity()関数の第1引数には、先ほど生成したActivityオブジェクトを指定します。第2引数に関しては、アクティビティの作成に関する優先度を指定することになっています。ただし、現在のmixiアプリではこの優先度をサポートしていませんので、 opensocial.CreateActivityPriority.HIGHを指定しておけば良いでしょう。

第3引数は、アクティビティの公開処理が終了した後に呼び出されるコールバック関数を指定します。コールバック関数の引数として、 opensocial.ResponseItemオブジェクトが指定されます。このオブジェクトのhadError()関数を使って、アクティビティが正常に作成および公開されたかどうかを確認するようにしましょう。

宛先指定のアクティビティの作成

mixiアプリが作成し公開するアクティビティのほとんどは、その内容に関係する人物が複数人となります。例えば「AさんのペットをBさんが撫でました」であれば、そのアクティビティの関係者は2名です。この場合、AさんやBさんは、このアクティビティが自分に関係するものであることを優先的に知りたくなるはずです。

mixiアプリの中からアクティビティを作成する際に、その関係者を2名まで指定することができます。これを「宛先指定のアクティビティの作成」と呼びます。そのためには、mixi.ActivitiyField.RECIPIENTSを利用します。

var user1 = ...; // 関係者その1のID
var user2 = ...; // 関係者その2のID
var params = {};
params[opensocial.Activity.Field.TITLE] = "Hello!";
params[mixi.ActivityField.RECIPIENTS] = [user1, user2];
var activity = opensocial.newActivity(params);

これにより作成されたアクティビティは、user1, user2で指定したユーザと関連付けられたことになります。関連付けられたユーザは、このアクティビティを「あなた関連」という欄にて優先的に知ることができます。

activity_recipients

RECIPIENTSの指定により、マイミクシィがアクティビティを閲覧できるだけでなく、その中から自分に関係するものがピックアップされて表示されます。mixiアプリを開発する上で、RECIPIENTSをうまく利用することで、よりマイミクシィ間のコラボレーションが促進されるでしょう。

アクティビティの表示範囲について

あるユーザAのマイミクシィがmixiアプリを使った結果送信されたアクティビティが、そのユーザAのページに掲載されるかどうかは、そのmixiアプリのステータスによって決まります。具体的には、以下の表となります。

ユーザAがアプリを所有している ユーザAがアプリを所有していない
開発中アプリ 掲載される 掲載されない
公開アプリ 掲載される 掲載される

アクティビティの遷移先の指定

送信するアクティビティをユーザがクリックした際のリンク先について、mixiアプリはいくつか指定を行うことができます。そのために、opensocial.Activity.Field.URLを利用します。これを指定しなかった場合は、アクティビティが送信された際の利用者をOwner IDとするアプリ画面(run_appli.pl)へのリンクとなります。これ以外に、mixiアプリは以下のカスタマイズを行うことが可能です。

  • 遷移先のページ – run_appli.plもしくはview_appli.pl(アプリ紹介画面)
  • mixiアプリ起動時に渡したいパラメータ – appParams

パラメータを指定できることで、特定のアクティビティからのmixiアプリ起動時に動きを変化させる、などの工夫を行うことができます。例えば選択されたアイテムのIDとその個数をアクティビティに含めてmixiアプリ起動時にそれを受け取りたい場合には、以下のように記述します。

var appId = ...; // アプリID
var data = {};
data[opensocial.Activity.Field.TITLE] = ...;
var params = {
    item_id: "12345",
    count: "3"
};
var escaped = gadgets.io.encodeValues({
    appParams: gadgets.json.stringify(params)
});
data[opensocial.Activity.Field.URL] = "http://mixi.jp/run_appli.pl?id=" + appId + "&" + escaped;
var activity = opensocial.newActivity(data);
opensocial.requestCreateActivity(
    activity,
    opensocial.CreateActivityPriority.HIGH,
    function(res) {...}
);

mixiアプリ起動時にパラメータを取得するには、以下のように記述します。これに加えて、Gadget XMLにを記述しておく必要があります。

var params = gadgets.views.getParams();
var itemId = params["item_id"];
var count = params["count"];
// do something...

もしアプリ画面ではなく、アプリ説明画面(view_appli.pl)に遷移させたい場合は、上記のURL内の”run_appli.pl”の箇所を”view_appli.pl”に変更してください。

URLとして、http://mixi.jp/以外のサイトや、view_appli.plおよびrun_appli.pl以外の画面、異なるアプリIDの指定を行うとエラーとなりますので、ご注意ください。

エラーコード

Activities APIの呼び出し時に、いくつか結果として得られる可能性があるエラーコードがあります。これらのエラーコードは、ResponseItemオブジェクトのgetErrorCode()関数を呼び出すことによって得ることが可能です。エラーコードの種別によって、適切な処理を行ってください。

エラーコード 発生する状況
400 (BAD_REQUEST) 不正なMediaItem指定、4つ以上のMediaItem指定、宛先の不正な指定、URLの不正な指定、認証情報が不正、取得対象IDが未指定
403 (FORBIDDEN) 投稿権限がない、セレクタ(@self, @sfriendsなど)が未指定
500 (INTERNAL_SERVER_ERROR) mixi側の内部エラー
503 (SERVICE_UNAVAILABLE) 規定制限以上の投稿

アクティビティ投稿に関する制限

アクティビティの投稿について、以下の制限があります。

  • アクティビティの投稿は「1分間に1回まで」です。1分以内に2回以上投稿を試みた場合は、503エラーとなります。
  • 一定時間内(現在は30分間隔)に投稿されたアクティビティに関して、ユーザに表示されるアクティビティは最後に投稿されたもののみとなります。既に一定時間内で投稿されたアクティビティに関しては表示されません。
  • 既にアクティビティを投稿した状態で再投稿を行った際は、エラーとならず再投稿の内容が有効となります。
  • 宛先指定(recipients)の有無に関わらず、上記の仕様が適用されます。

このページの上部へ