ブログ  前の月  次の月 

たけまる / 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] にありますので,適宜参照してくだ
さい.

続きを読む

Referrer (Inside): [2007-12-03-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 が使われます.

続きを読む

Referrer (Inside): [2007-11-29-1] [2007-11-26-1]

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 の実装で注意すべき点です.

続きを読む

Referrer (Inside): [2007-11-27-1]

2007-11-21 Wed

_ Atompub 関連モジュールを CodeRepos に [atompub][perl]

Atompub 関連モジュールを CodeRepos にいれました.

CodeRepos::Share - Trac

CodeRepos は「コードレポジトリを共有しよう」ということで夏頃に始まっ
たプロジェクトで,ずっと前からコードを入れようかなと思いつつ,延び
延びになってました.

いままでもオープンソースで開発してましたが,レポジトリごと公開とい
うことでより開発に参加しやすくなりました.よかったらいじってやって
ください ><

Atompub
Catalyst::Controller::Atompub
XML::Atom::Service
Referrer (Inside): [2007-11-26-1]

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
Referrer (Inside): [2007-12-07-1] [2007-07-26-1]

_ 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 に脚光を浴びせたいという思惑もある気がする.
Referrer (Inside): [2007-11-15-1]

_ OpenSocial Protocol [opensocial][gdata][atom][atompub]

あちこちで話題になっているように,Google が OpenSocial を発表しまし
た.

グーグル、SNS向けAPI「OpenSocial」を発表:ニュース - CNET Japan
Open Social : ソーシャルネットワークを、どのウェブサイトにも:Goodpic
OpenSocialって? - Ogawa::Memoranda

API Document が提供されているので (まだプレビュー版だという注釈はあ
りますが),ざっと眺めて protocol についてのメモを作ってみました.ホ
ントにざっとしか見ていないし,サンプルを動かしてもいないので,間違
いがあると思います.追々アップデートしていくつもりですが,気づいた
方がいましたらコメントください.

なお,ここではプロトコルについてのみ書きます.言葉をかえると,実装
に依存する部分 (具体的なプログラミング方法) には触れていません.そ
れについては " 気が向いたら書くかも" くらいのつもりです (^^;

続きを読む

Referrer (Inside): [2007-11-29-1]