<?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; OpenSocial</title>
	<atom:link href="http://devlog.agektmr.com/en/archives/category/opensocial/feed" rel="self" type="application/rss+xml" />
	<link>http://devlog.agektmr.com</link>
	<description>SocialWeb Evolves</description>
	<lastBuildDate>Mon, 05 Jul 2010 05:13:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>EN</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>OpenSocial&#8217;s Architecture Slide</title>
		<link>http://devlog.agektmr.com/en/archives/683</link>
		<comments>http://devlog.agektmr.com/en/archives/683#comments</comments>
		<pubDate>Sat, 14 Nov 2009 14:50:21 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[Shindig]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/en/?p=683</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F683", "style": "big", "title": "OpenSocial's Architecture Slide" });
I&#8217;ve made a presentation about OpenSocial&#8217;s Architecture an event: Tokyo GTUG #4. Here I publish the slide I&#8217;ve used though it&#8217;s all in Japanese. Hope this will help someone.
OpenSocialのアーキテクチャ
View more documents from Eiji Kitamura.


]]></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%252Fen%252Farchives%252F683%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22OpenSocial%27s%20Architecture%20Slide%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F683", "style": "big", "title": "OpenSocial's Architecture Slide" });</script></div>
<p>I&#8217;ve made a presentation about OpenSocial&#8217;s Architecture an event: Tokyo GTUG #4. Here I publish the slide I&#8217;ve used though it&#8217;s all in Japanese. Hope this will help someone.</p>
<div id="__ss_2499345" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="OpenSocialのアーキテクチャ" href="http://www.slideshare.net/agektmr/opensocial-2499345">OpenSocialのアーキテクチャ</a><object style="margin:0px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=opensocial-091114084123-phpapp01&amp;stripped_title=opensocial-2499345" /><param name="allowfullscreen" value="true" /><embed style="margin:0px" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=opensocial-091114084123-phpapp01&amp;stripped_title=opensocial-2499345" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">documents</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/agektmr">Eiji Kitamura</a>.</div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/en/archives/683/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpenSocial Hackathon in Aizu</title>
		<link>http://devlog.agektmr.com/en/archives/682</link>
		<comments>http://devlog.agektmr.com/en/archives/682#comments</comments>
		<pubDate>Tue, 15 Sep 2009 03:01:41 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[Hackathon]]></category>
		<category><![CDATA[Aizu IT Summer Forum]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/en/archives/682</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F682", "style": "big", "title": "OpenSocial Hackathon in Aizu" });
There&#8217;ll be Aizu IT Summer Forum held on 18th Sept. in Aizu Fukushima, Japan. I&#8217;m going to have a session there, which will be about &#8220;Architectural overview on OpenSocial&#8221;.
On the next day, 19th Sept. there&#8217;ll be OpenSocial Hackathon in Aizu at the same place for [...]]]></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%252Fen%252Farchives%252F682%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22OpenSocial%20Hackathon%20in%20Aizu%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F682", "style": "big", "title": "OpenSocial Hackathon in Aizu" });</script></div>
<p>There&#8217;ll be <a href="http://www.ubic-u-aizu.pref.fukushima.jp/it-summer/" target="_blank">Aizu IT Summer Forum</a> held on 18th Sept. in Aizu Fukushima, Japan. I&#8217;m going to have a session there, which will be about &#8220;Architectural overview on OpenSocial&#8221;.</p>
<p>On the next day, 19th Sept. there&#8217;ll be OpenSocial Hackathon in Aizu at the same place for as an accompanying event of <a href="http://mashupaward.jp/" target="_blank">Mashup Awards5</a>.</p>
<p>If you happen to be in Aizu, please join us :)</p>
<p>Details and application form (written in Japanese):</p>
<p><a href="https://spreadsheets.google.com/a/agektmr.com/viewform?formkey=dGtZbVFaSzNhbTdZb1RPd3h3azhHSmc6MA.." target="_blank">OpenSocial Hackathon in Aizu</a></p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/en/archives/682/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I have become an Apache Shindig committer</title>
		<link>http://devlog.agektmr.com/en/archives/656</link>
		<comments>http://devlog.agektmr.com/en/archives/656#comments</comments>
		<pubDate>Sat, 29 Aug 2009 00:19:40 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[SocialWeb]]></category>
		<category><![CDATA[Shindig]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/en/?p=656</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F656", "style": "big", "title": "I have become an Apache Shindig committer" });
&#8220;Web will become more social&#8221; This has been what I kept telling people after 2005, when I&#8217;d joined goo. There&#8217;s so much things we can do when we make social graphs as a platform.  First thing I tried was to make a [...]]]></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%252Fen%252Farchives%252F656%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22I%20have%20become%20an%20Apache%20Shindig%20committer%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F656", "style": "big", "title": "I have become an Apache Shindig committer" });</script></div>
<p>&#8220;Web will become more social&#8221; This has been what I kept telling people after 2005, when I&#8217;d joined goo. There&#8217;s so much things we can do when we make social graphs as a platform.  First thing I tried was to make a social platform on a portal site, which turns out to be <a href="http://home.goo.ne.jp/" target="_blank">goo Home</a>.</p>
<p>I already had an image of the future at that time: the social graph will be expanded to external web and it will tie any other services into one with social connections. It was before we laungh goo Home when <a href="http://www.facebook.com/" target="_blank">Facebook</a> emerged.</p>
<p>What Facebook was trying to do was not like what I initially imagined: getting external services into their service. It was totally opposite to what I was imagining, but I realized our ultimate goal must be the same. Making web social. After a few month, <a href="http://www.opensocial.org/" target="_blank">OpenSocial</a> got announced.</p>
<p>OpenSocial decides its spec democratic and open. Openness is good. Imagine you want to tie 2 systems social. Needless to say, it&#8217;s easier when the spec is something standard. You can omit communication cost as well as technical endeavor.</p>
<p>On top of that, with open spec, a lot of product may be expected. Taking OpenSocial as example, there&#8217;s Yoichiro Tanaka&#8217;s <a href="http://code.google.com/p/opensocial-development-environment/" target="_blank">OpenSocial Development Environment</a>, <a href="http://groups.google.com/group/opensocial-client-libraries" target="_blank">OpenSocial Client Library</a>, OAuth related libraries, <a href="http://code.google.com/p/opensocial-signed-request-php-library/" target="_blank">OpenSocial Signed Request Library</a> which I developed&#8230; Whole bunch of open source products help latter joining developers.</p>
<p>And the primal open source product among OpenSocial is <a href="http://incubator.apache.org/shindig/" target="_blank">Shindig</a>, OpenSocial container&#8217;s reference implementation.</p>
<p>Shindig was my textbook to learn existing spec of OpenSocial. There was almost no one else in Japan who looked into Shindig, so I was invited to become an Google API Expert.</p>
<p>I&#8217;ve also wrote a lot of patches to Shindig on my way to developing goo Home. And 1 and half years have passed&#8230;</p>
<p><strong>I have become a committer of Apache Shindig</strong></p>
<p>I made my first contact with Mr. Chris Chabot who has been the main committer of PHP Shindig. I met him in person at Google IO 2008, occasionally chatting on messenger, he recommended me to become Shindig committer.</p>
<p>To become a committer in Apache Software Foundation, you have to get voted. And luckily, I was approved.</p>
<p>PHP Shindig is said to be used be more than 26 SNS with 5 million users. I was really excited to know that.</p>
<p>To me, OpenSocial is just a tool to make my ideal social web possible. But at least in Japan, there&#8217;s no other choice now and OpenSocial IS the standard. And Shindig which is used in mixi and goo, is the one which support its core.</p>
<p>I&#8217;m hoping to make Social Web happen in Japan and support it as a Shindig committer.</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/en/archives/656/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GadgeTweetr: The first and ultimate Twitter client on OpenSocial using OAuth</title>
		<link>http://devlog.agektmr.com/en/archives/624</link>
		<comments>http://devlog.agektmr.com/en/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[GadgeTweetr]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/en/?p=624</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F624", "style": "big", "title": "GadgeTweetr: The first and ultimate Twitter client on OpenSocial using OAuth" });

goo Home just launched its Outbound OAuth support from today. Now, any gadget developers on goo Home can easily mash up external contents authorized using OAuth.
For demonstration purpose, I&#8217;ve developed a gadget, which I believe is the world&#8217;s [...]]]></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%252Fen%252Farchives%252F624%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22GadgeTweetr%3A%20The%20first%20and%20ultimate%20Twitter%20client%20on%20OpenSocial%20using%20OAuth%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F624", "style": "big", "title": "GadgeTweetr: The first and ultimate Twitter client on OpenSocial using OAuth" });</script></div>
<p><a href="http://home.goo.ne.jp/gadget/qYpTF5ucNCt2/detail" target="_blank"><img style="border: 0px initial initial;" 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 Home</a> just launched its <a href="http://developer.home.goo.ne.jp/document/OAuthリクエスト" target="_blank">Outbound OAuth support</a> from today. Now, any gadget developers on goo Home can easily mash up external contents authorized using OAuth.</p>
<p>For demonstration purpose, I&#8217;ve developed a gadget, which I believe is the world&#8217;s first <a href="http://twitter.com/" target="_blank">Twitter</a> client on OpenSocial using OAuth, called &#8220;<a href="http://home.goo.ne.jp/gadget/qYpTF5ucNCt2/detail" target="_blank">GadgeTweetr</a>&#8220;. GadgeTweetr is simple, but powerful, even on comparing to other desktop Twitter clients.</p>
<h2>Major features</h2>
<ul>
<li>OAuth Login</li>
<li>Tabs</li>
<li>Show In-Reply-To</li>
<li>Search</li>
<li>Multi-account</li>
</ul>
<h2 style="font-size: 1.5em;">OAuth Login</h2>
<p>With support of <a href="http://oauth.net/core/1.0" target="_blank">OAuth</a>, GadgeTweetr can let users login to Twitter without giving credentials to goo Home. Just by clicking &#8220;Login&#8221; button, a new window opens with clear indication that the browser is showing page on twitter.com, users can login to Twitter safely without worrying this is phishing.</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 style="font-size: 1.5em;">Tabs</h2>
<p>Using OpenSocial tabset feature, GadgeTweetr provides view of various status pages like some other Twitter clients do. Timeline, Mentions, Direct Message, Favorites, etc.</p>
<p><img 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 style="font-size: 1.5em;">Show In-Reply-To</h2>
<p>If the status is in-reply-to someone, GadgeTweetr shows &#8220;reply to:&#8221; beside its date. Clicking it will insert source status just blow that, so that you can drill down (up?) to the original tweet.</p>
<p><img style="border: 0px initial initial;" title="replies" src="http://devlog.agektmr.com/wp-content/uploads/2009/08/replies-300x157.png" alt="replies" width="300" height="157" /></p>
<h2 style="font-size: 1.5em;">Search</h2>
<p>You can search on Twitter. GadgeTweetr opens search result tab.</p>
<p><img style="border: 0px initial initial;" title="search" src="http://devlog.agektmr.com/wp-content/uploads/2009/08/search-300x203.png" alt="search" width="300" height="203" /></p>
<h2 style="font-size: 1.5em;">Multi-account</h2>
<p>User can embed multiple copies of GadgeTweetr gadgets on goo Home&#8217;s home page with different authentications. So you have multiple Twitter accounts in one view!</p>
<p><img style="border: 0px initial initial;" 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 style="font-size: 1.5em;">Misc features</h2>
<h3 style="font-size: 1.17em;">3 views</h3>
<p>GadgeTweetr has 3 views: home, profile and canvas. Home view provides Timeline, Mentions tabs, profile view provides its owner&#8217;s timeline, canvas view provides Timeline, Mentions, Direct Message, Favorites tabs as default.</p>
<h3 style="font-size: 1.17em;">Auto link</h3>
<p>GadgeTweetr detects @ and # and hyper link it, as well as external link. External link will open new window. @ and # opens new tab in GadgeTweetr showing respective status.</p>
<h3 style="font-size: 1.17em;">ReTweet</h3>
<p>By clicking ReTweet button, you can tweet copy of your favorite status message with indication of ReTweet: &#8220;RT&#8221;. Of course, you can add your comment just as you do on your own tweet.</p>
<h3 style="font-size: 1.17em;">Show profile</h3>
<p>Clicking thumbnail of a user shows profile dialog with description of the person, numbers of friends, followers, tweets.</p>
<h3 style="font-size: 1.17em;">Follow, unfollow</h3>
<p>On profile dialog, you can even follow or unfollow the user depending on your relationship with the user.</p>
<h2 style="font-size: 1.5em;">Summary</h2>
<p>So, this is the &#8220;GadgeTweetr&#8221;. Sorry but this gadget only works on <a href="http://home.goo.ne.jp/" target="_blank">goo Home</a> for now, since I don&#8217;t know any other containers which supports OAuth properly designed to deploy this kind of gadget.</p>
<p>However, this gadget is already supporting English and is ready to serve to other containers. Although current version is just a plain Twitter client, I&#8217;m planning to implement more SOCIAL functionality as well.</p>
<p>Hope this helps the evolution of social web!</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/en/archives/624/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpenSocial Signed Request Library(PHP) Beta</title>
		<link>http://devlog.agektmr.com/en/archives/597</link>
		<comments>http://devlog.agektmr.com/en/archives/597#comments</comments>
		<pubDate>Thu, 13 Aug 2009 16:31:58 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[Signed Request]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/en/?p=597</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F597", "style": "big", "title": "OpenSocial Signed Request Library(PHP) Beta" });
Signed Request in OpenSocial is a convenient solution for gadget developers to verify their remote content request is not spoofed. You can pick signature attached to the request and verify that no params are changed, added or removed.
Implementing this is not difficult, but since [...]]]></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%252Fen%252Farchives%252F597%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22OpenSocial%20Signed%20Request%20Library%28PHP%29%20Beta%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F597", "style": "big", "title": "OpenSocial Signed Request Library(PHP) Beta" });</script></div>
<p>Signed Request in OpenSocial is a convenient solution for gadget developers to verify their remote content request is not spoofed. You can pick signature attached to the request and verify that no params are changed, added or removed.</p>
<p>Implementing this is not difficult, but since I don&#8217;t see any library, easy to use out of the box, I hereby introduce <a href="http://code.google.com/p/opensocial-signed-request-php-library/" target="_blank">opensocial-signed-request-php-library</a> as beta.</p>
<p>This library is using OAuth Library on Google Code. Major container&#8217;s public keys are included: orkut, Google, Friendster, hi5, hyves, Netlog, mixi and goo Home.</p>
<h2>How to use</h2>
<p>Check out from Google Code:</p>
<pre>svn checkout http://opensocial-signed-request-php-library.googlecode.com/svn/trunk/ opensocial-signed-request-php-library-read-only</pre>
<p>Looking at <a href="http://code.google.com/p/opensocial-signed-request-php-library/source/browse/trunk/example.php" target="_blank">sample implementation</a> should be the easiest way to learn. Instantiate SignedRequestValidator with gadget&#8217;s url, do validate_request(). that&#8217;s it. If validation fails, library will respond 401 and die. Further code can be written after that. It&#8217;s that simple.</p>
<h2>Other known libraries</h2>
<p>There&#8217;s a few libraries doing similar things, I know useful.</p>
<ul>
<li>Google AppEngine Python, Django library: <a href="http://code.google.com/p/gaeoauth/" target="_blank">gaeoauth</a></li>
<li>Apache module: <a href="http://code.google.com/p/mod-auth-opensocial/" target="_blank">mod_auth_opensocial</a></li>
</ul>
<h2>Give me feedback</h2>
<p><a style="text-decoration: none; color: #000000;" href="http://code.google.com/p/opensocial-signed-request-php-library/">opensocial-signed-request-php-library</a> should work straight. But in case you find bug, better API, please give me feedback. It&#8217;s still beta :)</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/en/archives/597/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Developer Day 2009 Movies</title>
		<link>http://devlog.agektmr.com/en/archives/568</link>
		<comments>http://devlog.agektmr.com/en/archives/568#comments</comments>
		<pubDate>Sat, 18 Jul 2009 15:34:20 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[Event]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[Google Developer Day]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/en/?p=568</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F568", "style": "big", "title": "Google Developer Day 2009 Movies" });
