<?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>Tender Surrender &#187; Gadget</title>
	<atom:link href="http://devlog.agektmr.com/ja/archives/tag/gadget/feed" rel="self" type="application/rss+xml" />
	<link>http://devlog.agektmr.com</link>
	<description>未来のソーシャルウェブを夢見るブログ</description>
	<lastBuildDate>Mon, 05 Jul 2010 05:13:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>JA</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>(たぶん)世界初！OAuthを使ったOpenSocial向けTwitterクライアント「ガジェツイ！」を公開しました</title>
		<link>http://devlog.agektmr.com/ja/archives/624</link>
		<comments>http://devlog.agektmr.com/ja/archives/624#comments</comments>
		<pubDate>Tue, 18 Aug 2009 07:23:34 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[OAuth]]></category>
		<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[Gadget]]></category>
		<category><![CDATA[ガジェツイ！]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/?p=624</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F624", "style": "big", "title": [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F624%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%28%E3%81%9F%E3%81%B6%E3%82%93%29%E4%B8%96%E7%95%8C%E5%88%9D%EF%BC%81OAuth%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9FOpenSocial%E5%90%91%E3%81%91Twitter%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%80%8C%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%84%E3%82%A4%EF%BC%81%E3%80%8D%E3%82%92%E5%85%AC%E9%96%8B%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F624", "style": "big", "title": "(たぶん)世界初！OAuthを使ったOpenSocial向けTwitterクライアント「ガジェツイ！」を公開しました" });</script></div>
<p><a href="http://home.goo.ne.jp/gadget/qYpTF5ucNCt2/detail" target="_blank"><img class="size-full wp-image-643" title="GadgeTweetr_Logo" src="http://devlog.agektmr.com/wp-content/uploads/2009/08/GadgeTweetr_Logo.png" alt="GadgeTweetr_Logo" width="616" height="119" /></a></p>
<p><a href="http://home.goo.ne.jp/" target="_blank">gooホーム</a>の<a href="http://developer.home.goo.ne.jp/document/OAuthリクエスト" target="_blank">OAuth機能</a>公開に合わせ、<a href="http://twitter.com/" target="_blank">Twitter</a>のOAuthを使ったガジェット「<a href="http://home.goo.ne.jp/gadget/qYpTF5ucNCt2/detail" target="_blank">ガジェツイ！</a>」(英語名GadgeTweetr)をリリースしました。ガジェットながらに、そんじょそこらのTwitterクライアントよりもシンプルかつ高機能で使いやすいものに仕上がったと思いますのでご紹介します。</p>
<p>※ガジェツイ！のロゴフォントには「<a href="http://d.hatena.ne.jp/y05k/20070519/p1" target="_blank">ついってる</a>」を利用させて頂きました。</p>
<h2>主な機能</h2>
<ul>
<li>OAuthログイン機能</li>
<li>タブ機能</li>
<li>返信元表示機能</li>
<li>検索機能</li>
<li>マルチアカウントに対応</li>
</ul>
<h2>OAuthログイン機能</h2>
<p><a href="http://oauth.net/core/1.0" target="_blank">OAuth</a>に対応していますので、IDとパスワードを直接gooホームに入力する必要はありません。「ログイン」ボタンクリックで、twitter.comドメインの画面が開くので、ユーザーは安心してログインすることができます。</p>
<p><img style="border: 0px initial initial;" title="login_using_oauth" src="http://devlog.agektmr.com/wp-content/uploads/2009/08/decd90d6f3baa9553fd625ecb11d3b8b-300x203.png" alt="login_using_oauth" width="300" height="203" /></p>
<h2>タブ機能</h2>
<p>タブで様々な種類のステータスを並べて表示するタイプのTwitterクライアントです。Timeline、Mentions、Direct Message、Favoritesなど、一通りの表示に対応しています。</p>
<p><img class="alignnone" style="border: 0px initial initial;" title="tabs" src="http://devlog.agektmr.com/wp-content/uploads/2009/08/tabs.png" alt="tabs" width="288" height="143" /></p>
<h2>返信元表示機能</h2>
<p>ステータスが返信の場合は「返信元」をクリックすることで会話を辿って行くことができます。</p>
<p><img class="size-medium wp-image-633 alignnone" title="replies" src="http://devlog.agektmr.com/wp-content/uploads/2009/08/replies-300x157.png" alt="replies" width="300" height="157" /></p>
<h2>検索機能</h2>
<p>フリーワード検索にも対応しています。</p>
<p><img class="size-medium wp-image-634 alignnone" title="search" src="http://devlog.agektmr.com/wp-content/uploads/2009/08/search-300x203.png" alt="search" width="300" height="203" /></p>
<h2>マルチアカウントに対応</h2>
<p>ガジェットはいくつでも追加でき、それぞれに違うアカウントを指定することができます。</p>
<p><img class="size-thumbnail wp-image-631 alignnone" title="multi-account" src="http://devlog.agektmr.com/wp-content/uploads/2009/08/multi-account-150x150.png" alt="multi-account" width="150" height="150" /></p>
<h2>その他の機能</h2>
<h3>3つのビュー</h3>
<p>home、profile、canvasそれぞれのビューに対応しています。homeではTimelineとMentionsが、profileでは当該ユーザーのステータスが、canvasではTimeline、Mentions、Direct Message、Favoritesがそれぞれデフォルトで開きます。</p>
<h3>自動リンク機能</h3>
<p>外部URLはもちろん、@によるID指定、そして#によるハッシュタグの指定を検知してリンク化します。URLの場合が別ウィンドウを開きますが、@と#の場合は新しいタブを作ってステータス一覧を表示します。</p>
<h3>ReTweet機能</h3>
<p>気に入ったつぶやきはこのアイコンをクリックすることで、いわゆる「ReTweet」することができます。もちろん、コメントを追記することができます。</p>
<h3>プロフィール表示機能</h3>
<p>アイコンクリックでフォロワー数や投稿数などのプロフィール情報を表示することができます。</p>
<h3>フォロー、アンフォロー機能</h3>
<p>プロフィール表示からそのままフォローしたり、既にフォローしている場合はアンフォローすることができます。</p>
<h2>まとめ</h2>
<p>せっかくOpenSocial上に作ったTwitterクライアントということで、ならではのソーシャル機能を準備していたのですが、残念ながら今回の発表には間に合いませんでした(実装でき次第公開します)。</p>
<p>とはいえ、gooホームのOAuthを体験してもらうためだけに作り始めたにも関わらず、シンプルかつ高機能なものに仕上がりました。ぜひガジェツイ！をお試しください。</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/624/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>あしあと帳ガジェット更新</title>
		<link>http://devlog.agektmr.com/ja/archives/554</link>
		<comments>http://devlog.agektmr.com/ja/archives/554#comments</comments>
		<pubDate>Sat, 27 Jun 2009 00:46:03 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[FriendConnect]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Gadget]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/?p=554</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F554", "style": "big", "title": [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F554%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%E3%81%82%E3%81%97%E3%81%82%E3%81%A8%E5%B8%B3%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E6%9B%B4%E6%96%B0%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F554", "style": "big", "title": "あしあと帳ガジェット更新" });</script></div>
