たけまる / 2007-11
2007-11-29 Thu
_ OpenSocial/GData で Google は MS の道を歩むのか? [gdata][atom][atompub]



狙ったようなタイトルですが,AtomPub と GData (Google Data APIs) のdiff を取ってみましたっていうエントリです (何の役に立つかわかんない
けど,誰かやっといた方がいいと思うので).
OpenSocial が GData ベースということもあって,GData への注目が復活
しているようです.ちなみに,GData は AtomPub をベースにしています.
ところが,有り体に言えば現在の GData には AtomPub と矛盾する点があ
り,相互運用が難しいです.まぁ,GData のほうが先に完成した (古い
AtomPub をベースにした) ので,仕方ないのですが.
この先,Google が AtomPub という標準に準拠するのか,あるいは独自仕
様を押し通してしまうのか (evil になるのか?),どっちなんでしょう.な
んとなく,10年前のMSを彷彿とさせる雰囲気があります.
AtomPub と GData の比較はすでに [2007-01-07-1] で行ったのですが,今
回は OpenSocial で変更になる (と思われる) 点も含めて,わかりやすく
まとめ直しておきます.
なお,GData はサーバとの通信方法を定めたコア仕様と,カレンダーやス
プレッドシートのようなデータ種ごとの個別仕様とがあります.ここでは
コア仕様のみを扱います.
# 仕様書のみを参考に書いたので,実際の GData サーバとは違うとこもあ
# るかもです.気づいたら教えてくださいませ m(_ _)m
GData 仕様の全訳は [2007-01-06-1] にありますので,適宜参照してくだ
さい.
《続きを読む》
2007-11-27 Tue
_ Catalyst::Controller::Atompub - キャッシュやバージョン管理 [perl][atompub]



Atompub モジュールの使い方シリーズ昨日のエントリ [2007-11-26-1] で,相互接続性のポイントのひとつとし
て ETag/Last-Modified を挙げました.これらはキャッシュやバージョン
管理を実現するために使われます.
このエントリでは,Atompub モジュールを使って ETag/Last-Modified を
サポートする方法を紹介します.その前に,メカニズムを簡単に説明して
おきます.
サーバは,Entry などのリソースを返すときに ETag header を付与します.
クライアントは,リソースを取得 (GET) するときに, If-None-Match
header として ETag 値を設定します.サーバは値が一致しなければ (if
none match) リソース本体を返し,一致すれば 304 Not Modified を返し
てキャッシュを参照するように促します.
クライアントがリソースを更新 (PUT) するときには,ETag 値を
If-Match header とします.サーバは値が一致すれば (if match),更新を
受け入れます.一致しなければ,古いバージョンに対する更新と見なし,
拒否します.
Last-Modified の場合もほぼ同様です.If-None-Match/If-Match の代わりに
If-Modified-Since/If-Unmodified-Since が使われます.
《続きを読む》
2007-11-26 Mon
_ AtomPub の相互接続 (inter-operability) 実験でハマったこと [atompub]



AtomPub が RFC になるのを待っていたかのように,yohei さんやasakura さんが AtomPub の解説記事を書かれています.
たけまる / Atom Publishing Protocol を勉強するには
プロトコルの基本的な動作については,これらの解説記事や RFC を読めば
十分だと思います.ところが,実際にサーバやクライアントを実装して接
続実験をしてみると,思わぬ原因で接続できないことがあります.一種の
Bad Know-how とも言えます.
これまでに行った接続実験をもとに,ノウハウをまとめてみました.
AtomPub を使う人は参考にしてください.
ノウハウを紹介する前に,プロトコルを実装するときの基本姿勢について
良い言葉があるので紹介しておきます.
メッセージを送るときは厳格に,受けるときは寛大に.
これは,僕が MobileIP や Multicast といったレイヤの低いプロトコルの
実装をしていたときに聞いた言葉ですが,他の分野にも当てはまると思い
ます.メッセージ送信機能を実装するときは,仕様を熟読して正確なメッ
セージを送ること.逆に受信するときは,おかしなメッセージが送られて
きてもそれなりに解釈してあげること.そんな意味です.
このような姿勢で実装されているからこそ,いまのインターネットは高い
相互接続性を保っているのだと思います.
(追記) どういう偶然か,弾さんが同じことを書いてますね.
404 Blog Not Found:送り手は控えめに、受け手はおおらかに
では,AtomPub の実装で注意すべき点です.
《続きを読む》
2007-11-21 Wed
_ Atompub 関連モジュールを CodeRepos に [atompub][perl]



