コミュニティ情報の取得 (=mixi.newFetchCommunityRequest) を実装してみました。

30 views
Skip to first unread message

なかじまん

unread,
Nov 30, 2009, 5:50:39 PM11/30/09
to OpenSocial jQuery Discussion
おはようございます。なかじまんです。

コミュニティ情報の取得 (=mixi.newFetchCommunityRequest) を実装してみました。

ソースコードと実例は、次の Changes から見てください。
http://code.google.com/p/opensocial-jquery/source/detail?r=637

抜粋すると、次のような感じです。@rkanbe さん提案のインタフェースとしています。

$.getData('/communities/@viewer/@self').next(function(communities) {
$.each(communities, function(i, community) {
console.info(community.id);
console.info(community.userId);
console.info(community.url);
console.info(community.name);
console.info(community.thumbnailUrl);
});
console.info(communities.totalResults);
});

いくつか気になり、決めかねている個所があります。情報や意見を頂きたいです。

(1) mixi.Community.Field.ID

{userId}/{community} という形式のようです。現在のソースコードでは、/ で分解
して、それぞれ community.userId と community.id で表現しています。元々の
形式にどのような意味があるのか。また、元々の形式のまま使うことがあるのか
が気になっています。

(2) コミュニティのURL

上記と関連して、mixi のレスポンスには、コミュニティのURLが含まれなかった
ため、 community.id を使って community.url を勝手に付与しています。
'http://mixi.jp/view_community.pl?' + jQuery.param({ id: id[1] });
↑というURLルールは、すべてのコミュニティに通用するものでしょうか?

(3) ページングの有無
mixi.newFetchCommunityRequest はページングに対応していないようです。
もし対応しているなら、許容するリクエストパラメータを知りたいです。また、レス
ポンスがどうなるかも知りたいです。

* リクエストの startIndex や count は使えない?
* レスポンスに含むコミュニティ数に上限はあるのか? 20件までとか?
* レスポンスに含まれる totalSize は、参加コミュニティ数を表すと理解してよい?

spicebox 神部

unread,
Dec 1, 2009, 12:49:33 PM12/1/09
to opensoci...@googlegroups.com
神部です。

> コミュニティ情報の取得 (=mixi.newFetchCommunityRequest) を実装してみました。

おお、いいですね!

> いくつか気になり、決めかねている個所があります。情報や意見を頂きたいです。
>
> (1) mixi.Community.Field.ID
>
> {userId}/{community} という形式のようです。現在のソースコードでは、/ で分解
> して、それぞれ community.userId と community.id で表現しています。元々の
> 形式にどのような意味があるのか。また、元々の形式のまま使うことがあるのか
> が気になっています。

独自実装なので、このユーザについてのコミュニティ・・・と考えちゃったんで
すかね。でも、それは friends でも同じ事で、Aさんの友達のCさんとBさんの
友達のCさんが違う人ではないので、この書き方はナンセンスだと思います。

例えば「Aさんが管理人をやっているコミュニティ」とかなら、
上記の書式でかえってきても良さそうですが・・・

とあえず元の状態のままである必然性は、私はあまり感じません。
(いざとなれば組立てればいいし)

> (2) コミュニティのURL
>
> 上記と関連して、mixi のレスポンスには、コミュニティのURLが含まれなかった
> ため、 community.id を使って community.url を勝手に付与しています。
> 'http://mixi.jp/view_community.pl?' + jQuery.param({ id: id[1] });
> ↑というURLルールは、すべてのコミュニティに通用するものでしょうか?

基本的には、gooみたいにハッシュ値っぽいものを使っていても、URLの一部に
コミュニティIDが入るのが一般的だと思います。mixiの場合将来にわたって
コミュニティを示すURLが変わるというリスクが低そうなら、あらかじめ
組み上げ済みのURLを渡してあげるのはユーザに親切だと思います。

> (3) ページングの有無
> mixi.newFetchCommunityRequest はページングに対応していないようです。
> もし対応しているなら、許容するリクエストパラメータを知りたいです。また、レス
> ポンスがどうなるかも知りたいです。
>
> * リクエストの startIndex や count は使えない?
> * レスポンスに含むコミュニティ数に上限はあるのか? 20件までとか?
> * レスポンスに含まれる totalSize は、参加コミュニティ数を表すと理解してよい?

これは「あるべきものがない」感じですね。おそらく、Peopleクラス?で
friendsを取得するコードをかなりの部分流用していると思われますので

・ページング要件が欲しい(上限はたぶん20件?)
・totalSizeの変数名のおかしさ

あたりをmixi事業本部プラットフォームチームにがんがん
投げていくのがいいかもしれませんね。署名ならしますよ!

とりいそぎ~。

--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Web のサービス続々リリース中!
http://labs.spicebox.jp/
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
スパイスボックスラボラトリ
神部竜二(mobile: 08059337029)
Ryuji Kanbe <ka...@spicebox.co.jp>

spicebox, inc. / 株式会社スパイスボックス
150-6016
渋谷区恵比寿4-20-3 YGPタワー16F
恵比寿ガーデンプレイス郵便局 私書箱5003
Tel 03-5449-7488 / Fax 03-5449-7487
http://www.spicebox.co.jp/
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

