2004年12月23日
Atomがすっきり判りました
記事とかお礼とか -HepCat Dev and Test-
先日取り上げたUnix MagazineのAtom記事ですが、筆者の方のBlogがありました。
「感想などいただけたら」とありましたので、お礼かたがたトラックバック等打ってみたいと思います。
判りにくかったところが非常にすっきりして、よく理解できました。
ありがとうございました。
Atom APIが判らなかった理由って、一番には言うまでもなく勉強不足なんですが、次には結局XML-RPCの考え方に引きずられすぎてて、それを念頭において思い込みで全部仕様を読んでたりしてたからでした。
というか、お互いに全く関係のないRSSとXML-RPC、と同じような感覚でAtom-FeedとAtom-APIを別々に調べていたので、
RSSで配信されていたデータをAtomで配信するには、要素を1対1にこう対応させてはいお終い、さあAtom-Feedは調べ終わったからAtom-API、的な感じで調べてたので、Atom-APIを理解するにはAtom-Feedをきっちり理解する事が必要だと思い至らず、
なるほど、RESTというインタフェースを使っていると、PUT、GET、POST、DELETEをHTTPヘッダで表現すると、WebDAVに似ていると、なるほどねえ、考えたもんだなあ、で結局のところエントリを編集するにはどんなメソッドを叩くのよ、さっぱり判らない、といった感じで挫折していました。
要するに、オブジェクト的に捉えるならば、リモートに存在するBlog/エントリのオブジェクトに対し、行いたい処理内容を個別のメソッドで実行するというXML-RPCの考え方と違って、遠隔のオブジェクトそのものをAtom-Feedでシリアライズして手元に全部取ってきて、やりたい様にオブジェクトを改変した後、再度リモートに送ってデシリアライズし元のオブジェクトと置き換える、という発想なんですね。
同じように使われているRSSとAtom-Feedですが、似てるように見えてもRSSは飽くまでエントリそのものとは別の概要配信/シンジケーション用フォーマットなのに対し、Atom-Feedは表現形式を変えたエントリそのものである、という感じでしょうか。
それでPUT、GET、POST、DELETEといったメソッドとか、WebDAVに似ていると言われるのもすっきり理解できました。
ありがとうございました。
1つだけ残る疑問。
トランザクションというか、オブジェクトの変更が重なった場合の考え方はどうなっているのでしょうか...。
XML-RPCでも別に後優先なのは変わらないとは思いますが、オブジェクトの特定の属性だけをメソッドで叩くXML-RPCと比べて、オブジェクト全体を取ってきて上書きする方が、属性の変更のぶつかる可能性が高くなると思うのです。
Blogの場合エントリの執筆者は基本的に1人なので衝突が生じる可能性は少ないでしょうが、それでも執筆者は1人でもシステムにエントリ記事の状況に合わせた改変等をさせる場合もあると思いますし、またAtomはBlogだけに限った用途ではないわけですので、今の理解範囲だけではその辺が気になりました。
[composed and posted with ecto]
Atom記事を書かせていただいたBlogWrite担当と申します。
貴重なフィードバックありがとうございます。
反応いただいてとても嬉しいです。
>属性の変更のぶつかる可能性が高
の件ですが、私自身まったく気付いていなかった点なので、興味深いと思います。
どう思うかというと、技術的には確かにそうだと思います。
しかし...XML−RPCのように特定の属性だけをメソッドで叩くという事は、つまり裏を返せば、(Blogの例でいうと)一つのエントリに対して、毎回複数のリクエストを発行しなければならないという欠点でもあると思います。
さらに、Blogの例に限っては(一応経験上)結局のところXML-RPCでも、機械的に連続してメソッドを叩く例が多いので現実的には結局同じ事かと思います。
つまり、新規投稿時XML-RPCでは、metaWeblog.newPostで本文や日付等をセットして、mt.setPostCategoriesでカテゴリをセットします。以上はソフトの作り方次第ですが..大概セットで連続して行なわれます。
なので、AtomAPIのように、Post一回こっきりで済ますの結局と変わりないのでは、と思ったりします。
と、これだけでは説得力ないのですが、興味深いのは以下の点です。
例えば、AtomAPIで本文、要約、日付付きで投稿し、次に、本文要素と日付要素を省略して要約のみ投稿したらどうなるのでしょうか。空要素ではなく、タグ自体が存在しない場合です。このような場合CMS・Blogツールはどう判断すべきでしょうか。
1.初めに投稿した本文、日付を変更せずに、要約だけ上書きする。
2.本文、日付を空とみなして削除。要約を上書きする。
もし、1を取った場合、特定の属性だけの変更となり、かち合う可能性は減ると思います。
となると、これはプロトコルの仕様の問題か、CMS・Blogツールの実装次第という事になるかと思います。
仕様で定義すべきなんでしょうか...。したほうが良いような気がしますので、機会があれば、AtomのMLに投げてみようかと思います。
どう思われますか?
![[ここギコ!]](http://kokogiko.net/logo.png)



・3Dどきゅめんと…って何?点字文書?(QHArnold)
・3Dどきゅめんと…って何?点字文書?(BXBrian)
・3Dどきゅめんと…って何?点字文書?(Masa_nison)
・電柱広告に位置QRコードを是非。(SalvadorLF)
・電柱広告に位置QRコードを是非。(hire car)
・電柱広告に位置QRコードを是非。(hire car)
・コンピュータは2進法が効率的でとかいう話(とおりすがり)
・室町口語のアクセントで読む狂言(DamonDC)
・室町口語のアクセントで読む狂言(IVSergio)