<p>昨日SocialWeb Blogで紹介して頂いたあしあとガジェットですが、早速多数のフィードバックを頂いています。その中から、2点の改善を行いましたのでご紹介します。</p>
<h2>あしあとの表示件数を設定</h2>
<pre class="brush: jscript;">&lt;br /&gt;{ id: 'div-1231298385220',&lt;br /&gt;    'view-params': {&lt;br /&gt;    'maxDisplay': '15'&lt;br /&gt;  },&lt;br /&gt;  url:'http://gadgets.agektmr.com/Footprints/friendconnect.xml',&lt;br /&gt;  site: '00268510882932422418'&lt;br /&gt;},&lt;br /&gt;</pre>
<p>あしあとは有無を言わさず10件表示する作りになっていましたが、HTMLに埋め込むコードの中に設定値を書き込むことで、変更できるようにしました。view-paramsを追加してmaxDisplayで表示したいあしあと数を指定してください。3から20の範囲で指定することができます。</p>
<h2>スキンを設定</h2>
<pre class="brush: jscript;">&lt;br /&gt;var skin = {};&lt;br /&gt;skin['BORDER_COLOR'] = '#cccccc';&lt;br /&gt;skin['ENDCAP_BG_COLOR'] = '#e0ecff';&lt;br /&gt;skin['ENDCAP_TEXT_COLOR'] = '#000000';&lt;br /&gt;skin['ENDCAP_LINK_COLOR'] = '#0000cc';&lt;br /&gt;skin['ALTERNATE_BG_COLOR'] = '#ffffff';&lt;br /&gt;skin['CONTENT_BG_COLOR'] = '#ffffff';&lt;br /&gt;skin['CONTENT_LINK_COLOR'] = '#0000cc';&lt;br /&gt;skin['CONTENT_TEXT_COLOR'] = '#333333';&lt;br /&gt;skin['CONTENT_SECONDARY_LINK_COLOR'] = '#7777cc';&lt;br /&gt;skin['CONTENT_SECONDARY_TEXT_COLOR'] = '#666666';&lt;br /&gt;skin['CONTENT_HEADLINE_COLOR'] = '#000000';&lt;br /&gt;</pre>
<p>デザインの一部として色を変更できるようにしました。GFCサイトからコピーした時点で含まれているskinの値を変更することで対応できます。実際に有効な値は下記の通り：</p>
<p>BG_COLOR: 全体の背景色<br /> FONT_COLOR: フォント色<br /> CONTENT_HEADLINE_COLOR: ヘッダ文字色<br /> ENDCAP_TEXT_COLOR: フッタ文字色<br /> ALTERNATE_BG_COLOR: あしあと背景色</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/554/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>あしあとガジェットがSocialWeb Blogに掲載</title>
		<link>http://devlog.agektmr.com/ja/archives/545</link>
		<comments>http://devlog.agektmr.com/ja/archives/545#comments</comments>
		<pubDate>Fri, 26 Jun 2009 01:37:52 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[FriendConnect]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Gadget]]></category>
		<category><![CDATA[掲載]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/?p=545</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F545", "style": "big", "title": [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F545%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%E3%81%82%E3%81%97%E3%81%82%E3%81%A8%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%81%8CSocialWeb%20Blog%E3%81%AB%E6%8E%B2%E8%BC%89%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F545", "style": "big", "title": "あしあとガジェットがSocialWeb Blogに掲載" });</script></div>