Movies of Google Developer Day 2009 which I&#8217;ve been on stage for a session and a little speach for Keynote have been published on Youtube.
Keynote vol.4 OpenSocial

OpenSocial Panel Discussion


]]></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%252Fen%252Farchives%252F568%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Google%20Developer%20Day%202009%20Movies%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F568", "style": "big", "title": "Google Developer Day 2009 Movies" });</script></div>
<p>Movies of Google Developer Day 2009 which I&#8217;ve been on stage for a session and a little speach for Keynote have been published on Youtube.</p>
<h2 style="font-size: 1.5em;">Keynote vol.4 OpenSocial</h2>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/aRlBkj5YZ-s&amp;hl=ja&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/aRlBkj5YZ-s&amp;hl=ja&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>OpenSocial Panel Discussion</h2>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/0-RkHqhMsjo&amp;hl=ja&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/0-RkHqhMsjo&amp;hl=ja&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/en/archives/568/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>インタビュー掲載</title>
		<link>http://devlog.agektmr.com/en/archives/541</link>
		<comments>http://devlog.agektmr.com/en/archives/541#comments</comments>
		<pubDate>Fri, 19 Jun 2009 23:16:49 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Article]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/en/?p=541</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F541", "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%252Fen%252Farchives%252F541%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%93%E3%83%A5%E3%83%BC%E6%8E%B2%E8%BC%89%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F541", "style": "big", "title": "インタビュー掲載" });</script></div>