Atompub 関連モジュールを CodeRepos にいれました.CodeRepos::Share - Trac
CodeRepos は「コードレポジトリを共有しよう」ということで夏頃に始まっ
たプロジェクトで,ずっと前からコードを入れようかなと思いつつ,延び
延びになってました.
いままでもオープンソースで開発してましたが,レポジトリごと公開とい
うことでより開発に参加しやすくなりました.よかったらいじってやって
ください ><
Atompub
Catalyst::Controller::Atompub
XML::Atom::Service
2007-11-19 Mon
_ AtomPub reference Implementation [atompub]



■ 追記すいません,書き忘れです.ユーザ名とパスワードを求められたときは,
ベーシック認証 - user: foo - pass: fooを使ってください m(_ _)m
AtomPub サーバの reference implementation (仕様確認用の実装) を,
http://teahut.sakura.ne.jp:3000/service で走らせています.
このサーバは,先日の Interop (相互接続実験) [2007-11-15-1] で使った
ものです.RFC 仕様に準拠していて,他のクライアントと相互接続できる
ことが示されています.Atompub の開発をされている方は,このサーバを
相手にテストするといいと思います.
ソースコードは,Catalyst::Controller::Atompub (Perl) にサンプルコー
ドとして含まれています (samples/MyBlog).こちらも参考にしてください.
Catalyst::Controller::Atompub
_ Catalyst::Controller::Atompub v0.2.0 リリース [atompub][perl]



Atompub Interop [2007-11-15-1] で見つかったバグを修正したCatalyst::Controller::Atompub v0.2.0 をリリースしました.
Catalyst::Controller::Atompub
Interop で見つかったバグはすべて修正してあります.
- 不明な HTTP メソッドに対しては 405 Method Not Allowed を返す - HEAD メソッドに対して適切なレスポンスを返す
2007-11-15 Thu
_ Online AtomPub Interop [atompub]



米国時間の 11/13-14 と online で Atompub Interop (相互接続実験) が開催されました.つい先ほど終わったので,簡単にレポートです.
November2007Interop - Atom Wiki
主な参加者は,
- Joe Cheng of Microsoft - John Panzer of Google - Colm Divilly of Oracle - Brendon Taylor of PushPin - Alex Milowski of Atomic - James Snell of IBMと僕 (Perl Atompub) です.他に日本からの参加者はいませんでした
(朝倉さん が ROM ってたくらい ;-).
# Mixi とか Station API で AtomPub 使ってるんだし,AtomPub ベースの
# OpenSocial [2007-11-04-2] に賛同してるんだから,参加すればいいのに.
過去に何度かやっていることもあって,おおむね問題なく接続できました.
結果は↓にあります (小文字が Entry Resource, 大文字が Media Resource).
Google ドキュメント - AtomPub November Interop Grid
僕は Catalyst::Controller::Atompub [2007-09-13-1] を使ったサーバで
参加しました.C::C::Atompub のソースに同梱したサンプルコード (MyBlog)
をそのまま使いました.結果表にあるように,すべてのクライアントと接
続することができました.
いくつか細かい問題が見つかったので,後で直してリリースします.
- HEAD を受信したときに,405 Method Not Allowed ではなく 500 を返
してしまう
-> 未サポートメソッドを受信したときは 405 を返すように修正する
HEAD についてはサポートする方向で修正する
- WWW-Authenticate ヘッダの realm 値は,quoted である
-> Catalyst::Plugin::Authentication あたりのバグだと思うので,
パッチを作って送る
- Atomic client が Perl Atompub への PUT に失敗しているが,これは
Atomic が ETag をサポートしていないため
それ以外には,
- app:categories[fixed=yes] かつ scheme のみが指定されているときの
解釈
(追記) 11/24 に ML で決着がつきました (Nov 24, 2007 6:07 AM に Tim
が atom-protocol に送ったメール).このように指定しても,atom:category/@scheme
のみを限定するという使い方はできません.app:categories 内の scheme
を省略できる以上の意味を持ちません.
- 複数のエントリやメディアをまとめて POST/PUT する拡張仕様
などが話題になっていましたが,結論は出ていません.Google からも参加
がありましたが,最近話題の OpenSocial については触れられなかったと
思います.
■ (追記) 関連記事
Official Google Data APIs Blog: AtomPub Interop
■ (追記) IRC ログ
- irc-20071113.txt
- irc-20071114.txt
2007-11-04 Sun
_ OpenSocial について雑感 [opensocial]