<p>ずいぶん前ですが、Google FriendConnect向けに<a href="http://devlog.agektmr.com/archives/325" target="_blank">あしあとガジェット</a>というのを作りました。</p>
<p>知り合いとか、たまたまこのブログを見た人に細々と使って頂いていたのですが、先日FriendConnectのガジェットディレクトリーが出来たのを機に、せっかくだからと掲載してもらったのが<a href="http://www.google.com/friendconnect/home/gadgets?hl=en-US&amp;gl=US&amp;category=all" target="_blank">コチラ</a>。</p>
<p>で、その後Googleの方から「とても素晴らしいガジェットなので「お勧め(featured)」に加えるから、是非ブログ記事を書いて欲しい」(若干脚色)との依頼を頂き、書いたのがこちらのブログ</p>
<p><a href="http://googlesocialweb.blogspot.com/2009/06/see-whos-visiting-to-your-site-with.html" target="_blank">Social Web Blog: See who&#8217;s visiting to your site with Footprints gadget</a></p>
<p>という訳で、掲載して頂きました。</p>
<p>実はこのガジェット、日本語にも対応していて、以前は動いていたのですが、GFCでSocial barが使えるようになった辺りから英語オンリーになっていたので、そのことについて聞いてみたところ、近々国際化対応する予定との返事を頂きました。なので「Footprints gadget」は「あしあとガジェット」として使えるようになるかもしれません。</p>
<p>Google FriendConnectの導入は割と簡単です。この記事を見た方は是非、ご自身のブログにあしあとガジェットと<a href="http://www.google.com/friendconnect/" target="_blank">Google FriendConnect</a>を導入してみてくださいね。</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/545/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Orkutアプリのソースコードを覗くブックマークレット</title>
		<link>http://devlog.agektmr.com/ja/archives/194</link>
		<comments>http://devlog.agektmr.com/ja/archives/194#comments</comments>
		<pubDate>Mon, 20 Oct 2008 03:57:02 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[サービス]]></category>
		<category><![CDATA[Gadget]]></category>
		<category><![CDATA[Orkut]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/?p=194</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F194", "style": "big", "title": [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F194%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Orkut%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E8%A6%97%E3%81%8F%E3%83%96%E3%83%83%E3%82%AF%E3%83%9E%E3%83%BC%E3%82%AF%E3%83%AC%E3%83%83%E3%83%88%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F194", "style": "big", "title": "Orkutアプリのソースコードを覗くブックマークレット" });</script></div>
<p>OpenSocial-Japanのメーリングリストで出した小ネタを貼っておきます。</p>
<p>OpenSocialアプリ(ガジェット)はiframe内に表示されているのですが、iframeタグのsrc属性に含まれるURLのquery部分に、実はソースコードとなるXMLのURLが書いてあります。 で、いつもそこをコピペしてデコードしてたのですが、せっかくなのでこの機会にブックマークレットを作ってみました。 </p>
<p><a href="javascript:var%20inner_doc%20=%20document.getElementsByTagName('iframe')[0].contentDocument;var%20iframes%20=%20inner_doc.getElementsByTagName('iframe');var%20src%20=%20iframes[0].src.replace(/^.*??url=(.*?)&amp;.*$/i,%20"$1");window.open(decodeURIComponent(src));undefined;" target="_blank">Open Orkut Gadget XML</a></p>
<p>↑上記をブックマークレットとして保存し、Orkutアプリを表示した状態でクリックすると、ソースコードのページが新規ウィンドウで開きます。 (複数表示されている場合は、一番上のアプリのソースコードが開きます)</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/194/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenSocialコンテナの対応状況を調べるガジェット</title>
		<link>http://devlog.agektmr.com/ja/archives/73</link>
		<comments>http://devlog.agektmr.com/ja/archives/73#comments</comments>
		<pubDate>Mon, 02 Jun 2008 15:34:40 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[Gadget]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/?p=73</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F73", "style": "big", "title":  [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F73%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22OpenSocial%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%81%AE%E5%AF%BE%E5%BF%9C%E7%8A%B6%E6%B3%81%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8B%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F73", "style": "big", "title": "OpenSocialコンテナの対応状況を調べるガジェット" });</script></div>