<p>先日Googleの及川さん、石原さんと一緒にインタビューを受けました。</p>
<p><a href="http://www.atmarkit.co.jp/fwcr/rensai2/google_int_05/01.html" target="_blank">OpenSocialアプリ、開発者にとっての魅力（1/2）－＠IT</a></p>
<p><a href="http://home.goo.ne.jp/" target="_blank">gooホーム</a>の方向性や<a href="http://developer.home.goo.ne.jp/" target="_blank">ドキュメント</a>、<a href="http://www.opensocial.org/" target="_blank">OpenSocialコミュニティ</a>や<a href="http://incubator.apache.org/shindig/" target="_blank">Shindig</a>へのコントリビュートについてなどお話しさせて頂きました :)</p>
<p>ぜひご一読ください。</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/en/archives/541/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mixiアプリのガジェットXMLを覗き見るブックマークレット</title>
		<link>http://devlog.agektmr.com/en/archives/537</link>
		<comments>http://devlog.agektmr.com/en/archives/537#comments</comments>
		<pubDate>Wed, 17 Jun 2009 05:05:34 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[mixiアプリ]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/en/?p=537</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F537", "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%252Fen%252Farchives%252F537%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22mixi%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88XML%E3%82%92%E8%A6%97%E3%81%8D%E8%A6%8B%E3%82%8B%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%2Fen%2Farchives%2F537", "style": "big", "title": "mixiアプリのガジェットXMLを覗き見るブックマークレット" });</script></div>
