000086

July 04, 2004

XML-RPCの投稿日時

また技術的な話になってしまいますが、お許しください。

観測気球さんが前々からココログ(TypePad)での投稿日時のずれをご指摘なさってますが、よくよく調べると他の実装系でも 混乱の極みであるようです。ココログでも根本的な解決策は見ていません。

以前の記事(Atom API vs XML-RPC)に書いたように、 「日付のタイムゾーンの指定が仕様で明示的に禁止されているため、混乱が起きやすい。」と書きましたがやっぱり表面化しています。

そもそも、XML-RPCでは日付時刻の決まりに癖があります。これがそもそもの原因なんですが、以下引用: http://www.xmlrpc.com/spec

*What timezone should be assumed for the dateTime.iso8601 type? UTC? localtime?Don’t assume a timezone. It should be specified by the server in its documentation what assumptions it makes about timezones.

*dateTime.iso8601 型のタイムゾーンは何を想定すべきでしょうか? UTC?それとも 現地時間?タイムゾーンはサーバ側の文書で、どのタイムゾーンを使用するか指定します。

仕様では、タイムゾーンの指定は含めてはいけないとなっています。つまり、
2003-08-11T11:34:15+9:00(間違い)
2003-08-11T20:34:15Z(間違い)Ubicastがこの間違いをしている。News-Handlerはそれに合わせてしまって両方ペケ
2003-08-11T11:34:15(正しい)

で、タイムゾーンはBlog側で設定しておくれ、という事だと思います。 MovableTypeだとBlogのタイムゾーンを変更できます。普通日本語のBlogだと日本時間をつかいますのでそのように変更してあると思います。 ですので、2003-08-11T11:34:15とすると、日本時間の2003-08-11 11:34:15の投稿と認識します。が、ココログの場合、Blogのタイムゾーンの変更が出来ない上 (本来はユーザープロフィールの地域の設定に合わせるべき?)、 世界協定時(UTC)で扱うため、意図しない9時間のずれが起きます。ココログには未だこの問題が残っています。

という事で仕方ないので、クライアントで対応できる所は対応したいと思いますので、UTC形式で指定するというオプションをつけました。ココログ(TypePad系も?)専用です。 オプションが複雑になりすぎている気がしますが、サービス側で対処していただければ必要なくなりしだい削除できます。

さて、News-Handlerさんの件。
まず、新規投稿、及び更新時の日時指定を省略した時にはサーバーの時刻をユーザーの指定したタイムゾーンまたは日本時間で(日本でのサービスでしょうから)設定するようにしてください。 現在は投稿できずに、エラーも返らず、本来XMLが返る所が空文が返ってきます。 次に、日付時刻の表現に幾つかバリエーションがありますからそれらに対応しているかどうかもご確認ください。例えば:2004-07-02T11:30:34と20040702T11:30:34など。色々大変で しょうが頑張ってください。

あまり、こういった欠点をあげつらって糾弾するような文章は書きたくは無いのですが、ユーザーを代表してスムーズなXML-RPC環境を作成していきたいと思って頑張ってます。

Posted by HepCat at July 4, 2004 08:06 AM | TrackBack

Comments

> 本来はユーザープロフィールの地域の設定に合わせるべき

私は、それが本来の姿だと思います。もしくは、サーバ設置場所の現地時間(ココログの場合は日本時間)にするのが妥当でしょう。

とはいっても
> 2003-08-11T20:34:15Z
この Z 付きは認めてもいいんじゃないかと思います。これはタイムゾーンの指定というより、サーバ-クライアント間の通信では時刻の表記はすべて協定世界時で行なうべきだ、という思想によるものです。XML-RPCの仕様書より iso8601 の思想の方が優先されると思いますし。そうなると、
> 2003-08-11T20:34Z
のように秒の指定のないフォーマットも認めないといけなくなるという問題が出てきますが(磯8601 を採用している RSS 1.0 の方では、実際に秒を省略しているサイトもありますよね)

というように、単純な話ではないことは確かです。

Posted by: tsupo at July 5, 2004 03:37 AM

>この Z 付きは認めてもいいんじゃないかと思います。
私もそう思います。なぜXML-RPCの仕様で認められなかったのか疑問です。

MovableTypeはどちらで日時を指定しても正しく認識します。+9:00とやってもOKです。とっても賢い(よく出来てると思います。)

しかし、仕様できめられていて、他の部分はその仕様にしたがっているかぎり、少なくとも仕様で決められてる形式をサポートし、その上でZ付きも正しく処理する、という方法が望ましいと思います。

勝手に「うちのサイトではUTCで」、といわれると単に仕様違反であり、異なるシステムが連携をするという上で混乱をもたらすでしょう。

まぁ、これらの問題を解決するためにAtomAPIが裁定されつつあるといっても良いのですけれど最近あまり進捗がみられませんねぇ..。

Previous article

Atom Google Cal

Next article

Mobileatom J2me