2006年03月15日 (水)

iBlog 1.X の RSS の伏兵出現か

iBlog 1.X の RSS の最後の砦を攻略したつもりでしたが伏兵がいました。itunes:keywords 要素です。

itunes:keywords とは

iBlog 1.3.6 は MP3 などの楽曲ファイルを添付したエントリを PodCast 用として PodCast 用の要素達を RSS に書き出します。この itunes:keywords 要素はそんな要素の一つです。そのエントリのキーワードをカンマで区切って書いておくためのものです。

iBlog 1.3.6 はどう扱っているか

iBlog 1.3.6 でエントリを書くときにそのキーワードを入力するところなんてありません。iBlog がどうしているかというと、エントリのタイトルをそのまま入れているのです。

何が問題か

ということは分かち書きしていない日本語のタイトルがそのまま keyword として入ってしまいます。まずこれが意味的に間違っているのですがそれはおいておきます。私が気付いたのはもっと文法的な問題です。

もし日本語を分かち書きしたらどうなるでしょうか。いや、そもそも英語のような言語ではほぼ必ず分かち書きをします。このときエントリのタイトルにカンマがなければ文法的には一つのキーワードと解釈されますが、そのキーワードの中にスペースが入ってしまうのです。語ではないことに加えて語をカンマで区切っていません。

本当に問題か

少なくとも意味的には間違っていますが文法的にはどうでしょうか? カンマでキーワードを区切るのですから、カンマで区切られていない部分は一つのキーワードと文法的にはなります。そこにスペースが入っていけないとは Apple の技術文書には書いてありません。それどころか例として載っている RSS にはカンマに続いてスペースが来ています。

ところが Feed Validator はこの要素の値にあるキーワードにスペースを入れることは許していません。そのことに関するドキュメント「Use commas to separate keywords」には次のようにあります。

Previous versions of this spec indicated that spaces were to be used to separate keywords, but in the current spec this has been updated to specify that commas are to be used.

和訳するとこうなります。

以前の仕様ではキーワードを区切るのにスペースを使っていました。しかし現在、仕様が更新されてカンマを使うことになっています。

カンマの直後にスペースを入れるのは自然言語では一般的なのでそれくらいは許されているのかもしれません。実際 Apple の技術文書に例として書いてある RSS を Feed Validator にかけるとその部分はパスしています。しかし、そういう詳しい文法を知るための DTD (RSS の rss 要素の属性に書いてある URL のファイル)が Not Found なのです。どこにあるんでしょうね。

この例の RSS はちょっといい加減で、RSS 2.0 で channel 要素(ブログ全体に相当)の必須要素である description 要素(ブログの説明)がありません。どこまで信用してよいのやら。

結論

というわけで、RSS 2.0 に対する PodCast 用の拡張の詳しい仕様が不明で本当に文法的にまずいのかどうかは私にはまだわかっていません。しかし意味的に間違っていることは確実です。iBlog デフォルトの RSS のテンプレートファイル FeedPage.txt に古い仕様のままと思われる部分もあるので、恐らくここのところもスペースをカンマに置き換える処理が必要なのに作者が気付いていないのだと考えられます。

テンプレートでどうにかなるものでもないのでここは外部から書き換えてやらないとどうにもならないでしょう。エントリ「iBlog 1.x の RSS 最後の砦を攻略するには」で RSS 修正用のコマンドを公開しているので、それに処理を加えてアップデートすればよいですね。


Posted: 00:09    | Comment | Trackback


以下、類似エントリです。