<p>OpenSocialといえばmixiアプリ、いやむしろmixiアプリってそういえばOpenSocial？という感じの空気をひしひしと感じてますが、皆さんいかがお過ごしでしょうか。</p>
<p>今日はそんなmixiアプリの中身を覗き見るブックマークレットをご紹介します。</p>
<p><a href="javascript:var%20url%20=%20document.getElementsByTagName('iframe')%5B1%5D.src;url%20=%20decodeURIComponent(url.replace(/%5E.*?url=(.*?)&amp;.*$/i,%20'$1'));window.open(url);undefined;" target="_blank">Peep mixi Appli XML</a></p>
<p>これを読んでるであろう人に詳しい説明は不要なので、簡単に書きます。</p>
<p>上記リンクをブラウザのブックマークに保存してください。mixiアプリの画面を開いてそのブックマークをクリックすると、ガジェットXMLのソースページが開きます。SafariとFirefoxで動作確認済みです。</p>
<p>これで、ガジェットがどんな風にできているのか、気軽に覗き見ることができますね。</p>
<p>※そういえば<a href="http://home.goo.ne.jp/" target="_blank">gooホーム</a>もOpenSocialです。</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/en/archives/537/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ガジェットのレンダリング速度を向上するPreload</title>
		<link>http://devlog.agektmr.com/en/archives/526</link>
		<comments>http://devlog.agektmr.com/en/archives/526#comments</comments>
		<pubDate>Tue, 16 Jun 2009 16:06:56 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[OpenSocial]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/en/?p=526</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F526", "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%252Fen%252Farchives%252F526%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%81%AE%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0%E9%80%9F%E5%BA%A6%E3%82%92%E5%90%91%E4%B8%8A%E3%81%99%E3%82%8BPreload%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F526", "style": "big", "title": "ガジェットのレンダリング速度を向上するPreload" });</script></div>
