たけまる / atom
2007-12-12 Wed
_ Atom on Ruby [atom][atompub][ruby]



XML::Atom や Atompub が ruby に porting されているようです.atomutil - RubyでAtomPubを操作するパッケージをリリースしました - Codin’ In The Free World
オープンソースっていいなぁ.
2007-12-03 Mon
_ Atom と GData と OpenSocial の関係 [atom][atompub][gdata][opensocial]



(追記)2008年2月27日に発表された OpenSocial RESTful APIs には,「新ドラフ トが採用されれば,過去に提案した GData ベースの API を変更する」と あります。その場合,OpenSocial に GData 拡張が含まれない可能性があ りますので注意してください。
OpenSocial は Google Data APIs (GData) をベースにしているそうです.
そして,GData は Atom をベースにしています (いくらか違い
[2007-11-29-1] はありますが).
ややこしいので,関係をまとめてみました.
■ データ表現
下表はデータ表現 (XML 要素など) の関係です.下から上に向かって順に
拡張されています.
| OpenSocial | データ表現拡張 |
| Google Data APIs - elements | データ表現拡張, JSON |
| Atom Syndication Format | 基本的なデータ表現 |
Atom は <feed> や <entry>, <title> といった基本的なデータ構造を定
めています.仕様書の和訳は↓にあります.
RFC 4287 The Atom Syndication Format 日本語訳 - futomi's CGI Cafe
GData では,人やイベントを表すための拡張が行われました.仕様書の和
訳は↓にあります.
たけまる - GData/CommonElements
# なお,GData は対象サービスごとにさらに独自の拡張があります.たと
# えば,YouTube API では動画の長さを表す要素などが追加されています.
また,XML から JSON への変換方法も定められています.Perl であれば,
Google::Data::JSON モジュールで GData に従った変換ができま
す [2007-02-22-1].
さらに,OpenSocial では,位置や Activity (日記を書いたり動画を投稿
したりといった活動全般) についての拡張が行われる予定です.
■ プロトコル
下表はプロトコル (通信方法や URI) の関係です.下から上に向かって順
に拡張されています.
| OpenSocial | URI 拡張 (path) |
| Google Data APIs - basic | URI 拡張 (検索クエリ), 認証 |
| Atom Publication Protocol | 基本的なプロトコル, URI |
AtomPub は,基本的な通信プロトコルを規定しています.HTTP メソッドや
URI の使い方を定め,リソースの CRUD を可能にしています.仕様書の和
訳は↓にあります.
ソフトウェア研究開発本部 / RFC 5023 Atom Publishing Protocol 日本語訳 - Ricoh Japan
GData は検索のためのパラメータを決めています.おなじみの q=foo とい
うクエリで検索語を指定したり,updated-min=2007-01-01T00:00:00Z のよ
うに日時を限定することもできます.GData 風クエリを使えるブログ検索
API を [2007-06-23-1] で公開していますので,それを使うとどんなクエ
リを投げれるか何となく掴めると思います (今回,少し修正しました).
GData 仕様書の和訳は↓にあります.
たけまる - GData/Protocol
さらに,OpenSocial では,URI の Path 部分でユーザやデータの key を
指定できるようになりそうです.
# といいつつ,OpenSocial group をちょっと覗いたところ,上で触れてな
# い (Atom と関係ない部分の) Google Gadget 関連がかなり多いかも.
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-04 Sun
_ OpenSocial Protocol [opensocial][gdata][atom][atompub]



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



小川浩さん主催の WBS2.0 に参加してきました.ラッキーなことに,発売前の著書『フィードがグーグルの世界制覇を阻止する!』をいただけたの
で,早速書評です.ありがとうございます.

