<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SNS開発者の雑記帳 &#187; OpenSocial</title>
	<atom:link href="http://www.synapz.jp/mrsy/tag/opensocial/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.synapz.jp/mrsy</link>
	<description></description>
	<lastBuildDate>Fri, 05 Mar 2010 02:11:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google Developer Day 2008 に参加</title>
		<link>http://www.synapz.jp/mrsy/2008/06/google-developer-day-2008/</link>
		<comments>http://www.synapz.jp/mrsy/2008/06/google-developer-day-2008/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 06:31:27 +0000</pubDate>
		<dc:creator>mrsy</dc:creator>
				<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[App Engine]]></category>
		<category><![CDATA[Gainer]]></category>
		<category><![CDATA[Gears]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.synapz.jp/mrsy/2008/06/12/post53/</guid>
		<description><![CDATA[


6/10にパシフィコ横浜で開催されたGoogle Developer Day 2008に参加してきました。
詳細なレポートは以下のサイトに詳しく掲載されています。

Google Developer Day 2008 レポート（前編）- WebOS Goodies
Google Developer Day 2008 Japan 基調講演 &#8211; 天使やカイザーと呼ばれて
Google Developer Day 2008 Japan [OpenSocial] &#8211; 天使やカイザーと呼ばれて


本エントリは、僕が参加したセッションについてのメモ書きと妄想です。


■ 基調講演
Androidの実機デモを見ることができた。
iPhoneさながらのマルチタッチUI。
アイコンやボタンはGNOMEっぽい。Webページのスクロール、拡大機能もiPhoneとほぼ同機能。しかしiPhoneのそれより動きが滑らかではなかったように思う。Google Mapのストリートビューはすばらしかった。Androidの加速度センサに反応して360度見回すことができる。バーチャルリアリティ！

ブラウザ上でGoogle Earth が見れるデモ。残念ながらWindows IE, Firefoxのみ対応。トラックを動かす簡単なデモには笑った。エベレストの上も走れるw

次にgainerに加速度センサーをつけ、Flashアプリでフライトシミュレータ。残念ながらデモが動作せず。


以下、妄想:
Android + Google Earth API + Gearsで、カーナビの機能を充足できるのではないか。Androidでデータ通信して地図情報を取得、Gearsで目的地までのルートをキャッシュする。圏外の場所でも車搭載の加速度センサとGearsによってキャッシュしてある地図データがあればルート表示は可能。
建造物の3DモデルはGoogle Skeckupでどんどん追加されているわけだし、常に地図は更新され続ける。
地図CD-ROMの買い替えやHDDの取り替えも不要だ。でもたまにAdSenseが表示されたりして。


■ Google App Engine
ゲストブックのようなものをゼロから作り上げるデモを行っていた。
TextMateでPythonコードをすんごいスピードで書いていく。
コーディング-&#62;localhostで確認-&#62;コーディングのサイクルが早く、あっという間に完成した。

興味深かったのはDatastoreAPIを用いたデータ永続化の方法。
SQLに良く似たGQLにてデータを操作する。しかしながらテーブルのJOINは未サポートとのこと。

Pythonのソースコードは思っていたより見やすい。
インデントによってブレース記号({})が省略できるためだろうか、無駄がない感じ。

localhostで確認した後、専用アップローダを用いて
Googleにアップロードする。コマンドラインでもできる。

さらに自動的にバージョン管理までやってくれる！
Subversionのように構成管理（タグ、ブランチ）もやってくれるかは不明だが、便利な機能だ。

さらにさらに、アプリケーション管理画面ではCPUの負荷状況、
データ転送量、メール送信数などなど、至れり尽くせり。

これが500万PV/月まで無料で使えるとなれば、
スタートアップ企業や週末プログラマの皆さんは飛びつくだろう。

課題はPythonしかサポートしていないこと。
Rubyのサポートは会場からも強い要望が出ていた。
中にはC#をサポートしてくれよ！と懇願していた方も。
個人的にはPHPをサポートしてくれたら爆発的に利用者が増えると思うが。

招待制から一般開放されたようなので、今後いじくり回したい。


■ OpenSocial
APIのバージョンが0.8に上がった。主な変更はRESTful APIのサポート。
これによってJavascript以外からも叩け、サーバ間でのデータ送受信が可能になった。

OpenSocialの主要な構成要素である、
HTML + Javascript + REST + OAuth がすべて出そろったわけだ。

コンテナ(SNSなどのソーシャルデータを提供する側)からどの情報を取得できるか(プロフィール情報、友達情報、アクティビティ情報)については、コンテナ側に任されている。

正直言って自分の中ではまだOpenSocialがブレイクするかどうか分からない。
というのは、海外のようにSNS内にアプリケーションが作れるという文化がまだ根付いていないためだ。
この業界以外の人に説明しても理解に苦しむのではないか。

Facebookも日本語化され、MySpaceもOpenSocial対応したおかげで徐々に普及していくのかな。
OpenPNEがOpenSocial対応になるらしいので起爆剤になるかも。

個人的にはOAuthの知識がないので、調査していきたい。


■ Mashup から Mapplets へ
Google Mapに様々な情報を追加していくことができるデモ。
例えばある地域を表示させる。その地図上に不動産情報を表示、過去の犯罪が起きた地域を表示、交通機関マップを表示・・のように。

そのようにGoogle Map上に付加機能を追加していくのがMappletsと呼ぶらしい。
MappletsはGadgetのようにHTML [...]]]></description>
			<content:encoded><![CDATA[<p>
<img alt="gdd.png" src="http://www.synapz.jp/blog/mrsy/2008/06/12/5.png" width="144" height="103" class="mt-image-left">
<br />
6/10にパシフィコ横浜で開催されたGoogle Developer Day 2008に参加してきました。<br />
詳細なレポートは以下のサイトに詳しく掲載されています。<br />
<ul>
<li><a href="http://webos-goodies.jp/archives/51345850.html" target="_blank">Google Developer Day 2008 レポート（前編）- WebOS Goodies</a></li>
<li><a href="http://www.eisbahn.jp/yoichiro/2008/06/google_developer_day_2008_japa_3.html" target="_blank">Google Developer Day 2008 Japan 基調講演 &#8211; 天使やカイザーと呼ばれて</a></li>
<li><a href="http://www.eisbahn.jp/yoichiro/2008/06/google_developer_day_2008_japa_4.html">Google Developer Day 2008 Japan [OpenSocial] &#8211; 天使やカイザーと呼ばれて</a></li>
</ul>
<br />
本エントリは、僕が参加したセッションについてのメモ書きと妄想です。<br />
<br />
<br />
<strong><big>■ 基調講演</big></strong><br />
Androidの実機デモを見ることができた。<br />
<a href="http://www.apple.com/jp/iphone/" target="_blank">iPhone</a>さながらのマルチタッチUI。<br />
アイコンやボタンは<a href="http://www.gnome.org/" target="_blank">GNOME</a>っぽい。Webページのスクロール、拡大機能もiPhoneとほぼ同機能。しかしiPhoneのそれより動きが滑らかではなかったように思う。Google Mapのストリートビューはすばらしかった。Androidの加速度センサに反応して360度見回すことができる。バーチャルリアリティ！<br />
<br />
ブラウザ上でGoogle Earth が見れるデモ。残念ながらWindows IE, Firefoxのみ対応。<a href="http://www.google.com/earth/plugin/examples/milktruck/" target="_blank">トラックを動かす簡単なデモ</a>には笑った。エベレストの上も走れるw<br />
<br />
次に<a href="http://www.saturn.dti.ne.jp/~npaka/flash/gainer/index.html" target="_blank">gainer</a>に加速度センサーをつけ、Flashアプリでフライトシミュレータ。残念ながらデモが動作せず。<br />
<br />
<br />
以下、妄想:<br />
Android + Google Earth API + Gearsで、カーナビの機能を充足できるのではないか。Androidでデータ通信して地図情報を取得、Gearsで目的地までのルートをキャッシュする。圏外の場所でも車搭載の加速度センサとGearsによってキャッシュしてある地図データがあればルート表示は可能。<br />
建造物の3DモデルはGoogle Skeckupでどんどん追加されているわけだし、常に地図は更新され続ける。<br />
地図CD-ROMの買い替えやHDDの取り替えも不要だ。でもたまにAdSenseが表示されたりして。<br />
<br />
<br />
<strong><big>■ Google App Engine</big></strong><br />
ゲストブックのようなものをゼロから作り上げるデモを行っていた。<br />
TextMateでPythonコードをすんごいスピードで書いていく。<br />
コーディング-&gt;localhostで確認-&gt;コーディングのサイクルが早く、あっという間に完成した。<br />
<br />
興味深かったのは<a href="http://code.google.com/appengine/docs/datastore/overview.html" target="_blank">DatastoreAPI</a>を用いたデータ永続化の方法。<br />
SQLに良く似たGQLにてデータを操作する。しかしながらテーブルのJOINは未サポートとのこと。<br />
<br />
Pythonのソースコードは思っていたより見やすい。<br />
インデントによってブレース記号({})が省略できるためだろうか、無駄がない感じ。<br />
<br />
localhostで確認した後、専用アップローダを用いて<br />
Googleにアップロードする。コマンドラインでもできる。<br />
<br />
さらに自動的にバージョン管理までやってくれる！<br />
Subversionのように構成管理（タグ、ブランチ）もやってくれるかは不明だが、便利な機能だ。<br />
<br />
さらにさらに、アプリケーション管理画面ではCPUの負荷状況、<br />
データ転送量、メール送信数などなど、至れり尽くせり。<br />
<br />
これが500万PV/月まで無料で使えるとなれば、<br />
スタートアップ企業や週末プログラマの皆さんは飛びつくだろう。<br />
<br />
課題はPythonしかサポートしていないこと。<br />
Rubyのサポートは会場からも強い要望が出ていた。<br />
中にはC#をサポートしてくれよ！と懇願していた方も。<br />
個人的にはPHPをサポートしてくれたら爆発的に利用者が増えると思うが。<br />
<br />
招待制から一般開放されたようなので、今後いじくり回したい。<br />
<br />
<br />
<strong><big>■ OpenSocial</big></strong><br />
APIのバージョンが0.8に上がった。主な変更はRESTful APIのサポート。<br />
これによってJavascript以外からも叩け、サーバ間でのデータ送受信が可能になった。<br />
<br />
OpenSocialの主要な構成要素である、<br />
HTML + Javascript + REST + OAuth がすべて出そろったわけだ。<br />
<br />
コンテナ(SNSなどのソーシャルデータを提供する側)からどの情報を取得できるか(プロフィール情報、友達情報、アクティビティ情報)については、コンテナ側に任されている。<br />
<br />
正直言って自分の中ではまだOpenSocialがブレイクするかどうか分からない。<br />
というのは、海外のようにSNS内にアプリケーションが作れるという文化がまだ根付いていないためだ。<br />
この業界以外の人に説明しても理解に苦しむのではないか。<br />
<br />
Facebookも日本語化され、MySpaceもOpenSocial対応したおかげで徐々に普及していくのかな。<br />
OpenPNEがOpenSocial対応になるらしいので起爆剤になるかも。<br />
<br />
個人的には<a href="http://oauth.net/" target="_blank">OAuth</a>の知識がないので、調査していきたい。<br />
<br />
<br />
<strong><big>■ Mashup から Mapplets へ</big></strong><br />
Google Mapに様々な情報を追加していくことができるデモ。<br />
例えばある地域を表示させる。その地図上に不動産情報を表示、過去の犯罪が起きた地域を表示、交通機関マップを表示・・のように。<br />
<br />
そのようにGoogle Map上に付加機能を追加していくのがMappletsと呼ぶらしい。<br />
MappletsはGadgetのようにHTML + Javascriptで自分で作れる。<br />
<br />
<img src="http://www.synapz.jp/blog/mrsy/2008/06/12/4-thumb-500x225.png" width="500" height="225" alt="mapplet.png" class="mt-image-center" style="text-align: center;margin: 0 auto 20px" />
<br />
<a href="http://maps.google.co.jp/ig/directory?synd=mpl&amp;pid=mpl&amp;features=sharedmap,geofeed&amp;backlink=http:%2F%2Fmaps.google.co.jp%2Fmaps%2Fmm%3Fie%3DUTF8%26hl%3Dja%26ll%3D35.689517,139.785946%26spn%3D0.307284,0.55481%26z%3D11&amp;hl=ja&amp;gl=jp">こちら</a>には多くのMappletsが登録されている。<br />
<br />
ただ、すべての処理をJavascriptで行っているので、クライアントPCの負荷が気になった。<br />
<br />
<br />
<strong><big>■ Google Gears から Gears へ</big></strong><br />
LocalServer, Database, Workerpoolの説明。<br />
WorkerpoolはJavascriptのインタプリタを複数立ち上げることで、疑似スレッド処理が行えるとのこと。デモではHTML描画を行うWorkerと、複雑な素数演算を行うWorkerを同時に動かしても、描画はカクカクしないねというデモが行われた。<br />
<br />
どちらかというと今まではオフラインでもウェブアプリが使えるよ的な謳い文句であったが、今後はクライアント側リソースを最大限に利用しようという方向のようだ。（MySpaceのメール検索のように）<br />
<br />
マイはてブのインクリメンタル検索を行うデモを披露していた。<br />
ブックマーク情報をすべてローカルのDatabaseに蓄えておくことで、ものすごいスピードでインクリメンタル検索を行っていた。すごい。<br />
<br />
その他、デモをしていた若手エンジニアが発するGeekオーラが可愛かったw（すいません）<br />
<br />
<br />
<strong><big>■ Google Web Toolkit と AJAX</big></strong><br />
略してGWT。グウィットと発音していた。<br />
簡潔に言うとJavaで書いた処理をJavascriptソースに変換するコンパイラ。<br />
JavascriptでできることはすべてJavaでかけるとのこと。<br />
また、吐き出されるJavascriptはブラウザ毎に最適化されたコードになりパフォーマンスの向上も図れる。<br />
<br />
EclipseでJavascriptの動作をJavaで書き、<br />
ブレークポイントの設定、ステップ実行が行えるというデモが行われた。<br />
<br />
ただ、Eclipseがベースの<a href="http://www.aptana.com/" target="_blank">Aptana</a>では、Javascriptのデバッグは普通にできる。Firebugでもできる。そういった意味であまりメリットは感じれなかった。<br />
<br />
しかし、Servlet, JSPで開発するプロジェクトでは環境がEclipseで統一できるので、活躍できるのではないか。<br />
<br />
<br />
以上、昼飯もとれないぐらい盛りだくさんの内容でした。<br />
実はセッションと並行してHackathon(Googleエンジニアと密に接しながらコーディングできる)も行きたかったのですが、残念ながら抽選漏れ。次回は是非参加したいです。<br />
Googleのパワーを存分に感じれた1日でした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.synapz.jp/mrsy/2008/06/google-developer-day-2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Shindig (PHP版)を動かしてみる</title>
		<link>http://www.synapz.jp/mrsy/2008/04/shindig-php/</link>
		<comments>http://www.synapz.jp/mrsy/2008/04/shindig-php/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 05:05:25 +0000</pubDate>
		<dc:creator>mrsy</dc:creator>
				<category><![CDATA[OpenSocial]]></category>

		<guid isPermaLink="false">http://www.synapz.jp/mrsy/2008/04/04/post50/</guid>
		<description><![CDATA[
Shindigとは、OpenSocialとGoogleGadgetの仕様に準拠したオープンソースのサーバソフトウェアです。Apache Software Foundation内で開発が進められています。



Gadget Container JavaScript &#8212; core JavaScript foundation for general gadget functionality. This JavaScript manages security, communication, UI layout, and feature extensions, such as the OpenSocial API.
Gadget Server &#8212; an open source version of Google&#8217;s gmodules.com, which is used to render the gadget XML into JavaScript and HTML for the container to expose via [...]]]></description>
			<content:encoded><![CDATA[<p>
Shindigとは、OpenSocialとGoogleGadgetの仕様に準拠したオープンソースのサーバソフトウェアです。Apache Software Foundation内で開発が進められています。<br />
</p>
<blockquote><p>
<ul>
<li><strong>Gadget Container JavaScript</strong> &#8212; core JavaScript foundation for general gadget functionality. This JavaScript manages security, communication, UI layout, and feature extensions, such as the OpenSocial API.</li>
<li><strong>Gadget Server</strong> &#8212; an open source version of Google&#8217;s gmodules.com, which is used to render the gadget XML into JavaScript and HTML for the container to expose via the container JavaScript.</li>
<li><strong>OpenSocial Container JavaScript</strong> &#8212; JavaScript environment that sits on top of the Gadget Container JavaScript and provides OpenSocial specific functionality (profiles, friends, activities, datastore).</li>
<li><strong>OpenSocial Gateway Server (does not yet exist in the repository)</strong> &#8212; an implementation of the server interface to container-specific information, including the OpenSocial REST APIs, with clear extension points so others can connect it to their own backends.</li>
</ul>
<cite>via: <a href="http://incubator.apache.org/shindig/" target="_blank">What is Shindig?</a></cite><br />
</p></blockquote>
<p>
Shindigを動作させる事によって、自分のWebアプリケーション上でGadgetをホスティングでき、さらにOpenSocialアプリケーション機能を提供できます。<br />
今回はShindigのダウンロードからPHP上で動作させるまでをやってみました。<br />
<br />
<br />
<big><strong>ソースをダウンロード</strong></big><br />
<pre><code>$&gt; mkdir -p ~/src/shindig
$&gt; cd ~/src/shindig
$&gt; svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk/ .
</code></pre>
しばらくするとダウンロードが完了します。最新のリビジョンは 644261 でした。<br />
<br />
<br />
<big><strong>Webサーバに配置</strong></big><br />
<pre><code>$&gt; cd /Applications/xampp/xamppfiles/htdocs
$&gt; ln -s ~/src/shindig/php/gadgets .
</code></pre>
<br />
<br />
<big><strong>サンプルGadgetを動かす</strong></big><br />
Webサーバを起動し、http://localhost/gadgets/ifr?url=http://www.labpixies.com/campaigns/todo/todo.xml にアクセスすると、、<br />
<img alt="1.png" src="http://www.synapz.jp/blog/mrsy/2008/04/04/1.png" width="394" height="372" class="mt-image-center">
ガジェットコンテナは動いているようです。<br />
<br />
iGoogleのようにガジェットを表示させるサンプルです。<br />
<img src="http://www.synapz.jp/blog/mrsy/2008/04/04/3-thumb-500x247.png" width="500" height="247" alt="pic2.png" class="mt-image-center" style="text-align: center;margin: 0 auto 20px" />
<br />
<br />
<big><strong>OpenSocial Gadgetを動かす</strong></big><br />
<br />
http://localhost/gadgets/files/samplecontainer/samplecontainer.html<br />
<br />
こちらのサンプルはOpenSocialがジェットのデモです。起動時にエラーダイアログが表示され、動いてくれませんでした。ソースを見る限り、ViewerとOwnerが &#8220;Hello&#8221; と言い合う（？）もののようです。<br />
<br />
<img src="http://www.synapz.jp/blog/mrsy/2008/04/04/6-thumb-500x385.png" width="500" height="385" alt="pic6.png" class="mt-image-center" style="text-align: center;margin: 0 auto 20px" />
<br />
<br />
<big><strong>まとめ</strong></big><br />
Java版しか動かないと思っていましたが、PHP版も開発が進んでいるようです。早くすべての機能を試したいですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.synapz.jp/mrsy/2008/04/shindig-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google技術者交流会(OpenSocial)にて</title>
		<link>http://www.synapz.jp/mrsy/2008/03/googleopensocial/</link>
		<comments>http://www.synapz.jp/mrsy/2008/03/googleopensocial/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 04:55:47 +0000</pubDate>
		<dc:creator>mrsy</dc:creator>
				<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[RESTFul]]></category>
		<category><![CDATA[Shindig]]></category>

		<guid isPermaLink="false">http://www.synapz.jp/mrsy/2008/03/18/post48/</guid>
		<description><![CDATA[
3月14日、Google技術者交流会に参加してきました。
本場USのGoogleエンジニアによるOpenSocialについての概要プレゼンと、著名な方々によるパネルディスカッションの２部構成でした。

OpenSocialの概要については、公開されているドキュメントやorkut上で動くアプリを見ていたので何となく把握できていたのですが、「なぜGadgetなのか？」、「他のSNSからどのように情報（パーソナルプロフィール、友達関係、行動履歴）を取得するの？」について、自分の頭の中で整理ができました。


なぜGadgetなのか？
チュートリアル等で紹介されているサンプルはすべてGoogle Gadgetで作成されていたので、どうせiGoogleやorkutでしか動かないじゃん、という思いがありました。今回のプレゼンの中で紹介されていた、「Shindig」なるオープンソースのサーバソフトの紹介があり、その疑念は払拭されました。

Shindigとは、Apache incubatorプロジェクト内で開発が進められている、OpenSocial コンテナサーバなるものらしいです。主な機能は下記の通り。

Gadgetサーバ
Javascriptコンテナを提供
RESTful APIを提供


例えばあるSNS内でこのサーバを動作させておく事でOpenSocialアプリを動かす事ができ、他のSNSやサービスへはRESTful APIでデータをフィードする事ができます。

現時点ではまだ安定動作するバージョンがついたものは存在しませんが、Subversionリポジトリからソースコードを入手できるので、時間があれば構築してみたいと思います。


他のSNSからどのように情報を取得するのか？
RESTful APIによって、情報を取得できるようにするらしいです。現在はまだ仕様策定中で、サンプル等は見つけられませんでした。また、REST APIはセキュリティを担保するため、OAuthによるユーザー認証(Authentication)と認可(Authorization)をするとのことです。

質疑応答の際、「Gadget用のJavascript APIの公開よりもREST APIの方を先に決めるべきでしょ」的な突っ込みをされている方がいらっしゃいました。確かにそうですよね。チュートリアルだけやっていると、OpenSocial イコール Gadgetのイメージしか無く、orkutのサンプルアプリにしても、orkut内の友達情報をとってくるものしか見た事が有りませんでした。

今後RESTful APIのサンプルが出次第、SNS横断的なアプリが出回る事でしょう。


まとめ
Shindig, OAuth, Gadgetがどのように結びついているのかをちょっと図にまとめてみました。



パネリストの田中洋一郎さんが披露した、コミュスケのOpenSocialアプリ版は、僕が見た中で一番アプリっぽかったです。さらにorkutだけではなくhi5(orkutと同様OpenSocialコンテナ)にもプログラム修正なしで動いているとの事！ Write Once, Run Anywareですね。

オープンソースSNSエンジンであるOpenPNEは、コンテナ機能を実装し始めているようです。

また、今回の交流会にはカテゴリ特化型の小規模なSNS運営者の方も多く参加していたそうです。そういった人たちがOpenSocialを実装する事によってSNSの大変動が起きるかもしれませんね。
]]></description>
			<content:encoded><![CDATA[<p>
3月14日、Google技術者交流会に参加してきました。<br />
本場USのGoogleエンジニアによるOpenSocialについての概要プレゼンと、著名な方々によるパネルディスカッションの２部構成でした。<br />
<br />
OpenSocialの概要については、公開されているドキュメントやorkut上で動くアプリを見ていたので何となく把握できていたのですが、「なぜGadgetなのか？」、「他のSNSからどのように情報（パーソナルプロフィール、友達関係、行動履歴）を取得するの？」について、自分の頭の中で整理ができました。<br />
<br />
<br />
<h2>なぜGadgetなのか？</h2>
チュートリアル等で紹介されているサンプルはすべてGoogle Gadgetで作成されていたので、どうせiGoogleやorkutでしか動かないじゃん、という思いがありました。今回のプレゼンの中で紹介されていた、「Shindig」なるオープンソースのサーバソフトの紹介があり、その疑念は払拭されました。<br />
<br />
<a href="http://incubator.apache.org/shindig/">Shindig</a>とは、<a href="http://incubator.apache.org/">Apache incubator</a>プロジェクト内で開発が進められている、OpenSocial コンテナサーバなるものらしいです。主な機能は下記の通り。<br />
<ul>
<li>Gadgetサーバ</li>
<li>Javascriptコンテナを提供</li>
<li>RESTful APIを提供</li>
</ul>
<br />
例えばあるSNS内でこのサーバを動作させておく事でOpenSocialアプリを動かす事ができ、他のSNSやサービスへはRESTful APIでデータをフィードする事ができます。<br />
<br />
現時点ではまだ安定動作するバージョンがついたものは存在しませんが、Subversionリポジトリからソースコードを入手できるので、時間があれば構築してみたいと思います。<br />
<br />
<br />
<h2>他のSNSからどのように情報を取得するのか？</h2>
RESTful APIによって、情報を取得できるようにするらしいです。現在はまだ仕様策定中で、サンプル等は見つけられませんでした。また、REST APIはセキュリティを担保するため、OAuthによるユーザー認証(Authentication)と認可(Authorization)をするとのことです。<br />
<br />
質疑応答の際、「Gadget用のJavascript APIの公開よりもREST APIの方を先に決めるべきでしょ」的な突っ込みをされている方がいらっしゃいました。確かにそうですよね。チュートリアルだけやっていると、OpenSocial イコール Gadgetのイメージしか無く、orkutのサンプルアプリにしても、orkut内の友達情報をとってくるものしか見た事が有りませんでした。<br />
<br />
今後RESTful APIのサンプルが出次第、SNS横断的なアプリが出回る事でしょう。<br />
<br />
<br />
<h2>まとめ</h2>
Shindig, OAuth, Gadgetがどのように結びついているのかをちょっと図にまとめてみました。<br />
<br />
<img src="http://www.synapz.jp/blog/mrsy/2008/03/18/pic1-thumb-500x256.png" width="500" height="256" alt="pic1.png" class="mt-image-center" style="text-align: center;margin: 0 auto 20px" />
<br />
パネリストの田中洋一郎さんが披露した、<a href="http://www.eisbahn.jp/yoichiro/2008/03/_open_social_edition.html">コミュスケのOpenSocialアプリ版</a>は、僕が見た中で一番アプリっぽかったです。さらにorkutだけではなくhi5(orkutと同様OpenSocialコンテナ)にもプログラム修正なしで動いているとの事！ Write Once, Run Anywareですね。<br />
<br />
オープンソースSNSエンジンであるOpenPNEは、<a href="http://trac.openpne.jp/ticket/1656">コンテナ機能を実装し始めている</a>ようです。<br />
<br />
また、今回の交流会にはカテゴリ特化型の小規模なSNS運営者の方も多く参加していたそうです。そういった人たちがOpenSocialを実装する事によってSNSの大変動が起きるかもしれませんね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.synapz.jp/mrsy/2008/03/googleopensocial/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Googe Open Social調査</title>
		<link>http://www.synapz.jp/mrsy/2008/02/googe-open-social/</link>
		<comments>http://www.synapz.jp/mrsy/2008/02/googe-open-social/#comments</comments>
		<pubDate>Thu, 14 Feb 2008 11:19:41 +0000</pubDate>
		<dc:creator>mrsy</dc:creator>
				<category><![CDATA[Webサービス]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[sns]]></category>

		<guid isPermaLink="false">http://www.synapz.jp/mrsy/2008/02/14/post43/</guid>
		<description><![CDATA[
今回は、Google Open Social ネタで行きたいと思います。

Google CodeのOpen Socialページには、賛同している企業が続々と公開され、それに関するニュースも頻繁に見るようになりました。

個人的にはmixi以外の日本企業が無いからなのか、あるいは実際にサービスとして存在しているものが無いせいなのか、いまいち全体像というかメリットが実感できておりません。
そこで今回は、具体的にどのようなことができるのか調査してみました。

Google Open Social とは、各SNSが持つのデータを外部に提供することを目的としたAPIの仕様をまとめたものです。

プロフィール情報
友達情報
活動情報


また、Google Open Socialの利用方法は、以下の２つがあります。

上記情報をOpen Socialに準拠したAPIを介し、データを提供する側（コンテナ）
APIからデータを取得し、サービスを作る側（デベロッパ）


今回はデベロッパの立場から、orkutが提供するAPIを使ったチュートリアルをやってみました。
ざっくりとした手順は、以下のようになります。


orkutに登録
orkutのテスト環境(sandbox)に登録
sandbox上で友達関係を構築する
GGEにてOpen Socialガジェットを作成する
sandbox上のマイページに、ガジェットを追加する



1.orkutに登録
orkutは招待制ではないので、登録はこちらから簡単に行えます。（Googleアカウントが必要です。）


2. sandboxに登録
現時点では、APIはsandbox上でしか提供されていないので、こちらから利用する為の申請を行わなければなりません。僕の場合、承認されるまでに1日かかりました。。


3. 友達情報を取得するAPIを利用するため、sandbox上で友達関係を構築する。
こちらのフォーラムで、友達募集中のイケメン達がいっぱいいるので、Friend登録しまくります。
実際に登録依頼をしてみましたが、遠い外国の人たちが多いためか、いまだ承認してくれた人はいません。悲しい。。だれか友達になってください。


4. ガジェット作成
orkut上で動作するガジェットは、Googleガジェットと同一の仕様で動きます。よって、前回のエントリと同様に、GGE上でXMLを記述していく形になります。
先述のようにまだ友達がいないので、とりあえず自分の情報を出力するAPIだけを用いることにしました。

&#60;?xml version="1.0" encoding="UTF-8" ?&#62;
&#60;Module&#62;
&#160;&#60;ModulePrefs title="My Data"&#62;
&#160;&#160; &#60;Require feature="opensocial-0.6"/&#62;
&#160;&#60;/ModulePrefs&#62;
&#160;&#60;Content type="html"&#62;
&#160;&#60;![CDATA[
&#160;&#60;script type="text/javascript"&#62;
&#160; function getData() {
&#160;&#160;&#160; document.getElementById('message').innerHTML = 'Requesting my data...';
&#160;&#160;&#160; var req = opensocial.newDataRequest();
&#160;&#160;&#160; req.add(req.newFetchPersonRequest('OWNER'), 'owner');
&#160;&#160;&#160; req.send(showMyData);
&#160; };
&#160; function showMyData(dataResponse) {
&#160;&#160;&#160; var owner = dataResponse.get('owner').getData();
&#160;&#160;&#160; var html = 'My name is ' [...]]]></description>
			<content:encoded><![CDATA[<p>
今回は、Google Open Social ネタで行きたいと思います。<br />
<br />
Google CodeのOpen Socialページには、賛同している企業が続々と<a href="http://code.google.com/apis/opensocial/partners.html">公開され</a>、それに関するニュースも頻繁に見るようになりました。<br />
<br />
個人的にはmixi以外の日本企業が無いからなのか、あるいは実際にサービスとして存在しているものが無いせいなのか、いまいち全体像というかメリットが実感できておりません。<br />
そこで今回は、具体的にどのようなことができるのか調査してみました。<br />
<br />
Google Open Social とは、各SNSが持つのデータを外部に提供することを目的としたAPIの仕様をまとめたものです。<br />
<ul>
<li>プロフィール情報</li>
<li>友達情報</li>
<li>活動情報</li>
</ul>
<br />
また、Google Open Socialの利用方法は、以下の２つがあります。<br />
<ul>
<li>上記情報をOpen Socialに準拠したAPIを介し、データを提供する側（コンテナ）</li>
<li>APIからデータを取得し、サービスを作る側（デベロッパ）</li>
</ul>
<br />
今回はデベロッパの立場から、orkutが提供するAPIを使ったチュートリアルをやってみました。<br />
ざっくりとした手順は、以下のようになります。<br />
<br />
<ol>
<li>orkutに登録</li>
<li>orkutのテスト環境(sandbox)に登録</li>
<li>sandbox上で友達関係を構築する</li>
<li>GGEにてOpen Socialガジェットを作成する</li>
<li>sandbox上のマイページに、ガジェットを追加する</li>
</ol>
<br />
<br />
<h2>1.orkutに登録</h2>
orkutは招待制ではないので、登録は<a href="http://www.orkut.com/">こちら</a>から簡単に行えます。（Googleアカウントが必要です。）<br />
<br />
<br />
<h2>2. sandboxに登録</h2>
現時点では、APIはsandbox上でしか提供されていないので、<a href="http://code.google.com/support/opensocialsignup/">こちら</a>から利用する為の申請を行わなければなりません。僕の場合、承認されるまでに1日かかりました。。<br />
<br />
<br />
<h2>3. 友達情報を取得するAPIを利用するため、sandbox上で友達関係を構築する。</h2>
こちらの<a href="http://sandbox.orkut.com/Community.aspx?cmm=41271206">フォーラム</a>で、友達募集中のイケメン達がいっぱいいるので、Friend登録しまくります。<br />
実際に登録依頼をしてみましたが、遠い外国の人たちが多いためか、いまだ承認してくれた人はいません。悲しい。。だれか友達になってください。<br />
<br />
<br />
<h2>4. ガジェット作成</h2>
orkut上で動作するガジェットは、Googleガジェットと同一の仕様で動きます。よって、<a href="http://www.synapz.jp/blog/mrsy/2008/02/google-gadget.html">前回のエントリ</a>と同様に、GGE上でXMLを記述していく形になります。<br />
先述のようにまだ友達がいないので、とりあえず自分の情報を出力するAPIだけを用いることにしました。<br />
<br />
<pre><code>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;Module&gt;
&nbsp;&lt;ModulePrefs title="My Data"&gt;
&nbsp;&nbsp; <b>&lt;Require feature="opensocial-0.6"/&gt;</b>
&nbsp;&lt;/ModulePrefs&gt;
&nbsp;&lt;Content type="html"&gt;
&nbsp;&lt;![CDATA[
&nbsp;&lt;script type="text/javascript"&gt;
&nbsp; function getData() {
&nbsp;&nbsp;&nbsp; document.getElementById('message').innerHTML = 'Requesting my data...';
&nbsp;&nbsp;&nbsp; var req = <b>opensocial.newDataRequest();</b>
<b>&nbsp;&nbsp;&nbsp; req.add(req.newFetchPersonRequest('OWNER'), 'owner');
&nbsp;&nbsp;&nbsp; req.send(showMyData);</b>
&nbsp; };
&nbsp; function showMyData(dataResponse) {
&nbsp;&nbsp;&nbsp; var owner = <b>dataResponse.get('owner').getData();</b>
&nbsp;&nbsp;&nbsp; var html = 'My name is ' + <b>owner.getDisplayName();</b>
&nbsp;&nbsp;&nbsp; document.getElementById('message').innerHTML = html;
&nbsp; };
&nbsp; gadgets.util.registerOnLoadHandler(getData);
&nbsp; &lt;/script&gt;
&nbsp; &lt;div id="message"&gt; &lt;/div&gt;
&nbsp;
&nbsp; ]]&gt;
&nbsp; &lt;/Content&gt;
&lt;/Module&gt;
</code></pre>
太文字部分がOpen Social APIになります。上記ソースをGGEに保存し、保存先のURIをコピーします。<br />
<br />
<img alt="gge.png" src="http://www.synapz.jp/blog/mrsy/2008/02/14/3-thumb-451x214.png" class="mt-image-center" style="margin: 0pt auto 20px;text-align: center" height="214" width="451" />
<br />
<br />
<h2>5. sandbox上のマイページにガジェットを登録する</h2>
<a href="http://sandbox.orkut.com/MyApps.aspx">このページ</a>に行き、先ほど保存したガジェットのURIを張りつけ、登録します。<br />
<br />
<img alt="gadget.png" src="http://www.synapz.jp/blog/mrsy/2008/02/14/1-thumb-386x232.png" class="mt-image-center" style="margin: 0pt auto 20px;text-align: center" height="232" width="386" />
<br />
登録できたようです。きちんとAPIから戻り値がかえってきました。<br />
<br />
<br />
今回は友達がいなく、友達情報を取得するAPIを利用できませんでしたが、<a href="http://code.google.com/apis/opensocial/docs/0.7/reference/">APIリファレンス</a>を見る限り、様々な情報を取得できるようです。<br />
<br />
しかし残念なことに、僕が見る限りではorkutのsandbox上できちんと動いているガジェットが存在してませんでした。僕のようにチュートリアルのコードをコピペしたものや、Javascriptエラーが起きているもの、利用しているAPIのバージョンが異なってエラーになっているものなどです。皆さん結構四苦八苦されているようです。。<br />
<br />
現時点での最新のAPIバージョンは0.7になっており、今後も機能追加やブラッシュアップされることが予想されます。APIを用いてどのようなサービスができるか想像すると楽しいですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.synapz.jp/mrsy/2008/02/googe-open-social/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Googleガジェットを作ってみる</title>
		<link>http://www.synapz.jp/mrsy/2008/02/google-gadget/</link>
		<comments>http://www.synapz.jp/mrsy/2008/02/google-gadget/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 11:30:26 +0000</pubDate>
		<dc:creator>mrsy</dc:creator>
				<category><![CDATA[Webサービス]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[ガジェット]]></category>

		<guid isPermaLink="false">http://www.synapz.jp/mrsy/2008/02/06/post42/</guid>
		<description><![CDATA[
皆さんはブラウザのスタートページを何にしていますか？　
私は以前MyYahoo!を使っていましたが、最近はiGoogleを利用しています。
iGoogleは「ガジェット」と呼ばれるブラウザ上で動作するミニアプリケーションをWebページ上に配置し、自分好みのページに仕立て上げることができます。

また、作成したガジェットは、以下のように簡単にブログに貼付けることができます。
今回はそのガジェットの作り方を書いていきます。


まずは環境を整えましょう。

iGoogle上に、GGE（Google Gadget Editor）と呼ばれるガジェット開発用ガジェットを登録します。

ここのページ下部の、「To add GGE to your iGoogle page, click here:」下部のボタンを押せば完了です。



おおお、追加されました。ただし、iGoogle上のガジェットは領域が狭いので好みに応じて使い分けましょう。

追加されたGGEを見ると、Hello Worldサンプルコードが登録されています。Previewタブをクリックするときちんと表示されるのが分かりますね。

Editorタブに戻ってソースを見ると、シンプルなXMLで記述されています。基本は下記のCDATA部分に処理を記述していきます。
&#60;Content type="html"&#62;&#60;![CDATA[
** ここにHTMLとCSSとJavascriptを記述する **
]]&#62;&#60;/Content&#62;



では簡単なガジェットを作ってみましょう。自分のはてなブックマークの最新5件を表示することにします。

下記のソースをeditor部分にコピペしてみてください。
ソース中の*****部分はご自分のものにするのをお忘れなく。
&#60;?xml version="1.0" encoding="UTF-8"?&#62;
&#60;Module&#62;
&#160;&#160;&#160; &#60;ModulePrefs
&#160;&#160;&#160;&#160; title="マイハテブ"
&#160;&#160;&#160;&#160; author="***** 自分の名前 *****"
&#160;&#160;&#160;&#160; author_email="***** メールアドレス *****" /&#62;
&#160;&#160;&#160; &#60;Content type="html"&#62;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#60;![CDATA[
&#160;&#160;&#160; &#160;&#160;&#160; &#60;style&#62; #content_div { font-size: 90%;&#160; margin: 5px; background-color: #FFFFBF;} &#60;/style&#62;
&#160;&#160;&#160; &#160;&#160;&#160; &#60;div id=content_div&#62;&#60;/div&#62;
&#160;&#160;&#160; &#160;&#160;&#160; &#60;script type="text/javascript"&#62;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // _IG_で始まる関数がGoogleガジェットAPIです。
&#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; _IG_FetchFeedAsJSON("***** ここに自分のはてブRSS *****",
&#160;&#160;&#160; &#160;&#160;&#160; &#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>
皆さんはブラウザのスタートページを何にしていますか？　<br />
私は以前MyYahoo!を使っていましたが、最近はiGoogleを利用しています。<br />
iGoogleは「ガジェット」と呼ばれるブラウザ上で動作するミニアプリケーションをWebページ上に配置し、自分好みのページに仕立て上げることができます。<br />
<br />
また、作成したガジェットは、以下のように簡単にブログに貼付けることができます。<br />
今回はそのガジェットの作り方を書いていきます。<br />
<br />
<br />
まずは環境を整えましょう。<br />
<br />
iGoogle上に、GGE（Google Gadget Editor）と呼ばれるガジェット開発用ガジェットを登録します。<br />
<br />
<a href="http://code.google.com/intl/en/apis/gadgets/docs/gs.html#GGE">ここ</a>のページ下部の、「To add GGE to your iGoogle page, click here:」下部のボタンを押せば完了です。<br />
<br />
<img alt="gge.png" src="http://www.synapz.jp/blog/mrsy/assets_c/2008/02/7-thumb-325x398.png" class="mt-image-center" style="margin: 0pt auto 20px;text-align: center" height="398" width="325" />
<br />
おおお、追加されました。ただし、iGoogle上のガジェットは領域が狭いので好みに応じて使い分けましょう。<br />
<br />
追加されたGGEを見ると、Hello Worldサンプルコードが登録されています。Previewタブをクリックするときちんと表示されるのが分かりますね。<br />
<br />
Editorタブに戻ってソースを見ると、シンプルなXMLで記述されています。基本は下記のCDATA部分に処理を記述していきます。<br />
<pre><code>&lt;Content type="html"&gt;&lt;![CDATA[
** ここにHTMLとCSSとJavascriptを記述する **
]]&gt;&lt;/Content&gt;
</code></pre>
<br />
<br />
では簡単なガジェットを作ってみましょう。自分のはてなブックマークの最新5件を表示することにします。<br />
<br />
下記のソースをeditor部分にコピペしてみてください。<br />
ソース中の*****部分はご自分のものにするのをお忘れなく。<br />
<pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;Module&gt;
&nbsp;&nbsp;&nbsp; &lt;ModulePrefs
&nbsp;&nbsp;&nbsp;&nbsp; title="マイハテブ"
&nbsp;&nbsp;&nbsp;&nbsp; author="***** 自分の名前 *****"
&nbsp;&nbsp;&nbsp;&nbsp; author_email="***** メールアドレス *****" /&gt;
&nbsp;&nbsp;&nbsp; &lt;Content type="html"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;![CDATA[
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;style&gt; #content_div { font-size: 90%;&nbsp; margin: 5px; background-color: #FFFFBF;} &lt;/style&gt;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;div id=content_div&gt;&lt;/div&gt;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;script type="text/javascript"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // _IG_で始まる関数がGoogleガジェットAPIです。
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _IG_FetchFeedAsJSON("***** ここに自分のはてブRSS *****",
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; function(feed) {
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (feed == null){
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; alert("There is no data.");
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // タイトル部分
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var html = "&lt;div&gt;&lt;b&gt;マイハテブ&lt;/b&gt;&lt;/div&gt;";
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // ブックマークリストを作成
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (feed.Entry) {
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; html += '&lt;ul&gt;';
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; feed.Entry.length; i++) {
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; html += '&lt;li&gt;&lt;a href="' + feed.Entry[i].Link + '" target="_blank"&gt;'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + feed.Entry[i].Title + '&lt;/a&gt;&lt;/li&gt;';
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; html += "&lt;/ul&gt;";
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _gel("content_div").innerHTML = html;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // ブックマーク取得件数
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }, 5);
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/script&gt;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ]]&gt;
&nbsp;&nbsp;&nbsp; &lt;/Content&gt;
&lt;/Module&gt;
</code></pre>
<br />
Editorに貼付けたら、Previewタブで確認してみましょう。はてなブックマークのRSSから、最新の5件取得されたと思います。うまく取得できない場合は、はてなブックマーク側で、公開設定が「パブリック」になっているかご確認ください。<br />
<br />
<br />
では、このガジェットをiGoogleに登録してみましょう。<br />
<br />
まずはFileプルダウン＞Save asをクリックして、名前を付けて保存します。<br />
<img alt="save_as.png" src="http://www.synapz.jp/blog/mrsy/2008/02/06/3.png" class="mt-image-center" style="margin: 0pt auto 20px;text-align: center" height="397" width="323" />
<br />
<br />
次に、Fileプルダウン＞Publish をクリックし、ダイアログから「Add to my iGoogle page」をクリック。<br />
<img alt="publish.png" src="http://www.synapz.jp/blog/mrsy/2008/02/06/4.png" class="mt-image-center" style="margin: 0pt auto 20px;text-align: center" height="396" width="322" />
<br />
<br />
次の画面で「Googleに追加」をクリック。<br />
<img src="http://www.synapz.jp/blog/mrsy/2008/02/06/5-thumb-400x102.png" alt="add_my_iGoogle.png" class="mt-image-center" style="margin: 0pt auto 20px;text-align: center" height="102" width="400" />
<br />
追加されましたね！（見栄えはよろしくないですが）<br />
<img src="http://www.synapz.jp/blog/mrsy/2008/02/06/6-thumb-400x332.png" alt="igoogle.png" class="mt-image-center" style="margin: 0pt auto 20px;text-align: center" height="332" width="400" />
<br />
<br />
思ったより簡単に作ることができました（かなり端折ってますが）。まだGoogleガジェットAPIのほんの一部しか使ってないので、もっと複雑な処理やUIを作ることができそうです。また、作成したガジェットは自分のブログにも簡単に貼付けることができます。<br />
<br />
次は、このガジェットでGoogle Open Social APIを使ってみたいと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.synapz.jp/mrsy/2008/02/google-gadget/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