<p>今回はOpenSocialでネット上にあまり情報のないPreloadについて、解説してみます。</p>
<h2>ガジェットレンダリングの流れ</h2>
<p>単純にRSSを表示するガジェットを例に説明します。あるコンテナSNS上でこのガジェットを表示する場合、下記のような手順を踏みます。</p>
<ol>
<li>コンテナSNSのレンダリング</li>
<li>ガジェットサーバーがガジェットをレンダリング</li>
<li>ブラウザ上でガジェットのJavaScriptが初期化</li>
<li>外部サイトのRSSを取得するためのAjaxリクエストをガジェットサーバーに送信</li>
<li>ガジェットサーバーが外部サーバーにリクエストを送信(キャッシュがあればスキップ)</li>
<li>ガジェットサーバーはレスポンスをブラウザに戻す</li>
<li>ブラウザ上でガジェットのJavaScriptがレスポンス内容を元に記事一覧をレンダリング</li>
</ol>
<p><img class="alignnone" title="rendering without preload" src="http://www.websequencediagrams.com/cgi-bin/cdraw?lz=cGFydGljaXBhbnQgIlJlbW90ZSBTZXJ2ZXIiCgAPDUdhZGdldAAHFUJyb3dzZXIKCgoAGA0tPgASBzogcmVuZGVyaW5nIGcAQgUKbm90ZSBvdmVyADUIOiBKUyBpbml0KCkKAEkHLT4AZw06IHJlcXVlc3QgZXh0ZXJuYWwgY29udGVudAphY3RpdmF0ZSAAgRgNAH4QAIFRDQBECgA0EQCBeQ0KAIIHDS0AgQETc3BvbnNlAIEDCWRlADIXAIICGgA7BwCBRhEAQAsAgUsOAIIrEwCCWQk&amp;s=napkin" alt="" width="529" height="407" /></p>
<p>ざっとこんな感じになります。</p>
<p>OpenSocialコンテナの動きを理解していない人には若干分かりづらいかもしれません。<a href="http://devlog.agektmr.com/archives/363" target="_blank">この辺りの記事</a>を参考にしてください。</p>
<p>さて、この一連の動きを効率化することで、全体の体感レンダリング速度を速くする方法があります。それが今回ご紹介するPreloadです。</p>
<h2>ガジェットのレンダリングを高速化するPreload</h2>
<p>Preloadは文字通り、レンダリングに先立ってロードしておいてくれる機能です。使い方は簡単で、/Module/ModulePrefs/Preload@hrefに呼び出したいURLを記述します。これで、先ほどのレンダリングの挙動が下記のように変わります。</p>
<ol>
<li>コンテナSNSのレンダリング</li>
<li>ガジェットサーバーがPreloadで指定された外部サーバーにリクエストを送信(キャッシュがあればスキップ)</li>
<li>ガジェットサーバーがガジェットをレンダリング</li>
<li>ブラウザ上でガジェットがJavaScriptを初期化</li>
<li>外部サイトのRSSを取得するためのAjaxリクエストをブラウザ上で処理</li>
<li>ブラウザ上でガジェットのJavaScriptがレスポンス内容を元に記事一覧をレンダリング</li>
</ol>
<p><img class="alignnone" title="rendering with preload" src="http://www.websequencediagrams.com/cgi-bin/cdraw?lz=cGFydGljaXBhbnQgIlJlbW90ZSBTZXJ2ZXIiCgAPDUdhZGdldAAHFUJyb3dzZXIKCgAXDS0-AEINOiByZXF1ZXN0IGNvbnRlbnQKYWN0aXZhdGUgAGoNCgB4DS0tPgBsDTogcmVzcG9uc2UAPglkZQAyFwCAfw8AgR8HOiByZW5kZXJpbmcgZwCBTwUKbm90ZSBvdmVyAIFCCDogSlMgaW5pdCgpCgCBVgcANQtwcmVsb2FkZWQAJRQAVAkK&amp;s=napkin" alt="" width="474" height="400" /></p>
<p>図にしてみると一目瞭然ですが、通信部分のオーバーヘッドを削減できています。こりゃ便利。</p>
<p>仕組みは単純で、ガジェットがプリフェッチした外部コンテンツを埋め込んだソースコードをブラウザに渡し、makeRequest時にプリフェッチした内容が存在すれば実際のAjaxリクエストを行わずに応答を返してしまう、というものです。</p>
<h2>Preload利用時の注意点</h2>
<p>Preloadはとても便利な反面、扱いにくい性質のものでもあります。以下を理解して、ポイントを絞って使う必要があります。</p>
<h3>キャッシュの有効期限をコントロールできない</h3>
<p>結構致命的なのがこれです。キャッシュの有効期限をコントロールできないと、デフォルト(24時間が多い)のキャッシュ期限が適用されます。これを回避できるケースとしては、ユーザーが任意の動作でmakeRequestを行うため、その時にキャッシュの有効期限をクリアできる場合が挙げられます。逆に言うと、RSSを表示するだけでユーザーは任意に更新できない、でも更新頻度は1時間程度、というようなガジェットには向いていません。</p>
<h3>ContentTypeを指定できない</h3>
<p>通常makeRequestを行う場合、ContentTypeをDOM, FEED, JSON, TEXTから選択することが出来ます。特にFEEDに関しては、RSS/RDF/Atomを丸めてJsonで返してくれるため、慣れた人には便利な形式です,</p>
<p>しかしこの挙動は、明示的にContentTypeとしてFEEDを指定し、ガジェットサーバーが外部コンテンツを取得した際に特別な処理を行うことで実現されているため、ContentTypeを指定できないPreloadでは、これを行うことはできません。RSS等をPreloadしたい場合は、DOMを選択してパースするしかありません。</p>
<h3>UserPrefsの内容を反映することが出来る</h3>
<p>/Module/ModulePrefs/Preload@hrefの内容に__UP_****__といった形でUserPrefsの内容を含めることができます。これは残念ながらmixiアプリでは使えない技ですね。</p>
<pre class="brush: jscript;">&lt;Preload href=&quot;http://example.com/example.php?id=__UP_userpref__&quot; /&gt;</pre>
<h3>Signed Requestが使える</h3>
<p>/Module/ModulePrefs/Preload@authzに&#8221;signed&#8221;を指定することで、署名リクエストが行えます。これの利点は、ガジェット側でビューアーのIDを指定しなくても、サーバーが署名と一緒に送ってくれるため、上記のUserPrefsのケースのように、URLを工夫する必要がない点です。</p>
<h3>コードを変える必要はない</h3>
<p>PreloadはガジェットXMLにメタデータを追加するだけですので、基本的にJavaScriptのコードをいじる必要はありません。もちろん、キャッシュを気にしたりするといじった方がよい場合もありますけどね。</p>
<h3>Preloadはいくつでも指定できる</h3>
<p>実はPreloadはいくつでも指定できます。これまでに挙げた条件をクリアしているのであれば、思い切って使ってみましょう。</p>
<h2>まとめ</h2>
<p>今回は存在が地味なのであまり注目されていないけど、うまく使えば非常に便利なPreload機能を紹介しました。うまいこと使いこなして、一流OpenSocialerを目指しましょう。</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/en/archives/526/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenSocialのパーミッションモデル</title>
		<link>http://devlog.agektmr.com/en/archives/512</link>
		<comments>http://devlog.agektmr.com/en/archives/512#comments</comments>
		<pubDate>Wed, 29 Apr 2009 01:37:08 +0000</pubDate>
		<dc:creator>Eiji</dc:creator>
				<category><![CDATA[FriendConnect]]></category>
		<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[Permission Model]]></category>

		<guid isPermaLink="false">http://devlog.agektmr.com/en/?p=512&amp;language=ja</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F512", "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%252Fen%252Farchives%252F512%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22OpenSocial%E3%81%AE%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%A2%E3%83%87%E3%83%AB%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Fdevlog.agektmr.com%2Fen%2Farchives%2F512", "style": "big", "title": "OpenSocialのパーミッションモデル" });</script></div>