タイトルの通り,RSS などの「フィード」にフォーカスした一冊です.と
はいっても,フィードをやたらに過大評価するのではなく,その役割を
「過不足なく正確に」伝えてくれる良書です.正直,読了してかなり頭が
整理されました.
フィードのことを「ブログのおまけ」と考えている人は多いと思いますが,
本書を読めば,従来型ウェブページとの本質的な違いを理解できると思い
ます (HTML ではなく XML だという表面的な違いではありません).
ウェブページとフィードの本質的な違いは「対象とするデータにある」と
著者の小川さんは述べています.ウェブページは一般的な情報を得意とし
ています.たとえば,Wikipedia であり,Amazon であり,専門的なブロ
グです.その価値は客観的に (機械的に) 測定することができ,Google
によってランク付けされています.
ところが,フィードはウェブページとは異なる種類の情報が対象であり,
これまでの Google の技術が通用しないことを述べています.また,理想
的なフィードリーダーやビジネスモデルはまだ発見されていません.ここ
にチャンスがあり,小川さんはそれに賭けています.
フィードとウェブページの違いが「対象とする情報」というのは以前から
感じており,それを見据えて仕事をしているので,とても勇気づけられま
した.
やや勢いで書かれた感は否めませんが (3徹で仕上げたそうです (^^;),
あまりカチッとしているより読みやすいかもしれません.フィードに馴染
みのない人でも抵抗なく読めると思います.
※ ひとつ,技術的な課題が抜けてるかなと思ったのでコメントします.
本書でも触れられていますが,これからは「オープンではないフィード」
がたくさん出てくると思います.つまり,認証が必要になります.
いまのフィードはほとんどがオープンなので,フィードリーダーは認証に
ついて考えていません.ところが,もしほとんどのフィードが認証を要求
するようになったらどうなるでしょうか.
ウェブ型であれば,事前に各サイトにログインしておかないと読めません.
何十,何百というフィードを登録していると破綻します.また,フィード
リーダー提供元にパスワードを預けるのも気が進みません.
ブラウザ型やクライアント型であればパスワードを記憶させることもでき
ますが,デバイスを変えたときに未読管理が一致しません (本書を読めば,
PC だけでなく携帯で読めることも重要とわかります).
そもそも,フィードの認証方法は標準化されていないので,あらゆるサイ
トで機械的にログインさせることは難しいです (昔の Atom Publishing
Protocol は WSSE でした
シック認証 + TLS が MUST になっていますが,実装の足並みが揃うかなぁ).
些細なことのようで,未来のフィードリーダーを占うひとつのポイントか
なと思っています (まぁ,ちょっと先の話ですが).
2007-04-02 Mon
_ フィードから JSON への変換方法を統一して JavaScript でラクする [atom][perl]



以前のエントリ [2007-03-31] で XML::FeedPP を使ったのは,まえにJSONP 変換を作ったからです.
ところが,JSONP 変換サービスはあちこちにあります.たとえば,↓など
は老舗です.
XML を JSON に変換するサービス - ベータ版を公開 :: Drk7jp
では,どうして新たに JSONP 変換スクリプトを書いたかというと,変換
後の JSON のデータ構造を揃えたかったからです.
たとえば,RSS と Atom が混ざっていると,JavaScript でエントリを取
得するときにハッシュキーを使い分けなければなりません.また,XML か
ら JSON への変換方法が統一されていないと,ある要素が配列なのかハッ
シュなのかわからなかったりします.
というわけで,次のような特徴を持つ JSONP 変換スクリプトを作ってみ
ました.公開しますので自由に使ってください.
■ 特徴
- データ形式を指定したフィード (たとえば Atom 1.0) に変換してから JSON にする.フィードの種類がなんであっても,JavaScript で同じよ うに処理できる. - XML から JSON への変換は,GData 準拠とする.たとえば,要素数がひ とつであればハッシュ,複数であれば配列となる.また,テキスト要素 へのアクセスキーは '$t' である. - 複数フィードをひとつにまとめられる.時刻順のソートもできる. - ついでに,XML 間の変換もサポートした ([2007-03-31] に書いたよう に,Atom 0.3 <-> Atom 1.0 とか).
JSON への変換には,[2007-02-22] で紹介した Google::Data::JSON を使っ
ています.
まぁ,いまとなっては Yahoo PIPES でできることなんでしょうが,ビジ
ネス上の理由で使えなかったりすることもあるので,そういう方はこちら
を参考にしてください.下のほうでソースも公開しています.
■ ベースURI
http://teahut.sakura.ne.jp/t/feed.cgi
■ パラメータ
| パラメータ | 値 | 説明 |
| uri | フィードURI | 複数指定するとひとつのフィードにまとめます |
| alt | rdf, rss, atom03, atom10 | 変換後のデータ形式を指定します |
| jsonp | JavaScript 関数名 | この関数名で JSON を格納します |
| sort | feed, date | エントリをソートします |
jsonp を指定しなければ,単なる XML 変換を行います.
■ 例
このブログのフィード (RDF) を Atom に変換して,JSON に変換し,
myfunc という JavaScript 関数 に渡します.
feed.cgi?alt=atom10&jsonp=myfunc&uri=http://teahut.sakura.ne.jp/b/cl.rdf
■ ソースコード
自由に使っていただいてかまいません.なお,XML::FeedPP には
[2007-03-31] のパッチを当ててください.
《続きを読む》
2007-03-31 Sat
_ Atom 0.3 と 1.0 の相互変換 [atom][perl]



Perl で RSS や Atom を変換するには,XML::Feed や XML::FeedPP が使えます.たとえば,plagger では XML::Feed が使われています.個人的
には変換速度の速い XML::FeedPP を使っています.
[Perl] XML::FeedPP - RSS・RDF・Atomフィードの解析・生成・変換・結合
ところで,RSS や RDF と Atom を変換することはできるのですが,Atom
0.3 と 1.0 の変換はサポートしていませんでした.XML::FeedPP を Atom
1.0 に対応させるパッチを作りましたので紹介です.
FeedPP v.0.21 の Atom 1.0 対応パッチ
以下のようにして,Atom 0.3 から 1.0 に変換できます.逆も同様です.
my $atom10 = XML::FeedPP::Atom1_0->new; $feed->merge( $atom03_xml ); $feed->to_string( 'UTF-8' );
作者の川崎さんにパッチを送ったので,近いうちに取り込まれると思いま
す (モジュール名が XML::FeedPP::Atom1_0 から変更されるかもしれませ
んので注意してください).
■ 追記
XML::Feed は,Atom 0.3 から 1.0 への片道変換のみサポートしています.
XML::Feed->parse( \$atom03_xml )->convert('Atom')->as_xml;
逆変換するには,XML::Feed::Atom にハードコーディングされている
'1.0' という文字列を '0.3' にすればよいと思われます.
2007-03-29 Thu
_ Atom 0.3 と 1.0 の相異点 [atom]



Atom 0.3 と 1.0 の相異点を見やすく示したサイトがなかったので,まとめておくことにしました.下が対応表になります (XPath で書いてありま
す).空白は,対応する要素がないということです.
■ 要素・属性名の対応
| Atom0.3 | Atom1.0 |
| //tagline | //subtitle |
| //copyright | //rights |
| //generator/@url | //generator/@uri |
| //info | |
| //modified | //updated |
| //issued | //published |
| //created | |
| //link/@hreflang | |
| //link/@length | |
| //category | |
| //author/url | //author/uri |
| //content/@mode |
■ //content/@type の対応
| Atom0.3 | Atom1.0 |
| text/plain | text |
| text/html | html |
Atom 0.3 には category 要素がなかったため,Dublin Core の subject
要素で代用することが多かったようです.
詳細については以下のページが参考になります (英語ですが).
rakaz - Moving from Atom 0.3 to 1.0
2006-11-28 Tue
_ Atom のメモ [paper][atom]



M. Nottingham and R. Sayre, "The Atom Syndication Format," IETFRFC4287, December 2005.
ASCII
長い付き合いになりそうな気がしてきたので,仕様書を読んでおくことに
しました.概要のメモしたので,よかったらどうぞ.
■ 参考文献
RFC 4287 The Atom Syndication Format 日本語訳 - futomi's CGI Cafe
RFC 4287(ja) The Atom Syndication Format : Atom配信フォーマット
IBM Atom 1.0 Syndication Formatの概要 : XML : dW - Japan
(XML 文書例が載っていて有用)
《続きを読む》