<p>OpenSocialコンテナにも<a href="http://www.orkut.com/Home.aspx" target="_blank">Orkut</a>, <a href="http://hi5.com/" target="_blank">hi5</a>, <a href="http://www.myspace.com/" target="_blank">MySpace</a>だけでなく、<a href="http://www.google.com/ig?hl=en" target="_blank">iGoogle</a>, <a href="http://www.hyves.nl/" target="_blank">hyves</a>, <a href="http://en.netlog.com/" target="_blank">Netlog</a>などが登場してきました。</p>
<p>それぞれのSNSには特徴がありますが、仕様をいちいち調べたり、開発に当たって動作確認を行うのは面倒です。現在OpenSocial v0.8は登場したばかりということもあり、ほとんどがv0.7対応のものですが、v0.7への対応状況を確認できるガジェットというのがあります。</p>
<address>http://opensocial-resources.googlecode.com/svn/tests/trunk/compliancetests.xml</address>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/06/compliancetest.jpg"><img class="alignnone size-medium wp-image-74" title="compliancetest" src="http://devlog.agektmr.com/wp-content/uploads/2008/06/compliancetest-257x299.jpg" alt="" width="257" height="299" /></a></p>
<p>これで開発も少しは楽になるのではないでしょうか。</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/73/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ついにiGoogleがOpenSocial対応へ</title>
		<link>http://devlog.agektmr.com/ja/archives/50</link>
		<comments>http://devlog.agektmr.com/ja/archives/50#comments</comments>
		<pubDate>Tue, 22 Apr 2008 07:41:42 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[Gadget]]></category>
		<category><![CDATA[iGoogle]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/?p=50</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F50", "style": "big", "title":  [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F50%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%E3%81%A4%E3%81%84%E3%81%ABiGoogle%E3%81%8COpenSocial%E5%AF%BE%E5%BF%9C%E3%81%B8%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F50", "style": "big", "title": "ついにiGoogleがOpenSocial対応へ" });</script></div>
<p>今日から、<a href="http://jp.techcrunch.com/archives/20080421hints-of-igoogle-turning-into-its-own-social-network/" target="_blank">OpenSocial機能提供に向け、iGoogleでsandboxの利用が可能になりました</a>。これは明白に、<strong>Google自身がソーシャルネットワークを基盤とした仕組みになっていく</strong>ことを意味しています。以前<a href="http://jp.techcrunch.com/archives/googles-response-to-facebook-maka-maka/" target="_blank">Maka-Makaと呼ばれるプロジェクト</a>が存在し、Google独自のSNSサービスが始まるという話題がありましたが、それがOpenSocialというオープンな形を取り、予想していたとはいえ、iGoogleという形で現実のものにされると、さすが、としか言いようがありません。</p>
<p>で、早速試してみました。</p>
<p>まずはサインアップ。<a href="http://www.google.com/ig/sandbox" target="_blank">こちら</a>からできます。(言語設定は英語にしておかないと、サインアップしてもsandboxが利用できないようです。)</p>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/04/igoogle_signup.jpg"><img class="alignnone size-medium wp-image-54" title="igoogle_signup" src="http://devlog.agektmr.com/wp-content/uploads/2008/04/igoogle_signup-300x161.jpg" alt="" width="300" height="161" /></a></p>
<p><a href="http://code.google.com/apis/igoogle/docs/anatomy.html" target="_blank">http://code.google.com/apis/igoogle/docs/anatomy.html</a></p>
<p>これが新しいiGoogleの画面。</p>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/04/igoogle_top.jpg"><img class="alignnone size-medium wp-image-52" title="igoogle_top" src="http://devlog.agektmr.com/wp-content/uploads/2008/04/igoogle_top-300x147.jpg" alt="" width="300" height="147" /></a></p>
<p>画面左にあるのがインストールしたアプリケーション/ガジェット。これをクリックするとキャンバスビューが開きます。</p>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/04/igoogle_navi.jpg"><img class="alignnone size-medium wp-image-53" title="igoogle_navi" src="http://devlog.agektmr.com/wp-content/uploads/2008/04/igoogle_navi-110x300.jpg" alt="" width="110" height="300" /></a></p>
<p>画面右側にはUpdateとしてアクティビティストリーム(行動履歴)が表示されるとのことですが、まだ確認できていません。SNSですから、友達リストがあってもおかしくないのですが、sandboxでは友達なしの状態からスタートし、sandboxに登録しているユーザー同士でなければ友達になれないとのこと。どうやって友達になれるかは、まだ不明。実際のサービス時はGoogle Talk/Gmailのアドレス帳からスタートすることは容易に想像できます。</p>
<p>また他にも、ガジェットごとの設定項目の表示方法が変更されているようです。</p>
<p>で、せっかくのsandboxですから、早速以前作ったFriendIntroducerを試してみました。OpenSocialとはいえ、コンテナごとにビュー名は若干違うよね、ということで、ガジェットXMLにhomeビューを追記し、Developerガジェットから追加。</p>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/04/igoogle_gadget.jpg"><img class="alignnone size-full wp-image-55" title="igoogle_gadget" src="http://devlog.agektmr.com/wp-content/uploads/2008/04/igoogle_gadget.jpg" alt="" width="370" height="253" /></a></p>
<p>んー。友達がいないので、当然こういう表示になってしまいますが、動いていることは確認できました。やはりそこはOpenSocial。</p>
<h2>まとめ</h2>
<p>あくまで基盤とはいえ、Googleは本当に恐ろしい存在です。すべてのウェブサービスを飲み込めるくらい、地を這ってる。auやlivedoorのGmailしかり、Google App Engineしかり。何でもかんでもGoogleに乗っけてしまえってくらい。</p>
<p>そしてGoogleにはAndroidもあります。そう、携帯電話のアドレス帳もこの友達リストに接続できるようになるでしょう。そうすると、友達のブログ更新をメールで受け取ったり、そのままケータイで閲覧したりといったことがユーザーに何のストレスも与えずに可能になります。</p>
<p>あと足りないのはプロフィールビューでしょうか。Google MapやGoogle Groupsで部分的に実現されてはいますが、これがどういう形で結実していくか、見物です。</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/50/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenSocialアプリケーションを作る(2)</title>
		<link>http://devlog.agektmr.com/ja/archives/41</link>
		<comments>http://devlog.agektmr.com/ja/archives/41#comments</comments>
		<pubDate>Wed, 16 Apr 2008 17:37:50 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[Widget]]></category>
		<category><![CDATA[Gadget]]></category>
		<category><![CDATA[Orkut]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/?p=41</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F41", "style": "big", "title":  [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F41%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22OpenSocial%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%9C%E3%82%8B%282%29%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F41", "style": "big", "title": "OpenSocialアプリケーションを作る(2)" });</script></div>