なかじまん

unread,
Dec 4, 2009, 8:22:39 AM12/4/09
to OpenSocial jQuery Discussion
こんばんは。なかじまんです。

>> (1) mixi.Community.Field.ID
> とあえず元の状態のままである必然性は、私はあまり感じません。
> (いざとなれば組立てればいいし)

ありがとうございます。
レスポンスに id と userId というプロパティを含めておきます。

>> (2) コミュニティのURL
> コミュニティを示すURLが変わるというリスクが低そうなら、あらかじめ
> 組み上げ済みのURLを渡してあげるのはユーザに親切だと思います。

よっぽどのことがない限り、URL が変わるとも思えないので、
レスポンスに(勝手に)組み立てた URL を含めておきます。
デバッグにも役立つでしょう。

>> (3) ページングの有無
> ・ページング要件が欲しい(上限はたぶん20件?)
> ・totalSizeの変数名のおかしさ

mixi から回答を貰いました。
公にしてもよいと了解をとったので、お伝えします。

* ページングは対応していない (検討中)
* レスポンスは 10 件
* Collection.getTotalSize は、参加コミュニティ数

だそうです。なので 10 超のコミュニティに参加しているようなユーザの
ときは、少し困ったことになりますかね。

おりおり

unread,
Dec 10, 2009, 11:07:24 AM12/10/09
to OpenSocial jQuery Discussion
こんばんは。
初めまして、おりおりという者です。

最近、mixiのコミュ一覧取得APIを利用しようと思って
mixi developers のサンプルコードをそのまま動かしてみました。

結果ですが、対象ユーザーが53件のコミュニティにしている状態で、
50件のコミュニティ情報が取得できました。
どうやら、現状のAPIでは、50件のコミュニティ情報を取得できるようです。
50件であること自体は問題ないのですが、既になかじまんさんがmixiから
回答を頂いているように、やはりページング機能が無いので、
50件を超えるユーザーのコミュニティ一覧(全件)は取得できませんね……。

個人的には、ユーザーのコミュの所属の有無でパーミッションを取る
mixiアプリを今作っているので、非常に悩みどころです。

企業ではなく、個人で動いているので、mixiへの技術的な問い合わせが
できないので、万事休すな感じです……。

直接的に、OpenSocial-jQueryの話ではなく、すみません。

以下、コードです。
var params = {};
//2件に絞って結果を期待してみる。しかし、効果なし。
params[opensocial.DataRequest.PeopleRequestFields.MAX] = 2;
params[opensocial.DataRequest.PeopleRequestFields.FIRST] = 0;
var req = opensocial.newDataRequest();
req.add(mixi.newFetchCommunityRequest
(opensocial.IdSpec.PersonId.VIEWER, params), "communities");
req.send(function(data) {
var communities = data.get("communities").getData();
var loop=0;
var offset = communities.getOffset();
var total = communities.getTotalSize();
var size = communities.size();
var msg = total + "件中 " + offset + " - " + (offset + size) + " 件目";
alert("msg : "+msg);
communities.each(
function(community) {
var id = community.getId();
var name = community.getName();
var thumbnail = community.getField
(mixi.Community.Field.THUMBNAIL_URL);
var profile_url = community.getField
(mixi.Community.Field.PROFILE_URL);
$("#result").append("<li>"+loop+" | "+id+" | "+name+" | "+thumbnail
+"|"+profile_url+"</li>");
loop++;
});
});
> > > 'http://mixi.jp/view_community.pl?'+jQuery.param({ id: id[1] });
> > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

なかじまん

unread,
Dec 15, 2009, 6:00:42 PM12/15/09
to OpenSocial jQuery Discussion
おはようございます。なかじまんです。

> どうやら、現状のAPIでは、50件のコミュニティ情報を取得できるようです。
> 50件であること自体は問題ないのですが、既になかじまんさんがmixiから
> 回答を頂いているように、やはりページング機能が無いので、
> 50件を超えるユーザーのコミュニティ一覧(全件)は取得できませんね……。

@yoichiro こっそりと、newFetchCommunityRequestのページング対応と、
getErrorCode()とgetErrorMessage()の改善をしてあります~。
http://twitter.com/yoichiro/status/6694188214

だそうです。

おりおり

unread,
Dec 16, 2009, 2:24:16 AM12/16/09
to OpenSocial jQuery Discussion
こんにちは。
おりおりです。

> @yoichiro こっそりと、newFetchCommunityRequestのページング対応と、
> getErrorCode()とgetErrorMessage()の改善をしてあります~。http://twitter.com/yoichiro/status/6694188214
このつぶやき、たまたま見つけていました。ありがたかったので、さっそくテストして見ましたが、問題なくページングできているような感じでした。

@yoichiroさんから返信貰ったので、返信しておきました!
http://twitter.com/ori3/status/6723612394

ありがとうございました!
> > > - 引用テキストを表示 -- 引用テキストを表示しない -
>
> - 引用テキストを表示 -
Reply all
Reply to author
Forward
0 new messages