mixiアプリ/日記6
アプリの登録者数遷移
アプリがカテゴリ掲載されて、露出が増えた途端に私のアプリの登録者数はどんどん増加していきました。これはおそらくアプリのページの新着一覧に掲載されていてとても目立っていたからだと思います。しばらくして新しいアプリが追加され、新着一覧から追い出されるとやはり増加ペースはみるみるうちに下がっていきました。
もしもmixiアプリの宣伝を戦略的に考えるのであれば、新着アプリ一覧への掲載は無名のアプリが目立てる最初で最後のチャンスかもしれませんので、有効に活用するのがよいかもしれませんね。アプリは毎日追加されるわけではないので、カテゴリ掲載審査をパスするタイミングによっては、しばらく新着一覧の上の方に掲載され続けるなんてこともありそうです。あとは目を引く画面写真やタイトルのアプリは、新着一覧に一緒に載っている他のアプリよりも、登録者の増加数が多いように思いました。やっぱり最初のツカミが大事なんですね。私のアプリは地味なので、細々と登録者が増えていけばそれでいいなと思ってます。
マイミクのプロフィールをもっと表示させたい
var req = opensocial.newDataRequest();
var ip = {};
ip[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;
ip[opensocial.IdSpec.Field.GROUP_ID] = "FRIENDS";
var idSpec = opensocial.newIdSpec(ip);
var dp = {};
dp[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] = [
opensocial.Person.Field.PROFILE_URL
];
req.add(req.newFetchPeopleRequest(idSpec,dp),"friends");
これは前回のマイミクのプロフィールデータ要求を伝言係に頼む部分のスクリプトです。この伝言を頼んだ結果、20件のマイミクのプロフィール情報が持ちかえられました。マイミクさんは各ユーザ平均して20〜30人いるらしいので、多くの人にとってこれではすべてのマイミクの情報を取得できていないことになります。21番目以降のマイミクを取得する方法は、上のスクリプトでいうところの変数dpに設定してやればよいとのことです。
dp[opensocial.DataRequest.PeopleRequestFields.MAX] = 20;
dp[opensocial.DataRequest.PeopleRequestFields.FIRST] = 20;
newFetchPeopleRequestメソッドの引数「idSpec」と「dp」は、それぞれ「誰の」情報が欲しいのかと「どんな」情報が欲しいのかを定義しているデータです。PeopleRequestFields.MAXで取得したい情報の最大件数を、PeopleRequestFields.FIRSTで何件目のデータから取得したいのかを指定しています。
最大件数は指定しないと標準で20件になるようです。これを9999に設定すれば、一気に9999人のマイミク情報が取得できますので、回りくどい処理を書かなくて済みそうですが、mixiのリソースを無駄に圧迫することにもなるので推奨されません。世間にはmixiアプリ開発用のツールがあって、標準で一度に大量の要求をするように設計されているものもあるらしいのですが、そういうことはしないで欲しいとmixiのどこかのページに書いてあったので、マナー違反なのでしょう。要求は、アプリが一度に表示する範囲で行うのがよいでしょうし、一度に大量の要求を行わないような画面設計を心掛けるのがmixiさんに優しいと思います。
私のアプリではセレクトボックスにマイミク一覧を入れる設計だったので、20件ずつ表示するのも煩わしいなと思い、「20人追加する」ボタンというのを用意して、押されるたびにセレクトボックスにマイミクさんの名前が20人ずつ増えるような仕組みにしてみました。
var currentFriendsOffset = 0; // 何番目まで表示しているか記録する変数
var FetchMax = 20; // 最大取得件数
var TotalFriendsNumber = 0; // マイミクの数を後で記録する変数
function click() {
// 「20人追加する」ボタンが押されたときに呼ばれる関数
var req = opensocial.newDataRequest();
var ip = {};
ip[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;
ip[opensocial.IdSpec.Field.GROUP_ID] = "FRIENDS";
var idSpec = opensocial.newIdSpec(ip);
var dp = {};
dp[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] = [
opensocial.Person.Field.PROFILE_URL
];
dp[opensocial.DataRequest.PeopleRequestFields.MAX] = FetchMax;
dp[opensocial.DataRequest.PeopleRequestFields.FIRST] = currentFriendsOffset;
req.add(req.newFetchPeopleRequest(idSpec,dp),"friends");
req.send(function(data) {
if (data.hadError()) {
//エラー処理
} else {
var friends = data.get("friends").getData();
friends.each(function(friend) {
//マイミク情報の追加表示処理
});
currentFriendsOffset += FetchMax;
TotalFriendsNumber = friends.getTotalSize();
if (TotalFriendsNumber<=currentFriendsOffset) {
//マイミク情報を全部取得したときの処理
}
}
});
}
取得されたマイミク情報の中には、マイミクが全部で何人いるのかという情報もあるので、getTotalSizeメソッドでその数を記録し、現在何人目までの情報を読み込んだのかと比較することができます。私のアプリでは全員の情報を既に読み込み済みのようであれば、「20人追加する」ボタンも不要なので消してやることにしました。
これでおよそ自分のやりたいことはできたので、この辺でmixiの運営さんにカテゴリ登録をお願いしてみましたところ、迅速なご対応をいただき、晴れてアプリが公開されました。この段階でアプリ制作については満足したので、しばらく自分のアプリがどんな風に使われているのかを眺めていると、改善点がみえてきて、また制作意欲が湧いてきました。登録者が増えると評価機能によってアプリへの評価がつくので、それも開発の動機につながることがあると思います。私は「時間の無駄」という評価をいただいてしまったときは、しばらく沈んでしまいましたけれども。フリーソフトやシェアウェアを作っていた頃にも、メールでいろいろなご意見をいただいたこともあります。それと同じ感覚で真摯に受け止めていきたいと思います。