<p><a rel="bookmark" href="http://devlog.agektmr.com/archives/22">OpenSocialアプリケーションを作る(1)</a>では、ガジェットの仕組みと、Orkutでアカウントを取得するところまで書きました。今回は、<a href="http://devlab.agektmr.com/OpenSocial/Orkut/FriendIntroducer.xml" target="_blank">前回紹介したアプリケーション</a>のコードを解説します。</p>
<p>このアプリケーション(FriendIntroducer)は、自分が見た場合は友達の紹介文を書くことができ、他人が見た場合はその人に向けて書かれた紹介文を読むことができる、というmixiなどにもよくある簡単なアプリケーションです。JavaScriptやjQuery的にはもっと賢い実装方法があると思いますが、今回はOpenSocialのコードにフォーカスしますので、アホなコードは大目に見てください。</p>
<h2>ガジェットXML</h2>
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;Module&gt;
&lt;ModulePrefs title="Friend Introducer" title_url="" description="Introduce your friend!" height="100"&gt;
  &lt;Require feature="opensocial-0.7" /&gt;
  &lt;Require feature="views" /&gt;
  &lt;Require feature="dynamic-height" /&gt;
 &lt;/ModulePrefs&gt;
&lt;Content type="html" view="canvas"&gt;
  &lt;![CDATA[
  &lt;link href="http://devlab.agektmr.com/OpenSocial/css/FriendIntroducer.css" rel="stylesheet" type="text/css"&gt;
  &lt;script type="text/javascript" src="http://devlab.agektmr.com/OpenSocial/js/jquery.js"&gt;&lt;/script&gt;
  &lt;script type="text/javascript" src="http://devlab.agektmr.com/OpenSocial/js/FriendIntroducer.js"&gt;&lt;
/script&gt;
  &lt;script type="text/javascript"&gt;
    gadgets.util.registerOnLoadHandler(FriendIntroducer.init);
  &lt;/script&gt;
  &lt;div id="title"&gt;&lt;/div&gt;
  &lt;div id="friends"&gt;&lt;/div&gt;
  &lt;div id="message"&gt;&lt;/div&gt;
  ]]&gt;
 &lt;/Content&gt;
&lt;/Module&gt;</pre>
<p>ここでは</p>
<ul>
<li>ガジェットの設定</li>
<li>外部のCSSやJavaScriptを読み込み</li>
<li>初期化スクリプトの呼び出し</li>
<li>表示用DIV指定</li>
</ul>
<p>を行っています。</p>
<pre>&lt;Content type="html" view="profile"&gt;</pre>
<p>Contentはhtmlタイプ、profileビューと指定しました。typeにはhtmlとurlが選択可能ですが、htmlとして内容をContentタグで囲まれた部分に記述しています。viewはOpenSocialの仕様上profile、canvasが想定されていますが、コンテナによってhomeやpreviewが存在するようです。ここでは例としてcanvasを使用しています。</p>
<p>また、viewを指定しない場合はdefaultビューとして扱われます。コンテナは表示場面(コンテキスト)によってビューを切り替えますが、Content内でviewを取り出してJavaScriptで処理を分ける方法もあります。</p>
<h2>Contentの内容</h2>
<p>Contentの内容は、基本的に通常のウェブページと同じように扱うことができ、HTMLで書くことができますが、</p>
<pre>  &lt;script type="text/javascript"&gt;
    gadgets.util.registerOnLoadHandler(FriendIntroducer.init);
  &lt;/script&gt;</pre>
<p>このようにgadgets.util.registerOnLoadHandlerを使って初期化処理を入れることができます。</p>
<p>このアプリケーションでは、表示テンプレートとして空のdivタグを3つ用意しています。</p>
<h2>JavaScriptのコード</h2>
<p>JavaScriptのソースコードは<a href="http://devlab.agektmr.com/OpenSocial/js/FriendIntroducer.js" target="_blank">ここ</a>にありますが、抜粋して紹介します。</p>
<pre>    $('#friends').html('Requesting friends...');
    var req = opensocial.newDataRequest();
    req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');
    req.add(req.newFetchPeopleRequest('VIEWER_FRIENDS'), 'friends');
    req.add(req.newFetchPersonAppDataRequest('VIEWER', 'Introduction'), 'intro');
    req.send(FriendIntroducer.onLoadViewerFriends);</pre>
