mixiアプリ環境下でのgadgets.Prefs

8 views
Skip to first unread message

spicebox 神部

unread,
Nov 22, 2009, 6:03:51 AM11/22/09
to opensoci...@googlegroups.com
神部です。

Preference - opensocial-jquery
http://code.google.com/p/opensocial-jquery/wiki/Preference

こちらを参考に、mixiアプリで次のようなコードを使って
gadget.Prefsにデータを保存しようとしました。

これ自体はうまく動作しており、ボタンを押すたびに
保存されている値が変わるのですが、アプリの画面を
リロードすると保存した値が消えてしまいます。
gadgets.Prefsってそもそもそういったものなんでしょうか?

1 : jQuery(function($) {
2 :
3 : showmood();
4 :
5 : $("#happy").click(function(){
6 : $.pref("mood","happy");
7 : showmood();
8 : });
9 : $("#normal").click(function(){
10 : $.pref("mood","normal");
11 : showmood();
12 : });
13 : $("#sad").click(function(){
14 : $.pref("mood","sad");
15 : showmood();
16 : });
17 :
18 : function showmood(){
19 : var mood = $.pref("mood");
20 : $("#mood").html(mood);
21 : }
22 :
23 : });

ちなみに、呼び出し側のGadget XMLはこんな感じです。

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="fetching friends information">
<Require feature="opensocial-0.8" />
<Require feature="setprefs" />
</ModulePrefs>
<Content type="home" view="home,profile">
<![CDATA[
自分のホームとプロフィールページに表示されるビューです。
]]>
</Content>
<Content type="html" view="canvas">
<![CDATA[
<link type="text/css" rel="stylesheet"
href="http://example.com/gadgetsprefs.css" />
<script type="text/javascript"
src="http://example.com//opensocial-jquery.min.js"></script>
<script type="text/javascript"
src="http://example.com/gadgetsprefs.js"></script>
<div id="main">gadhets.Prefsを使ったユーザ設定の保存と取得
<div><span id="mood"></div>
<br>
<input type="button" id="happy" value="すごくハッピー">
<input type="button" id="normal" value="まあまあ普通">
<input type="button" id="sad" value="ちょっと悲しい">
</div>
]]>
</Content>
</Module>

--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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,
Nov 22, 2009, 7:03:44 PM11/22/09
to OpenSocial jQuery Discussion
おはようございます。なかじまんです。

mixi で UserPref が使えるようになったのですね!?

と思い、mixi Developer Center を見てみましたが、見つかりませんでした。
http://developer.mixi.co.jp/

ので、gooホームや iGoogle での条件でお答えします。

gooホームも iGoogle も、ガジェット XML 内で定義した UserPref に対して
のみ setprefs で永続化を許可しています。つまり、ガジェットで事前に意図
しない UserPref は永続化できないということです。

> これ自体はうまく動作しており、ボタンを押すたびに
> 保存されている値が変わるのですが、アプリの画面を
> リロードすると保存した値が消えてしまいます。
> gadgets.Prefsってそもそもそういったものなんでしょうか?

gadgets.Prefs は JavaScript 内のメモリ内で値を保持します。コンテナ側で
永続化するかどうかは、また別のはなしになります。

On Nov 22, 8:03 pm, spicebox 神部 <ka...@spicebox.co.jp> wrote:
> 神部です。
>
> Preference - opensocial-jqueryhttp://code.google.com/p/opensocial-jquery/wiki/Preference

spicebox 神部

unread,
Nov 23, 2009, 12:11:48 AM11/23/09
to opensoci...@googlegroups.com
なかじまんさん

> おはようございます。なかじまんです。
>
> mixi で UserPref が使えるようになったのですね!?
>
> と思い、mixi Developer Center を見てみましたが、見つかりませんでした。
> http://developer.mixi.co.jp/
>
> ので、gooホームや iGoogle での条件でお答えします。

ありがとうございます。こちらをmixiアプリで
聞いた理由に関しては、大分前にmixiのサポートにUserPrefに
ついて聞いた際に返信をいただいた内容がこのようなものだったので、
てっきりgadgets.PrefsがUserPrefの代替になるものかと
勘違いしてしまいました。

※UserPrefの代替としてgadgets.Prefsが提示されたように読めた

(mixiからの夏頃の回答)
==========================================
GadgetXMLのUserPrefは未実装です。

ただし、gadgets.Prefsを使ってJavaScriptから値を設定/
取得することはできます。現在の対応状況については、
以下のようになっています。

getArray 未実装
getBool 実装済み
getCountry 常に ALL を返す
getFloat 実装済み
getInt 実装済み
getLang 常に ALL を返す
getModuleId 常に 0 を返す
getMsg 未実装
getString 実装済み
set 実装済み
setArray 未実装
===========================================

でもそれは取り違えだったというわけですね。

ついでにいえば、こちら

OpenSocialを利用してガジェットを作ろう!:第5回 アプリデータによる情報
の永続化と共有|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/opensocial/0005

あたりを読んでUserPrefタグとgadgets.Prefsは
もしかしたら別個に利用出来るものかと思っていたのですが、
根っこのストレージが同じで片方で許可されていなければ
どちらも永続化は不可能ということでしょうかね。

> gooホームも iGoogle も、ガジェット XML 内で定義した UserPref に対して
> のみ setprefs で永続化を許可しています。つまり、ガジェットで事前に意図
> しない UserPref は永続化できないということです。
>
>> これ自体はうまく動作しており、ボタンを押すたびに
>> 保存されている値が変わるのですが、アプリの画面を
>> リロードすると保存した値が消えてしまいます。
>> gadgets.Prefsってそもそもそういったものなんでしょうか?
>
> gadgets.Prefs は JavaScript 内のメモリ内で値を保持します。コンテナ側で
> 永続化するかどうかは、また別のはなしになります。

そうなんですね、じゃあ、話を総合するとテンポラリに
値をget/setはできるけど次回利用時のための永続化は
できないってことのようですね^^;

もしかしたらopensocial-jqueryを利用する際に、
なにかの初期化の方法が間違っているのかなと思い、
お伺いさせていただいた次第だったのですが、
ぜんぜんお角違いだったようでとても恥ずかしいです。

うーん、じゃあこれはなんのために実装されているんでしょう。
実装しかけのまま、というセンが濃厚ですが、実は現状でも
永続化をできる隠しオプションがあるとかか、あるいは将来の
UserPrefs実装に向けてインターフェースだけは整えてある、と
いう感じなんでしょうかね・・・

ひとまずは実用的には利用できないようなので、将来に期待、
ということにし、いましばらくは外部サーバへの永続化を
メインに、他のユーザにアクセスされてもよい情報は
PersistentAPIで利用するようにしたいと思います。

改めましてこちら、誤解を元にお伺いしてしまい
まことに申し訳ありませんでした。

--
神部
Reply all
Reply to author
Forward
0 new messages