<p>最近「<a target="_blank" href="http://groups.google.com/group/opensocial-japan/browse_thread/thread/ffa5f8182c36252f#">OpenSocialでOwnner毎 or Owner*アプリ毎の永続化方法 オプション</a>」辺りでOpenSocialのパーミッションに関する疑問がいくつか挙っていたので、どういう場合にどのデータにアクセスできるのか、ついでに、FriendConnectにおけるパーミッションモデルについてもまとめてみます。</p>
<p>まずは最低限の知識としてビューアー(VIEWER)/オーナー(OWNER)という考え方と、基本情報/個人情報を押さえておきましょう。</p>
<h2>ビューアーとオーナー</h2>
<p>ガジェットは貼られる場所によって呼び方が異なり、これをビュー(view)と呼びます。OpenSocialでは標準的にhomeビュー、profileビュー、canvasビューが用意されています。<a href="http://developer.home.goo.ne.jp/document/サイト構成">ここ</a>を参考にしてください。</p>
<p>ご覧いただくと分かると思いますが、homeビューのガジェットは自分が見るマイページに貼られる前提で，profileビューは他人が見るプロフィールページに貼られる前提になっています。では，「自分が見る」「他人が見る」は何を意味するのでしょう？</p>
<p>OpenSocialガジェットには所有者/オーナー(OWNER)という考え方があります。オーナーとは，ガジェットをページに貼付けたページの持ち主を指しています。反対に，ガジェットを見る人を閲覧者/ビューアー(VIEWER)と呼びます。</p>
<p>つまり，homeビューで「自分が見る」が意味するのは，オーナーでありビューアー。逆に，profileビューで「他人が見る」が意味するのは，ページを見ているビューアーと，ページの持ち主のオーナーです。もちろん，プロフィールページをオーナー自身が見ているケースでは，オーナーとビューアーは同一人物になります。canvasビューでも同様。</p>
<h2>基本情報と個人情報</h2>
<p>OpenSocialではプロフィール情報は大きく2つに分けられます。<br />
goo Social Platformではこれを基本情報(id, profileUrl, thumbnailUrl, nickname)と個人情報(その他のプロフィール)と分けて呼んでいます。詳細は<a href="http://developer.home.goo.ne.jp/document/友達情報を取得する#goo_Social_Platform.E3.81.8C.E6.89.B1.E3.81.86.E5.80.8B.E4.BA.BA.E6.83.85.E5.A0.B1">こちら</a>をご覧いただいた方が早いと思います。</p>
<p>基本情報は、必要最低限の情報で、個人情報はさらに詳細で重要性の高いものと思ってください。</p>
<h2>基本ルール</h2>
<p>これらを踏まえて、各種情報をやり取りする際に必要となるのが下記の基本ルールになります。</p>
<ul>
<li>個人情報を取得する場合、対象となるユーザー(オブジェクト)が同じガジェットをインストールしていること</li>
<li>オブジェクトが友達の場合、ガジェットをインストールしていなくても基本情報のみ取得可能</li>
<li>更新・削除はビューアーが自分のデータを操作する場合のみ可能</li>
</ul>
<p> </p>
<p>ミソは、</p>
<ul>
<li>友達でもガジェットをインストールしていない人の個人情報は取得できない</li>
<li>友達じゃなくてもガジェットをインストールしていれば個人情報が取得できる</li>
</ul>
<p>ところ。</p>
<p> </p>
<p>「なぜそんなに面倒なの？」「なんでガジェットインストールしてないと個人情報取れないの？」と思われる方も多いかと思いますが、理由はずばり、「プライバシーの保護」です。</p>
<ul>
<li>個人情報はコンテナがユーザーから取得したものである</li>
<li>個人情報保護法では、収集した個人情報を事前に通告した目的外に利用してはならない</li>
<li>個人情報はコンテナが取得したものであり、第三者に譲渡や開示する(ディベロッパーがガジェット上で利用する)場合はユーザーがそれを理解している必要である</li>
<li>ユーザーは誰が自分の個人情報を取得したかを把握できる必要がある</li>
<li>ディベロッパーは受け取った個人情報を外部に流出させることも、売り渡すことも、理論的には可能である</li>
<li>ネット上にパブリックになっている情報でも、受動的に(スクレイピング等)渡す場合と、能動的に(API経由)渡す場合では、法的意味が異なる(そういう意味では、mixiのようなクローズなSNSでも、gooホームのようなオープンなSNSでも扱いは変わらない)</li>
<li>ディベロッパーが故意または事故で個人情報を漏らす等した場合、責任はもちろんディベロッパー側にあるが、情報を提供したコンテナは、ディベロッパーとの連絡を確実に取れる手段を用意しておく必要がある</li>
</ul>
<p> </p>
<p>若干複雑ですが、こんな理由で、本人が意図して利用していないガジェットに対しては、基本的に個人情報を渡さない方向に倒されている、という訳です。これはgooホームだけの話ではなく、まだ明示されてはいませんが、mixiも含め、今後登場するであろうOpenSocialコンテナすべてで似たような実装になると思います。</p>
<p>なお、基本ルールに対する特別ルールについては複雑になるのでここでは説明しません。興味のある方は<a href="http://developer.home.goo.ne.jp/document/パーミッションモデル#.E7.89.B9.E5.88.A5.E3.83.AB.E3.83.BC.E3.83.AB">こちら</a>をご覧下さい。</p>
<h2>FriendConnectのパーミッションモデル</h2>
<p>さて、ここまで一般的なOpenSocialについて解説してきた訳ですが、FriendConnectにおけるガジェットのパーミッションについてここで考えてみましょう。</p>
<p>通常のSNS上のOpenSocialでは、ガジェットをインストールしているかどうかで個人情報を提供するか否かを決定していましたが、FriendConnectではちょっと事情が違います。それは、ガジェットのオーナーが人間ではなく、サイトである、という考え方に基づいている、という点です。</p>
<p><a href="http://devlog.agektmr.com/ja/archives/262">こちらの記事</a>をご覧いただければ分かると思いますが、</p>
<blockquote><p> Ownerはサイト。そういえば、FriendConnectガジェットを入れた時点では、自動的に自分がメンバーになったりはしていませんでした。Ownerは貼付けたサイトという仮想人格が担うようです。 </p></blockquote>
<p>サイトという仮想人格、というところがミソです。つまり、FriendConnectでは、<strong>ユーザーがオーナーになることはあり得ない</strong>のです。そのため、先に解説した一般的OpenSocialのパーミッションモデルをそのまま適用することはできません。</p>
<p> </p>
<p>では、FriendConnectではどういう場合に個人情報を取得できるのでしょうか？</p>
<p>現実的には、私の把握している限り、まだFriendConnect上で基本情報以上の情報(個人情報)を取得することはできないので、必ずしも正しいとは言えないのですが、「そのサイトに参加しているか否か」がパーミッションを得るための条件のようです。</p>
<p>言い換えると FriendConnectの基本ルール：</p>
<ul>
<li>個人情報を取得する場合、対象となるユーザー(オブジェクト)がガジェットを動かそうとしているサイトに登録していること</li>
<li>オブジェクトが同じサイトに登録していれば、個人情報も含め取得可能(実際は取得できないので想像)</li>
<li>更新・削除はビューアーが自分のデータを操作する場合のみ可能</li>
</ul>
<p>となります。一般的OpenSocialの基本ルールと並べて比べてみると、違いが分かると思います。</p>
<p> </p>
<h2>まとめ</h2>
<p>今回は、先日のHackathonでも多数の質問が出たパーミッションモデルの話を解説してみました。開発者にとっては面倒なだけですが、コンテナやユーザーにとっては、プライバシーを守るためにとても重要なことです。</p>
<p>OpenSocialガジェット開発もある程度のレベルに達してきたら、この辺りの理解をしっかりやっておくことが重要だと思います。</p>

]]></content:encoded>
			<wfw:commentRss>http://devlog.agektmr.com/en/archives/512/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