<p>最も基本的な処理となる、閲覧者、閲覧者の友達、保存したデータを取り出す処理です。</p>
<p>opensocial.newDataRequest()でデータリクエストオブジェクトを作り、addで3種類のリクエストを追加、最後にsendでコールバック関数を指定した上、データリクエストを送信しています。3種類のリクエストにはそれぞれ後で区別するためviewer, friends, introという名前(キー)を付けています。</p>
<pre>   var viewer    = response.get('viewer').getData();
   var friends   = response.get('friends').getData();
   var intro     = response.get('intro').getData();</pre>
<p>コールバック関数では、引数(response)を使って、response.get(キー名).getData()でリクエストしていたデータを取り出すことができます。</p>
<pre>    var viewer_id = viewer.getId();
    var json = null;
    if (intro[viewer_id]) {
      if (intro[viewer_id].Introduction) {
        var json_str = gadgets.util.unescapeString(intro[viewer_id].Introduction);
        var json = eval(json_str)[0];
      }
    }</pre>
<p>introは、このアプリケーションを使ってコンテナのデータ保存領域に予め保存しておいた内容、つまり「以前保存した友達の紹介文」です。</p>
<pre>    $('#title').html('&lt;p&gt;Friends of '+viewer.getDisplayName()+':&lt;/p&gt;');
    var html = '';
    if (friends.size() == 0) {
      $('#message').html("&lt;p&gt;You don't have any friends yet!&lt;/p&gt;");
    }</pre>
<p>友達が誰もいない場合を考慮して、メッセージを表示しています。</p>
<pre>    friends.each(function(person) {
      var t = FriendIntroducer.template.friend_list_canvas;
      t = t.replace('##thumbnail_url##', person.getField(opensocial.Person.Field.THUMBNAIL_URL));
      t = t.replace('##profile_url##',   person.getField(opensocial.Person.Field.PROFILE_URL));
      t = t.replace('##display_name##',  person.getDisplayName());
      t = t.replace('##input_id##',      'input_'+person.getId());
      if (json) {
        t = t.replace('##intro_text##',  json[person.getId()] ? json[person.getId()] : '');
      } else {
        t = t.replace('##intro_text##', '');
      }
      html += t;
    });
    $('#friends').html('&lt;ul&gt;'+html+'&lt;/ul&gt;');</pre>
<p>OpenSocialでは配列をなめる、いわゆるiterationも仕様に含まれていて、eachを使うことができます。ここでは、友達のリストをループして、友達の名前やサムネイル画像、保存されていた紹介文をHTMLテンプレートに埋め込んでいきます。</p>
<p style="text-align: center;"><a href="http://devlog.agektmr.com/wp-content/uploads/2008/03/orkut5.jpg"><img title="Orkut5" src="http://devlog.agektmr.com/wp-content/uploads/2008/03/orkut5.jpg" alt="" width="300" height="264" /></a></p>
<p>ここまでで、友達の紹介文を書き込むことができるcanvasページの表示することができました。次に、友達の紹介文をユーザーが書き込んだものと想定し、投稿して保存するところまでを解説します。</p>
<h2>データの保存</h2>
<p>OpenSocialはコンテナにデータ保存領域を持っており、アプリケーションがデータを保存することができます。これはパーシステントデータ(Persistant data)や、アプリケーションデータ(AppData)と呼ばれています。アプリケーションデータはバージョン0.7では<strong>エスケープした文字列のみ</strong>サポートしています(次のバージョンではJSONそのものの保存も可能になるようです)。</p>
<pre>    var list = $('#friends ul li');
    var intro = "{result:[{";
    for (var i=0; i &lt; list.length; i++) {
      var textarea = list[i].lastChild.lastChild;
      var uid = textarea.id.substring(6);
      var intro_text = textarea.value.replace("'", "'");;
      intro += "'"+uid+"':'"+intro_text+"'";
      intro += (list.length-1)==i ? "" : ",";
    };
    intro += '}]};';
    var req = opensocial.newDataRequest();
    intro = gadgets.util.escapeString(intro);</pre>
<p>この処理は、ユーザーが友達の紹介文を書き終わって「投稿ボタン」を押すことでトリガーされるものです。DOMを辿って各友達のユーザーIDと紹介文の内容を取得する、普通のJavaScriptです。取得した内容はJSONの文字列になるよう連結し、エスケープすることで、アプリケーションデータとして保存が可能になります。</p>
<pre>    req.add(req.newUpdatePersonAppDataRequest('VIEWER', 'Introduction', intro));
    req.send(function() {
      $('#message').html('&lt;p&gt;Your introduction has been submitted.&lt;/p&gt;');
    });</pre>
<p>最後に、JSON形式になった文字列をデータリクエストオブジェクトに追加して送信して、完了です。</p>
<h2>まとめ</h2>
<p>解説というよりはソースコード並べただけみたいな記事になってしまいましたが、OpenSocialアプリケーションのほとんどがJavaScriptでできてしまうということは、分かったかと思います。次回は外部サーバーとの連携を行うmakeRequestに触れたいと思います。</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/41/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenSocialアプリケーションを作る(1)</title>
		<link>http://devlog.agektmr.com/ja/archives/22</link>
		<comments>http://devlog.agektmr.com/ja/archives/22#comments</comments>
		<pubDate>Sun, 30 Mar 2008 07:01:26 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[Widget]]></category>
		<category><![CDATA[Gadget]]></category>
		<category><![CDATA[Orkut]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/archives/22</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F22", "style": "big", "title":  [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F22%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22OpenSocial%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%9C%E3%82%8B%281%29%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F22", "style": "big", "title": "OpenSocialアプリケーションを作る(1)" });</script></div>
