<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.6" -->
<rss version="0.92">
<channel>
	<title>Tender Surrender</title>
	<link>http://devlog.agektmr.com</link>
	<description>新時代のウェブ技術を分析するブログ</description>
	<lastBuildDate>Thu, 28 Aug 2008 03:18:07 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>ja</language>
	
	<item>
		<title>Data AvailabilityでOAuthを試す</title>
		<description>前エントリでの予告通り、実際にサーバーサイドでコードを書き、MySpaceのData Availabilityを使ってOAuthを試してみます。Data Availabilityという名前は大げさに聞こえるかもしれませんが、実際はOpenSocial RESTful APIです。ちなみにData AvailabilityではまだJSON形式のみのサポートで、AtomPubには対応していません(しかも404が返ってくる。これに相当ハマった○&#124;￣&#124;＿)。

今回はOAuthを使って認証・認可を取得し、Data Availability APIを叩くところまでを解説します。
下準備
まずはサンドボックス環境にMySpaceにアプリを作ってください。細かい手順が分からない方はこの辺を参考にしてください。

MySpaceではガジェットアプリも外部アプリも同じように扱われるようです。



Edit Detailsを開くと、アプリケーションの詳細設定を編集することができます。

ここでOAuthの利用に必要なものを思い出してください。まずはコンシューマキー(consumer_key)とコンシューマシークレット(consumer_secret)です。



MySpaceの場合、アプリケーションを登録した段階でこれら2つが発行されます。コンシューマキーについては好きなものに変更できますが、ここではアプリケーションのガジェットXMLぽいURLにしてみました。後で必要になりますので、どこかにコピペっておきましょう。



次に、同じページの下の方にExternal Site Settingsという項目があります。これがData Availabilityの肝です。

	Use External Domainにチェックを入れる
	External URLにMySpaceからの誘導先URLを入力
	External Domainに実際に外部アプリを置くサーバーのドメインを入力
	利用規約を読んで同意

これで準備オッケー。
OAuthを実装する


今回試すのは上図の外部サービス、つまりコンシューマに当たる部分です。サービスプロバイダに当たるのはMySpace。ゼロから実装してもよいのですが、せっかく便利なライブラリがありますので、これのPHP版を使って試してみます。また、署名方式はHMAC-SHA1を使います。

OAuthのフローは下記の通り。この辺りを読んで仕様を理解しておく事をお勧めします。

	リクエストトークンを取得
	ユーザー認証
	アクセストークンを取得
	リソースにアクセス

リクエストトークンを取得
必要なライブラリをインクルードします。
[sourcecode language='php']require_once 'oauth/OAuth.php';
require_once 'oauth/OAuth_TestServer.php';[/sourcecode]
各種変数をセットしておきましょう。先程メモったconsumer_keyとconsumer_secretはここで使います。リクエストトークンを取得するためのエンドポイントはMySpaceのドキュメントに記載されています。
[sourcecode language='php']$consumer['key'] = 'http://devlab.agektmr.com/MyOpenSpace/DataAvailabilityExample';
$consumer['secret'] = '************';
$endpoint = 'http://api.myspace.com/request_token';[/sourcecode]
署名のロジックはめんどくさいのでライブラリにお任せ。
[sourcecode language='php']$server = new TestOAuthServer(new MockOAuthDataStore());
$server->add_signature_method(new OAuthSignatureMethod_HMAC_SHA1());

$sig_methods = $server->get_signature_methods();
$sig_method = $sig_methods['HMAC-SHA1'];

$consumer = new OAuthConsumer($consumer['key'], $consumer['secret'], NULL);
$request = OAuthRequest::from_consumer_and_token($consumer, NULL, "GET", $endpoint, null);
$request->sign_request($sig_method, $consumer, NULL);

$req = ...</description>
		<link>http://devlog.agektmr.com/archives/107</link>
			</item>
	<item>
		<title>OpenSocialのOAuthまとめ</title>
		<description>OpenSocialでは、コンテナが外部サーバーとの通信を行う際、または外部サーバーがコンテナと通信を行う際、OAuthを使用して認可を行います。今回はOpenSocialにおけるOAuthについて、現段階でのまとめを書いてみます。
OAuthって何だったっけ？
OAuthはユーザー、コンシューマ、サービスプロバイダの3者間でデータのやり取りを行うとした場合、ユーザーがコンシューマにクレデンシャル(IDやパスワード)を渡すことなく、ユーザーが所有するサービスプロバイダ上のリソースにコンシューマをアクセスさせるためのものです。

例えばユーザーがGoogle(サービスプロバイダ)のアドレス帳(リソース)をMySpace(コンシューマ)上で利用するシーンを思い浮かべてください。OAuthがなければ、MySpaceにGoogleのIDとパスワードを預けなければならなかったものが、OAuthを使うことで、ユーザーが直接Googleと認証のやりとりを行い、MySpaceにGoogleのID/パスワードを渡すことなく、アドレス帳のデータをMySpaceに渡すことができるようになります。
2種類のOAuth
さて、そんな便利なOAuthですが、OpenSocialで利用されるものには2種類あります。
OAuth Core
OAuth Coreでは、先程説明したように、ユーザー、コンシューマ、サービスプロバイダの3者間でやり取りを行います。ベーシックなものですので、詳細についてはこの辺りを参考にしてください。
OAuth Consumer Request
一方OAuth Consumer Requestは、OAuthの仕様からユーザー認証部分を除き、コンシューマとサービスプロバイダのやり取りにフォーカスした仕様で、一般に"two-legged OAuth"と呼ばれます。これはコンシューマとサービスプロバイダの信頼関係だけで、ユーザーによる認証を伴わない仕様のため、コンシューマがサービスプロバイダからパブリックな情報を取得したい場合に利用するケースが想定されます。

ちなみにOpenSocial v0.7ではOAuth Coreの利用は仕様に含まれておらず、このtwo-legged OAuthを利用することになっています。OAuth Coreが利用できるのはOpenSocial v0.8以降での話になります(もちろん、two-legged OAuthも利用できます)。
OpenSocialにおけるOAuth利用パターン
OpenSocialでOAuthを利用する形態として、さらに2通りが考えられます。
ガジェットが外部サーバーとやり取りを行うOutbound OAuth


ここでは仮にOutbound OAuthと呼びます。type="html"で作られたガジェットが、SNSコンテナをプロキシとしてコンシューマの役割を果たし、サービスプロバイダとなる外部サーバーとmakeRequestで通信を行うケースです。
外部サーバーがコンテナとやり取りを行うInbound OAuth


ここでは仮にInbound OAuthと呼びます。コンシューマとなる外部サーバーがサービスプロバイダであるSNSコンテナのRESTful APIを叩くケースです。type="url"のガジェットが外部サーバーを通してSNSコンテナのRESTful APIを叩くケースもこれに該当します。
OAuthの利用に必要なもの
OAuthの利用には前提条件がいくつか存在します。細かい仕様は別途調べていただくとして、事前に必要な条件が下記になります。

	コンシューマが、サービスプロバイダの発行する以下を事前に知っていること。

	コンシューマキー(consumer_key)
	コンシューマシークレット(consumer_secret)


	コンシューマが、サービスプロバイダとOAuthのやり取りを行う以下3つのURLを知っていること

	サービスプロバイダのリクエストトークンURL
	サービスプロバイダのアクセストークンURL
	サービスプロバイダの認証URL



OAuth利用パターンごとにどのようにしてこの条件をクリアするかを検証してみます。
Outbound OAuthのケース
ガジェットが外部サーバーとやり取りを行うケースですので、まずはガジェット開発者がSNSコンテナにコンシューマキーとコンシューマシークレットを登録します。ですが僕の知る限り、まだOutbound OAuthを実装しているSNSはありません。なので、ここでは何かしらの手段を用いて(SSLページでFormを使って投稿等)、コンシューマキーとコンシューマシークレットをコンテナに渡したものと想定してください。(今後順次、これを実現する方法は登場するものと思われます。)

次に、サービスプロバイダの各種URLを渡す必要がありますが、v0.8ではガジェットXMLで渡すよう規定されています。OAuthをModulePrefsの中に作成してください。
[sourcecode language='xml']





[/sourcecode]
OAuthは必ずしも1つのサーバーとやり取りするとは限りませんので、Serviceを追加することで複数をサポートすることができるようになっています。Service@nameで使い分けることが出来るようになっていますので、必要に応じてmakeRequestのopt_paramsに下記のパラメータを加え、サービスを指定してください。
gadgets.io.RequestParameters.OAUTH_SERVICE_NAME
サービスプロバイダとOAuthのやり取りを行うURLについては、XRDS-Simpleによって解決する方法もありますが、こちらについては別の機会にまとめてご紹介します。
Inbound OAuthのケース
外部アプリケーションがSNSコンテナのRESTful APIにアクセスする場合になります。これはまさに、FacebookのFacebook ConnectやMySpaceのData Availability、GoogleのFriendConnectに該当するもので、まだ実験的な段階にあると言えるものです。

コンシューマキーとコンシューマシークレットですが、SNSコンテナ上でアプリケーションを登録することで発行されます。それをディベロッパがメモ/コピペしてコンシューマとなるサーバーのコードに埋め込みましょう。URLについては、単純にヘルプページを見る方法と、XRDS-Simpleによるオートディスカバリを行う方法が考えられます。
まとめ
今回は大まかな話を書きましたが、次回は実際にMySpaceのData Availabilityを使ってOAuth認証を行い、データを取得するところまでを試してみたいと思います。 </description>
		<link>http://devlog.agektmr.com/archives/79</link>
			</item>
	<item>
		<title>OpenSocial API仕様(v0.8)を翻訳しました</title>
		<description>OpenSocial API仕様(v0.8)

一ヶ月くらい前から出来てたのですが、一応ブログ記事にも書いておきます。何か間違い等ありましたらお知らせください。 </description>
		<link>http://devlog.agektmr.com/archives/78</link>
			</item>
	<item>
		<title>FriendConnectから垣間見える未来のソーシャルウェブ</title>
		<description>今更ですが、先日サンフランシスコで開かれたGoogle I/Oに参加してきました。

その中でも特に印象に残ったのが、PlaxoのJoseph Smarr氏によるOpenSocial, OpenID, and OAuth: Oh My!というセッション。僕が見たセッションの中ではダントツの人気で、部屋に用意された椅子はもちろん、立ち見で人が溢れ返るほどの盛況ぶり。

内容は、ソーシャルウェブの未来について。現在はOpenSocialというソーシャルグラフを所有するサービスに閉じた世界が中心となりつつありますが、少し未来のウェブはOpenSocial, OpenID, OAuth, PortableContacts等の技術によって、よりグローバルな意味でのソーシャル化が図れるようになる、というものです。

詳細はGoogle Codeにビデオとスライドがアップされていますので、ご覧ください。かなり早口ですが、大変面白い内容です。


OpenSocialとFriendConnectの持つ意味
OpenSocialにはv0.7まで、JavaScriptのAPIしか存在していませんでした。これはOpenSocialコンテナにとっては外部サービスからガジェットとしてアプリケーションを追加してもらい、そのOpenSocialコンテナが持つソーシャルグラフに閉じた形で利用されるものでした。アプリケーション開発者はOpenSocialのJavaScript APIを使い、ガジェットが置かれているコンテナサイトの友達リストを取得し、そこでアプリケーションを動かすことができます。もちろん、ガジェットを自分のサービスドメイン上でホスティングすることも可能ですが、ガジェットはコンテナ上でしか動作せず、友達リストを外部サービスとしてインポートしたりといったことも不可能で、実質的に囲い込みサービスしか生まれないものと言えたでしょう。

それがOpenSocial v0.8 + FriendConnectによって一気に世界を広げます。ユーザーはFriendConnect対応サイトを利用するに当たり、OAuthを使って自分が利用したいSNSサービスを選ぶ権利が与えられています。同時に、そのサイト上での活動内容は連携を選択したSNSサービスに戻されます。

ここでソーシャルサービスの要素を思い出してください。

	アイデンティティ
	ソーシャルグラフ(友達リスト)
	エントリの公開範囲の制御(プライバシー)
	フィード

FriendConnectはアイデンティティをOpenIDで、ソーシャルグラフをOpenSocial v0.8のRESTful APIで、エントリの公開範囲の制御をOAuthで、フィードをActivity Streamで解決しようとしています。

これらの意味するところを深く見つめて行くと、未来のソーシャルウェブが自ずと見えてきます。
Joseph Smarr氏(Plaxo)による未来のソーシャルウェブ論
FriendConnectのイメージをさらに深めるため、Joseph Smarr氏が、PlaxoのFriendConnect対応に際してアップしていたブログエントリをご紹介します。

Plaxo and FriendConnect are now Best Friends
Plaxoが完全にFriendConnectと連携した。FriendConnectとは、あらゆるサイトをソーシャル化する、Googleによるウィジェットベースのツールである。これにより、FriendConnectに対応していれば、どんなサイトでもPlaxoアカウントに安全に接続し、サイト上に自分の友達がいるかを確認したり、友達を招待したりといったことができるようになる。何よりも素晴らしいのは、そのサイトでの活動内容をPulseに流し込むことができるようになり、Plaxoでの友達がウェブを跨いであなたと連絡を取り合うことができ、あなたが発見した新しいサイトを知ることができる点だ。

これは本当に便利でわくわくする連携機能だ -- これはユーザーが自分のアイデンティティと関係をウェブ上のどこでも利用できるようにし、新しいサイトで知人を見つけ出し、活動内容を既存の友達に共有し、よりソーシャルな発見と共有という徳の高いサイクルを生み出す、シームレスソーシャルウェブエコシステムにさらに近付いたと言える。これこそソーシャルウェブの進むべき道だ -- (現在あるほとんどのサービスがそうだが)新しいソーシャルサイトを使い始める度に最初からやり直さなければならないなんてとんでもない。あなたの新しい体験全てが、他の人をも魅了すべきだ。

これはサービスがユーザーに自分の持つデータの制御を与え、オープンスタンダードを使って安全なアクセス権を提供することによってのみ成り立つ。そしてこれこそまさに、PlaxoがFriendConnectを使ってやりたかったことだ。Plaxoアカウントを接続する際、我々はOAuthを使う。そのため、Plaxoのパスワードを渡す必要もないし、後で接続を断つことも可能だ。FriendConnectを使ってあなたが活動内容をPulseに共有する際は、OpenSocial 0.8 RESTful Activities APIを利用する。オープンスタンダードではない連携はアドレス帳APIのみであり、我々はこのスタンダードについても取り組みを開始している。我々はアイデンティティプロバイダとして、ソーシャルグラフプロバイダとして、そしてコンテンツアグリゲータとしての役割を果たしていると強く信じている -- つまり、我々はユーザーが自身のデータと関係性をウェブ上のどこにでも持ち回り、どこからでも共有できるようにしている -- これはユーザーにとっても、Plaxoにとっても、ウェブ全体にとっても有益なことだ。だが、まだこの取り組みは始まったばかり -- FriendConnect対応サイトから活動内容を共有する際、家族や友達、仕事関係など、共有相手をより細かい粒度で制御するなどの、更なる拡張を楽しみにしていて欲しい。

下のスクリーンショットはPlaxoとGoogle FriendConnectの連携したものだ -- FriendConnectを利用しているサイトでも体験してもらうことができる。
画像は実際のページをご覧下さい。
まとめ
ガジェットコンテナとしてのOpenSocialには正直、懐疑的な部分があったのですが、FriendConnectの描く未来を想像し、またわくわくしています。今後もこの辺りの動向を追って行きます。
追記
似たような話題に触れた記事を見つけたので追記し、トラバっておく。(失敗したので断念○&#124;￣&#124;＿)

グーグルが見たソーシャルネットワーキング--その3つの傾向:スペシャルレポート - CNET Japan </description>
		<link>http://devlog.agektmr.com/archives/77</link>
			</item>
	<item>
		<title>OpenSocial RESTful API Specificationを翻訳しました</title>
		<description>これまで公開していたOpenSocial RESTful API Proposalの翻訳を、OpenSocial v0.8仕様のリリースで公開されたOpenSocial RESTful API Specificationに置き換えました。

ただし部分更新処理の項目についてはTBD(To Be Determined)のままになっています。問い合わせしているので、最新版に更新され次第アップします。 </description>
		<link>http://devlog.agektmr.com/archives/76</link>
			</item>
	<item>
		<title>OpenSocialのAtomPubはXRDS-Simpleでディスカバリ</title>
		<description>OpenSocial v0.8のRESTful API仕様では、オートディスカバリにXRDS-Simpleを利用するよう規定されています。

他方、OpenSocial v0.8で利用されるRESTful APIはAtomPub形式となっており、AtomPubではService Documentを利用するよう規定されています。

これではコンテナサイトがどちらを使うのか、両方使うべきなのか疑問が残ってしまいます。この件について、Google GroupsのOpenSocialの仕様を検討するグループに質問を投げてみました。

質問
コンテナサイトはAtomPubのService DocumentとXRDS-Simple、どちらを採用すべきなのでしょうか？両方サポートすべきでしょうか？
David Primmer氏の回答
AtomPubのService DocumentはURLの一部をテンプレート的に定義して変数を当てはめる用途には向いていない。ある程度固定されたURL上で指定することを想定されているようだ。
その点、XRDS-Simpleは空白に値を埋める形でURLをディスカバリできる点で優れている。
この点に関しては、AtomPubのPerlライブラリを実装されたたけまるさんも指摘されていて、XRDS-Simpleを利用する方が合理的であるという点では一致しています。

ただ、仕様に適合しないという意味では気持ちの悪いものであることは間違いなく、この点をどこかで解決できないかと考えています。先ほど紹介したGoogle Groupsで「AtomPubの仕様作成者に仕様変更の提案を行う予定はあるか」との質問を投げたのですが、その後応答はありません。

現時点でRod Yatesという方からこちらの仕様書から適用できるのではないかとの提案を頂いているので、AtomPub識者の方と相談して何かしらの働きかけを行っていこうと思います。 </description>
		<link>http://devlog.agektmr.com/archives/75</link>
			</item>
	<item>
		<title>Mac OS XのちょっとマニアックなTips</title>
		<description>ことえり変換
変換中に

	Ctrl + j : ひらがなに変換
	Ctrl + k : カタカナに変換
	Ctrl + l : 全角英数に変換
	Ctrl + ; : 半角英数に変換

カーソル移動等
Vimと違うので使いやすくはないけど・・・

	Ctrl + p : 上
	Ctrl + n : 下
	Ctrl + b : 左
	Ctrl + f : 右
	Ctrl + k : 行削除
	Ctrl + y : ペースト
	Ctrl + a : 行先頭に移動
	Ctrl + e : 行末に移動

キャプチャ
Command + Shift + 3で全画面キャプチャは言うまでもないけど、

Command ...</description>
		<link>http://devlog.agektmr.com/archives/32</link>
			</item>
	<item>
		<title>OpenSocialコンテナの対応状況を調べるガジェット</title>
		<description>OpenSocialコンテナにもOrkut, hi5, MySpaceだけでなく、iGoogle, hyves, Netlogなどが登場してきました。

それぞれのSNSには特徴がありますが、仕様をいちいち調べたり、開発に当たって動作確認を行うのは面倒です。現在OpenSocial v0.8は登場したばかりということもあり、ほとんどがv0.7対応のものですが、v0.7への対応状況を確認できるガジェットというのがあります。

http://opensocial-resources.googlecode.com/svn/tests/trunk/compliancetests.xml

これで開発も少しは楽になるのではないでしょうか。 </description>
		<link>http://devlog.agektmr.com/archives/73</link>
			</item>
	<item>
		<title>オープンソースのShindig対応SNS - Partuza!</title>
		<description>OpenSocialのコンテナと言えばShindigですが、PHP版は既にOpenSocial v0.7への対応を完了しています。Partuza!はPHP版Shindigの開発者であるChris Chabot氏がオープンソースで開発したShindig対応SNSです。

Shindigがコンテナなのに、じゃあPartuza!は何をするの？と思われるかもしれません。今回はインストール方法と、Shindigとの関係について解説します。
Partuza!をインストールする
Shindigのインストール方法は以前解説しましたので、ここでは割愛します。仮に、Shindigが~/shindig配下にインストールされ、http://localhost:8080/gadgets/...でアクセスできるものとします。

まず、環境としてApache、PHP5(要mcrypt)、MySQL5が必須となります。
レポジトリからチェックアウト
Google CodeのレポジトリからSVNでチェックアウトします。
&#62; svn checkout http://partuza.googlecode.com/svn/trunk/ ~/partuza
データベースを用意
適当なデータベース名、ユーザー名、パスワードで空のDBを作ってください。ひとまずここではそれぞれ、partuza、root、パスワードなしとします。この状態で、~/partuza/partuza.sqlをダンプします。
&#62; mysql -u root partuza &#60; partuza.sql
DocumentRootを設定
Apacheの設定(httpd.conf)でDocumentRootを~/partuza/htmlに設定し、http://localhost/でアクセスできるようにします。もちろん、Shindigとは別ドメインを用意する必要がありますので、バーチャルホストを使う等してください。
設定ファイルを修正
~/partuza/html/config.phpを編集します。ここでは先程作成したデータベース関連の情報とガジェットサーバーのルートURL(gadget_server)を設定します。ガジェットサーバーのURLが、ここではShindigのURLとなりますので、http://localhost:8080/になります。
データベースハンドラをコピー
~/partuza/Shindig/PartuzaDbFetcher.phpと~/partuza/Shindig/PartuzaHandler.phpを~/shindig/php/src/socialにコピーします。
&#62; cp ~/partuza/Shindig/Partuza* ~/shindig/php/src/social
Shindigのデータベース設定を修正
~/shindig/php/src/social/PartuzaDbFetcher.phpにもデータベース関連の情報があるので修正します。加えてShindigがデータベースハンドラを利用するよう、~/shindig/php/config.phpも修正します。ここでは、"handlers =&#62; PartuzaHandler"としてください。

これで一通りの準備は完了。http://localhost/にアクセスしてウェルカム画面が出れば成功です。このまま登録し、Orkutライクな一般的なSNSとして利用することができます。


Partuza!とShindigの関係
OpenSocialのガジェットがiframeを介して表示されていることは以前も解説しましたが、簡単に言ってしまえば、iframeの手前がPartuza、後ろがShindigになります。Shindigでは以前から下記のURLにアクセスすることで簡易的なHTMLからOpenSocialぽい表示を行うことはできていましたが、Partuzaを使うことで完全なSNSとなります。

http://localhost:8080/gadgets/files/samplecontainer/samplecontainer.htmlとはいえ、PartuzaHandlerを指定したところからも想像できるように、データベースは共有されます。なお、Chris Chabot氏のサイトで実際に動いているものを確認することができます。

Partuza!を使うことで、どうすればShindigをSNSに組み込むことができるかの解析をすることができるだけでなく、そのままちょっとしたSNSを開発することもできてしまいます。ぜひお試しください。 </description>
		<link>http://devlog.agektmr.com/archives/71</link>
			</item>
	<item>
		<title>Mac OS Xアプリを管理する強力コンボ AppFresh / iusethis.com</title>
		<description>最近のMac OS X用アプリには、自動的に更新をチェックしてアップデートしてくれるものも少なくありませんが、常に最新版を使いたい人にとって、そうでないアプリを管理するのは面倒なもの。チェック方法としてVersionTrackerや、デスクトップアプリケーションのLogicielMac Updateといった選択肢がありますが、いずれも今日紹介するコンボと比較すれば、つまらないものに思えてきます。
iusethis.com
iuserthis.comは使っているMac OS X用アプリを登録して共有するSNSです。



サイトにサインアップしてからimakeprofileというアプリを使うと、Macにインストールしてあるアプリを自動的にスキャンして、自分が主に使用しているアプリをiusethis.comに登録することができます。使用しているアプリが未登録の場合は、自分で追加することも可能。

登録したアプリは、サービスが最新版の情報を取得するので、更新が可能かどうかを調べることができます。もちろんレビューや、誰がそのアプリを使用しているのかを確認することもできます。さらには簡易的なSNS機能として、TwitterのようなFollow機能があるので、他の人のアプリ使用状況を追跡することもできます。

ちなみに僕が使用しているアプリはこんな感じ。



Facebookアプリも提供されているので、「俺こんなアプリ使ってんだぜ！」と叫びたいニーズも満たしてくれます。そのうちきっとOpenSocialにも対応してくれるでしょう。
AppFresh


AppFreshはiusethis.comと連携して使えるソフトウェア更新ツールです。iusethis.comのデータベースから自動的に最新版を確認して、どれが更新できるかを知らせてくれます。その場でダウンロードからインストールまでまとめて行うこともできますし、ダウンロードのみ行うこともできます。Growlに対応しているので、ダウンロードやインストールが完了すると通知もしてくれます。
まとめ
AppFresh / iusethis.comは、SNSの楽しさで集めたユーザーに、アプリ開発者やサイト管理者の煩雑な作業を集合知として解決してもらうことで、くまなく幅広いアプリケーションの更新情報を提供可能とした最強のコンボと言えるのではないでしょうか。

※ちなみに、アプリの自動更新チェックには、RSS2.0のenclosureにアプリのリソースURLを入れるAppCastなるプロトコルが使われるケースが多いようです。 </description>
		<link>http://devlog.agektmr.com/archives/67</link>
			</item>
</channel>
</rss>