OpenSocial について思うことをいくつか.追記: いろんな意見があった方がいいと思うのではてブから貼り付け
(有名人からもらったコメントでクォリティをあげるメソッド ;-)
(miyagawaさん) 広告云々は全然関係ないと思うのだが・・Google Gadget
に脚光を浴びせるのはまさにそう。というか原点がそれ
■ なぜいまなのか
これは言うまでもなく,Facebook が Microsoft の出資を受け入れたこと
に対抗して,焦って発表したんだろうと思ってる.
焦ってというのは,API Document を読むと,"まだ十分に準備できてない
けど発表しちゃった" 感が少しあるような気がするんだよなぁ.おかしな
点もあるし,URI に統一感が乏しいし,development kit はまだ配布でき
ないみたいだし.
とはいえ,多くの SNS 企業が乗ってきたことで業界の様子が一変したのは
間違いないし,Microsoft はこの発表を聞いてどうするのかなぁ.
■ SNS 企業は何をしようとしているのか
SNS っていうのは closed な世界が特徴で,data と view が一体になって
いたわけです.OpenSocial はこれを分離しようという目論見です.
Google は SNS の data をほとんど持っていません.なので,SNS に広告
を出すことができませんでした.当たり前ですが広告は view にくっつき
ます.data から view を切り離すことで,Google にも広告を出すチャン
スが出てきます.というわけで,Google が OpenSocial を提唱するのはよ
くわかります.
一方で,SNS 側のメリットは微妙です.よくここまで多くの SNS が乗って
きたなぁと思います.その理由はこんなとこでしょうか.
- 長い目で見れば,SNS は少数に集約されるかオープン化の道をたどる
- OpenSocial に賛同しても,当面,ほとんどのユーザは今まで通りの
view (HTML) を使う (ほとんどの SNS ユーザは geek ではない)
- 直近のリスクは低く,将来に備えられるので,OpenSocial に賛同する
Google と SNS の間で,広告に関する取り決めはあるんだろうか? 広告料
収入は SNS と折半するのかなぁ.
■ mixi が Google で検索可能になるのか
Twitter でこんなコメントを見かけました.
Twitter / プーさん: OpenSocial に賛同するってことは, Goog...
OpenSocial に賛同するってことは, Googleの検索対象範囲に含まれるって
ことなんじゃないかな。
単に SNS 内の検索エンジンを Google にするのであればともかく,
www.google.com の検索窓から他のページと同じように検索できるようには
ならないんじゃないかなぁ.そうするには,ユーザと SNS の間で契約事項
を変更しなきゃいけないような気がする.
あと,ユーザごとに検索スコープを設定する (検索可能なページを限定す
る) というのは,それなりに検索コストが高くなるので (アルゴリズムは
難しくないけど),いくら Google とはいえすぐには難しくないかなぁ.
Gadget にデータを表示するときに "データに合わせた広告を貼り付ける"
くらいならあると思う.
■ SNS ソフトウェア
OpenSocial 賛同企業に,手嶋屋 (OpenPNE) のような SNS ソフトウェア開
発元が含まれているのか知らないのですが,彼らにとってはメリットが大
きいように思います.
OpenPNE のような SNS ソフトウェアは企業などで使われることが多いです.
たいていの場合,企業にはすでに文書などの資産があり SNS と連携させた
いのですが,一般的な API がないために実現が難しいです.僕なら,
OpenSocial に対応した SNS ソフトウェアは優先的に使いたいです.
SNS に OpenSocial を実装するためには,Google が提供する
development kit を使います.これを入手するためには,OpenSocial
Container Google Group で連絡してくださいとのことです.
OpenSocial Container Developers - Google グループ
■ 隠れた思惑
大したことではないけど,いまいちパッとしない Google Gadget と
Google Data APIs に脚光を浴びせたいという思惑もある気がする.
_ OpenSocial Protocol [opensocial][gdata][atom][atompub]



あちこちで話題になっているように,Google が OpenSocial を発表しました.
グーグル、SNS向けAPI「OpenSocial」を発表:ニュース - CNET Japan
Open Social : ソーシャルネットワークを、どのウェブサイトにも:Goodpic
OpenSocialって? - Ogawa::Memoranda
API Document が提供されているので (まだプレビュー版だという注釈はあ
りますが),ざっと眺めて protocol についてのメモを作ってみました.ホ
ントにざっとしか見ていないし,サンプルを動かしてもいないので,間違
いがあると思います.追々アップデートしていくつもりですが,気づいた
方がいましたらコメントください.
なお,ここではプロトコルについてのみ書きます.言葉をかえると,実装
に依存する部分 (具体的なプログラミング方法) には触れていません.そ
れについては " 気が向いたら書くかも" くらいのつもりです (^^;
《続きを読む》