<p>OrkutとMySpaceで自作アプリを動かしてみたので、そのレポートです。</p>
<p>まだ仕様が固まっていないのでグレーな部分も多いのですが、OpenSocialはGoogleGadgetと相性が良いらしく、OrkutもMySpaceも、hi5もGoogleGadget前提となっています。というわけで、今回はGoogleGadgetの基本的な作り方とOrkutへのアプリケーション追加方法の解説です。</p>
<h2>ガジェットとは何か</h2>
<p>GoogleGadgetは<a href="http://www.google.com/ig?hl=ja" target="_blank">iGoogle</a>で動くJavaScriptとHTMLで記述された簡単なアプリケーションです。JavaScriptとHTMLはXML上に埋め込み、設定内容もXMLに記述します。</p>
<pre>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;Module&gt;
 &lt;ModulePrefs
  title="Blah Blah Gadget"
  description="Gadget Example"
  author_email="***@***.com"
 &gt;
 &lt;/ModulePrefs&gt;
 &lt;Content type="html"&gt;
.....
 &lt;/Content&gt;
&lt;/Module&gt;</pre>
<p>XMLはこんな感じ。Contentの中にJavaScriptとHTMLを記述することで、その内容がiGoogle上やMySpace等のOpenSocialアプリケーションとして表示されます。</p>
<p>ガジェットはJavaScriptを許可していることから、XSSなどの脆弱性を回避するため、iframeを使って別ドメインで動作するようになっています(iGoogleの場合、gmodules.com)。Contentの属性であるtypeを&#8221;html&#8221;から&#8221;url&#8221;に変更し、hrefでURL指定すると、iframe内に自分の管理するサーバーを表示することも可能です。</p>
<p>GoogleGadget自体の仕様は掘り下げるとキリがないのでこの辺りで。詳細は<a href="http://code.google.com/intl/ja/apis/gadgets/docs/reference.html" target="_blank">リファレンス</a>をご覧ください。</p>
<h2>OrkutのSandboxアカウントを取得する</h2>
<p>OrkutはGoogle直結ということもあり、OpenSocialの仕様が最も早く反映されるようです。そのOrkutのOpenSocial実験環境は<a href="http://sandbox.orkut.com/" target="_blank">Sandbox</a>と呼ばれ、通常のOrkutアカウントを拡張したSandboxアカウントを取得することで、利用可能となります。</p>
<p>アカウントを取得するには<a href="http://code.google.com/support/opensocialsignup/">コチラ</a>から申請を行ってください。申請が受理されるまでには数日を要するようです。</p>
<h2>OrkutにOpenSocialアプリを追加する</h2>
<p>無事アカウントの取得ができたら、実際にアプリケーションを試すことができるようになります。ちなみに、どこかのサーバーにGoogleGadgetのXMLファイルを置いておく必要がありますので、Geocitiesでも何でもいいはずですので、ファイルをアップできるところを用意しておきましょう。</p>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/03/orkut1.jpg" title="Orkut1"><img src="http://devlog.agektmr.com/wp-content/uploads/2008/03/orkut1.jpg" alt="Orkut1" /></a><a href="http://devlog.agektmr.com/wp-content/uploads/2008/03/orkut1.jpg" title="Orkut1"> </a></p>
<p>Sandboxにログインするとこんな感じ。一見通常のログイン画面と変わりませが、一点だけ：</p>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/03/orkut2.jpg" title="Orkut2"><img src="http://devlog.agektmr.com/wp-content/uploads/2008/03/orkut2.jpg" alt="Orkut2" /></a></p>
<p>画面左にアプリケーションを追加するリンクがあります。クリックすると・・・</p>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/03/orkut3.jpg" title="Orkut3"><img src="http://devlog.agektmr.com/wp-content/uploads/2008/03/orkut3.jpg" alt="Orkut3" /></a></p>
<p>URLでXMLファイルを指定してアプリケーションを追加することが出来ます。(ちなみにアプリケーションディレクトリはいつもほとんどアプリがありません)</p>
<p>ここでは、僕の作ったアプリケーションで試してみましょう。URLに下記を入力します：</p>
<pre>http://devlab.agektmr.com/OpenSocial/FriendIntroducer.xml</pre>
<p>「アプリケーションを追加」ボタンを押すと、次の画面に遷移します。</p>
<h2><a href="http://devlog.agektmr.com/wp-content/uploads/2008/03/orkut4.jpg" title="Orkut4"><img src="http://devlog.agektmr.com/wp-content/uploads/2008/03/orkut4.jpg" alt="Orkut4" /></a></h2>
<p>ここでも「アプリケーションを追加」ボタンを押すことで、アプリケーションの追加が完了します。</p>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/03/orkut5.jpg" title="Orkut5"><img src="http://devlog.agektmr.com/wp-content/uploads/2008/03/orkut5.jpg" alt="Orkut5" /></a></p>
<p>こんな感じの画面が表示されたら成功。Orkut上に友達がいない方は、<a href="http://sandbox.orkut.com:80/Profile.aspx?uid=2129608995524995619" target="_blank">僕のアカウント</a>に友達申請してくれてもOKです。</p>
<p>ひとまず、第一回はここまで。</p>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/03/orkut4.jpg" title="Orkut4"> </a></p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/22/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shindigのphp版を試す</title>
		<link>http://devlog.agektmr.com/ja/archives/11</link>
		<comments>http://devlog.agektmr.com/ja/archives/11#comments</comments>
		<pubDate>Mon, 17 Mar 2008 05:35:14 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[Widget]]></category>
		<category><![CDATA[Gadget]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Shindig]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/archives/11</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F11", "style": "big", "title":  [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F11%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Shindig%E3%81%AEphp%E7%89%88%E3%82%92%E8%A9%A6%E3%81%99%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F11", "style": "big", "title": "Shindigのphp版を試す" });</script></div>
<p>先日のGoogleディベロッパー交流会でShindigのphp版が公開されていることを知り、試してみました。</p>
<h2>Shindigをチェックアウトする</h2>
<pre>&gt; svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk .</pre>
<p>Shindigのソースがチェックアウトされます。(今回試したリビジョンは637739)</p>
<pre>&gt; ln -s ~/Development/Shindig/php/gadgets /Library/WebServer/Documents/gadgets</pre>
<p>これでローカルホスト上で見れるはず。ブラウザに下記のURLを入力します。</p>
<pre>http://localhost/gadgets/ifr?url=http://www.labpixies.com/campaigns/todo/todo.xml</pre>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/03/notfound.jpg" title="NotFound"><img src="http://devlog.agektmr.com/wp-content/uploads/2008/03/notfound.jpg" alt="NotFound" /></a><a href="http://devlog.agektmr.com/wp-content/uploads/2008/03/notfound.jpg" title="NotFound"> </a></p>
<p>見れません、、、</p>
<h2>httpd.confを修正</h2>
<p>どうやら、Mac OS X(Leopard)のhttpd.confのデフォルト 設定が邪魔している模様。</p>
<pre>/etc/apache2/httpd.conf</pre>
<p>を書き換えます。/etc/httpd/httpd.confではないことに注意。(Tigerはこれだった)</p>
<pre>&lt;Directory "/Library/WebServer/Documents"&gt;</pre>
<p>内の</p>
<pre>AllowOverride None</pre>
<p>を</p>
<pre>AllowOverride All</pre>
<p>に変更します。これでいけるはず。。。</p>
<p><a href="http://devlog.agektmr.com/wp-content/uploads/2008/03/todogadget.jpg" title="ToDoGadget"><img src="http://devlog.agektmr.com/wp-content/uploads/2008/03/todogadget.jpg" alt="ToDoGadget" /></a></p>
<p>できた！これで、色々いじれますよ・・・</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/11/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenSocialの疑問がひとつ解決した</title>
		<link>http://devlog.agektmr.com/ja/archives/10</link>
		<comments>http://devlog.agektmr.com/ja/archives/10#comments</comments>
		<pubDate>Sat, 15 Mar 2008 14:02:43 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[Widget]]></category>
		<category><![CDATA[Gadget]]></category>
		<category><![CDATA[Orkut]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/ja/archives/10</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F10", "style": "big", "title":  [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: left;margin-right: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fdevlog.agektmr.com%252Fja%252Farchives%252F10%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22OpenSocial%E3%81%AE%E7%96%91%E5%95%8F%E3%81%8C%E3%81%B2%E3%81%A8%E3%81%A4%E8%A7%A3%E6%B1%BA%E3%81%97%E3%81%9F%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fja%2Farchives%2F10", "style": "big", "title": "OpenSocialの疑問がひとつ解決した" });</script></div>
<p><strong>前提：Google Gadgetでurlタイプを指定した場合、iframe内にはリモートサーバーの内容がそのまま表示されるため、Ajaxで友達情報等を取得しようとすると、ドメイン超えが必要となり、プロキシ経由でサーバー間通信となりRESTful APIがないと役に立たない</strong></p>
<p>どうやらOrkutでは、Content Type=&#8217;url&#8217;を許可していない模様。</p>
<p><a href="http://groups.google.com/group/opensocial-orkut/browse_thread/thread/f6de89397dc56576/70f57151180b87cb?lnk=gst&amp;q=content+type+url#70f57151180b87cb" target="_blank">MYSQL database connection using PHP for my gadget ? &#8211; Orkut Developer Forum | Google グループ</a></p>
<p>Content Type=&#8217;url&#8217;を指定すると404が返るらしい。 404が返ること自体はバグとのことですが、Content Type=&#8217;url&#8217;が動くようになったところで、ドメインを超えてOpenSocialを利用するにはプロキシを介したRESTful APIによるアクセスが必須であることは確認できました。これがRESTful APIが正式に登場するまでの暫定措置なのかどうかは未確認ですが、前提は誤っていなかったようです。</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/ja/archives/10/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
