[52] 最近は色々な[[日記]]や[[掲示板]]や[[更新情報]]や[[ニュース]]が [[Atom]] や [[RSS]] の[[フィード]]として提供されるようになりましたが、 [[HTML]] のおまけ程度 (またはそれ以下) とでも思っているのか、使いづらいのが多すぎます。 [59] 関連: [[いけてないフィード・リーダー]] * フィードのメタ情報 [20] [[フィード]]の[[著者]]などの情報に関して。 - [22] '''[[著者]]の[[名前]]が正しくない''' -- [[フィード]]生成にしようしている[[ソフトウェア]]の作者が[[著者]]になっているとか -- なぜか[[名前]]と[[電子メイル・アドレス]]が逆になっているとか -- ''改善方法'' --- [23] [[著者]]の名前を [CODE(XMLe)@en[[[author]]]] などに正しく記述する ---- 生成[[ソフトウェア]]の設定を確認する - [51] '''記事の著者がすべてグループ名''' -- 集団で書いている日記などで、 記事ごとの[[著者]]が ([[HTML]] 版では明記されているのに) [[フィード]]には記述されておらず、 集団名しかわからない -- ''改善方法'' --- [24] 全体の[[著者]]と個別の記事の[[著者]]の区別を [CODE(XMLe)@en[[[feed]]]] 内の [CODE(XMLe)@en[[[author]]]] と [CODE(XMLe)@en[[[entry]]]] 内の [CODE(XMLe)@en[[[author]]]] などに正しく記述する - [32] '''[[著者]]の[[電子メイル・アドレス]]が入っていない''' -- [[著者]]に[[電子メイル]]でコメントを送れない --- [[MUA]] と一体化した[[フィード・リーダー]]では[[返信]]を書くように[[著者]]に[[コメント]]を送れるのがとても便利です -- ''改善方法'' --- [21] [CODE(XMLe)@en[[[email]]]] などに[[著者]]の[[電子メイル・アドレス]]を記述する [[#comment]] * フィードの構成 [30] [[フィード]]に含める内容の構成に関して。 [10] '''コメントやトラックバックが入っていない''' コメントやトラックバックによる読者の反応も含めて楽しめる [[HTML]] 版と、読者の反応の存在すら気づけない[[フィード]]版の溝を埋めてください。。。 ある記事とその記事へのコメントやトラックバックを集めた[[フィード]]が''記事毎''に用意されていることもありますが、 一々個別の記事の[[フィード]]をチェックするなどという面倒なことを誰がするでしょう。 でも一方で、著者以外が書いた細かいコメントの記事が沢山あって著者の記事が埋もれてしまうので、 コメントが[[フィード]]に入っていたら邪魔という気持ちもあるんですよね。 ;; その辺は [[Atomスレッド化]]の普及と[[フィード・リーダー]]の実装の改善で使いやすくなっていくといいのですが。。。 ''改善方法'' - [12] コメントやトラックバックを [CODE(XMLe)@en[[[item]]]] や [CODE(XMLe)@en[[[entry]]]] として含める (最善解) -- [13] [[Atomスレッド化]]を使うとなおよい -- [15] コメントやトラックバックが邪魔と考える読者がいるなら、 コメントやトラックバックが含ま''れる''版と含まれ''ない''版の''両方''を用意する - [14] コメントやトラックバック専用の[[フィード]]を同時に用意する [11] '''コメントやトラックバックが記事本体と一緒になっている''' ''改善方法'' - [16] コメントやトラックバックは記事とは別の [CODE(XMLe)@en[[[item]]]] や [CODE(XMLe)@en[[[entry]]]] にする '''広告がフィードに含まれている''' [[フィード]]提供元にも色々事情があるのであまり強くはいえないですが、[[広告]]って邪魔ですよね。 まあ、ちゃんと記事本文とは別の[[記載]]として[[広告]]を含めている[[フィード]]はせめてもの良心ってやつでしょうか。 ''改善方法'' - [[広告]]を[[フィード]]に含めない (最善解) - [[フィード]]の記事本体と関連性が高い、あるいは読者の興味範囲に近い[[広告]]を提供できる仕組みを取り入れる [[#comment]] * 本文 [1] 本文 ([CODE(XMLe)@en[[[description]]]], [CODE(XMLe)@en[[[summary]]]], [CODE(XMLe)@en[content:[[encoded]]]], [CODE(XMLe)@en[[[content]]]] など) に関して。 ;; 本来[[本文]]と[[要約]]は別のもののはずですが。。。 - [29] '''冒頭だけで、途中でぶったぎられている''' -- どうせ入れるなら、全文入れて欲しい -- 機械的にぶった切るために、[[フィード]]としての構文までおかしくなっていることもある -- ''改善方法'' --- [4] [CODE(XMLe)@en[[[content]]]] や [CODE(XMLe)@en[content:[[encoded]]]] に''全文''を入れる - [35] '''[Q[続きを読む]]の続きが入っていない''' -- >>29 の一例 -- [Q[続きを読む]]で分割する機能自体が ([[HTML]] 版でも) うざい -- ''改善方法'' --- [25] [Q[続きを読む]]を使わない (最善解) --- [26] [[フィード]]には[Q[続きを読む]]の[Q[続き]]も含まれるようにする - [41] [Q[続き]]があるのかどうか、 [[フィード]]版だけでは判断できない -- >>35 の最悪な場合 -- [[著者]]によっては[Q[続きを読む]]の前まででそれなりにまとまった[[文章]]にするので、 そこで終わったとしても不自然じゃないことがある -- 更に[[著者]]によっては日によって[Q[続き]]を書いたり書かなかったりするのでかなりうざい -- ''改善方法'' --- [28] >>25 (最善解) --- [48] >>26 - [46] '''文章の一部分が[[フィード]]ではなぜか欠落している''' -- 例えば画像とか引用とか -- ''改善方法'' --- [49] >>5 (最善解) - [2] '''マーク付けなしで、文章だけ入っている''' -- 段落とかリストとか全部ぐちゃぐちゃ -- ''改善方法'' --- [5] [[HTML]] 版の[[マーク付け]]をそのまま [CODE(XMLe)@en[[[content]]]] や [CODE(XMLe)@en[content:[[encoded]]]] に入れる (最善解) --- [6] [[HTML]] [[要素]]の境界に[[空白]]や[[記号]]を入れて整形したものを入れる ([[改段落]]を[[改行]]2つであらわすとか、 [[リスト]]の先頭に[Q[・]]をつけるとか) - [3] '''リンク先が入っていない''' -- >>2 と同じだけど、 [CODE(HTMLe)@en[[[a]]]] [[タグ]]を消してリンクがリンクであること & リンク先がわからないのは困る -- ''改善方法''' --- [8] >>5 (最善解) --- [9] リンクのそばにリンク先の [[URI]] が含まれるようにする (>>6 の一例) ---[7] リンクがリンクであることに依存しない文章を書く - [31] '''[[画像]]が入っていない''' -- [[画像]]に関する記事で肝心の[[画像]]が含まれていないことがよくありますが、問題外ですw -- [[動画]]や[[音声]]の場合も同様です。 -- [39] [Q[ここに画像があります]]のようなメッセージが入るが、 どんな画像なのかも画像の URI も書かれていない --某無料 Weblog サービスの場合 -- ''改善方法'' --- [18] >>5 (最善解) --- [19] >>9 - [40] '''[[HTML]] 版では [CODE(HTMLe)@en[[[img]]]] なのに、 [[フィード]]内の [[HTML]] ではなぜか [CODE(HTMLe)@en[[[a]]]]''' -- 某 Weblog ソフトウェアの場合 -- >>31 よりはまし -- わざわざ [[Webブラウザ]]を起動する必要があって面倒 -- ''改善方法'' --- [26] >>5 - [47] '''[[CSS]] での[[レンダリング]]に依存しているため、[[フィード]]内のテキスト or [[HTML]] だけでは十分な情報が得られない''' -- ''改善方法'' --- [50] [[CSS]] に依存しない[[文章]]を書く --- [CODE(HTMLe)@en[[[style]]]] [[要素]] ([CODE(HTMLa)@en[[[scoped]]]] [[属性]]つき) を含める -[95] '''相対参照''' -- [[HTML]] 版の一部を抜き出して[[フィード]]化した場合など、 [[解決]]できない[[相対参照]]が含まれていることがあります。 -- ''改善方法'' ---[96] すべての [[URI参照]]は[[絶対URI参照]]とする。 ---[97] [[基底URI]] を適当な場所に指定する。 ----[98] 現状、正しく[[基底URI]] を処理できない[[利用者エージェント]]が多いのではないかと推測されますので、 >>96 とした方が無難でしょう。 -[71] '''なぜか本文が題名と同じ''' -- 本文入れろよw -- ''改善方法'' ---[72] 本文の[[要素]]には本文を入れる (最善解) ---[73] 本文の[[要素]]を含めない -[90] '''題名のリンク先が含まれていない''' -- [[HTML]] 版では記事の[[見出し]]が他サイトへの[[リンク]]になっていることがあります。 -- その[[フィード]]版では[[見出し]]の[[リンク]]が含まれていないことがあります。 -- ''改善方法'' ---[91] 何らかの形で[[リンク]]を含める [[#comment]] * 技術的な問題 [53] '''XML と見せかけて、[[整形式]]でない''' [[製形式]]でない [[XML]] が出力される理由は色々あります。例えば、 - [[HTML]] の[[本文]]を特定の長さでカットしたが、その際[[タグ]]や[[文字参照]]を考慮していないため、 [[XML]] [[要素]]の[[内容]]としたときに不正な文字列片が含まれてしまっている - [[HTML]] の[[本文]]をそのまま [[XML]] [[要素]]の[[内容]]に含めたが、 その際[[空要素]]に[[終了タグ]]を補っていない といった原因が挙げられます。 - ''改善方法'' -- [55] 手書きで [[XML]] [[文書]]を作成しない -- [56] [[文字列]]操作で [[XML]] [[文書]]を生成する幼稚な[[フィード]]生成[[ソフトウェア]]を[[窓から投げ捨てる]] -- [87] [[電子メイル]]の[[メッセージ]]や[[掲示板]]への投稿から[[フィード]]を生成するときは、 [[XML]] で使えない[[文字]]が含まれていないかチェックする。 [54] '''[[文書実体]]内で[[宣言]]されていない[[実体]]への[[参照]]が登場する''' - [[HTML]] の[[名前指定実体参照]] [WEAK[([[XML]] の[[定義済実体]]への[[参照]]を除きます。)]] をそのまま使っている - ''改善方法'' --[57] [[名前指定実体参照]]を使わない (最善解) --- [[文字]]そのものを使うか --- [[数値文字参照]]を使う -- [58] [[名前指定実体参照]]の最初の [CODE[[[&]]]] を [CODE(XML)@en[&[[amp]];]] に置き換える --- すべての場面でこの方法が可能では''ない''ので注意 -- [[実体宣言]]によって使用する[[実体]]を[[宣言]]する [60] '''未だに [[Atom 0.3]]''' - ''改善方法''' -- [61] [[Atom 1.0]] を使う [62] '''未だに [[RSS]] 0.9[VAR@en[x]]''' - ''改善方法''' -- [63] [[Atom 1.0]] を使う (最善解) -- [64] [[RSS 2.0]] を使う [74] '''[[RSS 1.0]] 風だが [[RDF]] として正しくない''' - [76] [[RSS 1.0]] は [[RDF]] ですから、 [[XML]] として[[整形式]]であることに加えて、 [[RDF/XML]] として正しい[[文書]]でなければなりません。 - ''ありがちな間違い'' -- [75] [[特性]]を表す ([[要素型名]]が[[述語]]を表す) [[要素]]に[[属性]]を付加する --- [[資源]]を表す ([[要素型名]]が[[主語]]や[[目的語]]を表す) [[要素]]に[[属性]]を付加することはできますが、 [[特性]]を表す[[要素]]にはできません -- [77] [[目的語]]に[[要素]]を含める --- [[特性]]を表す[[要素]]の[[内容]]として[[文字データ]]を与えることはできます ([[リテラル]]が[[述語]]とみなされます) が、 ''そのままでは''[[子要素]]を含めることはできません --- [[特性]]を表す[[要素]]に [CODE(XML)@en[[CODE(XMLa)@en[[QN[rdf:[[parseType]]][http://www.w3.org/1999/02/22-rdf-syntax-ns#]]]]="[[Literal]]"]] という[[属性]]が必要です -- [104] [[Mobile Link Discovery]] を [[RSS 1.0]] で使う --- [[Mobile Link Discovery]] は [[RSS 1.0]] に対応していません。 --[111] [[mod_sec]] を使う --- [[mod_sec]] は [[RDF/XML]] と互換性がなく、 [[RSS 1.0]] で使うことはできません。 - [CITE[@IT]] ([TIME[2008-11-11 13:26:42 +09:00]] 版) は [[RSS 1.0]] [CODE(XMLe)@en[[[channel]]]] [[要素]]の中に [PRE(XML bad code)[ ]PRE] と [[Atom]] の[[要素]]を含んでいますが、これは [[RDF/XML]] として正しくありません。 -''改善方法'' -- [78] 正しい [[RDF/XML]] [[文書]]にする --= 初心に帰って [[RDF/XML]] の入門書を熟読する --= [[RDF]] [[妥当性検証器]]や [[RSS 1.0]] [[妥当性検証器]]で[[妥当性検証]]を行う --= 検出された誤りを訂正する -[79] '''[CODE(MIME)@en[[[text/xml]]]] で [CODE(MIME)@en[[[charset]]]] が指定されていない''' -- [80] [CODE(MIME)@en[[[text/xml]]]] の場合、 [CODE(MIME)@en[[[charset]]]] を省略すると、 [[既定値]] [CODE(charset)@en[[[US-ASCII]]]] とみなされます -- [81] 特に[[日本語]]を使っている場合、 ほぼ確実に''誤り''になります -- [82] [CODE(MIME)@en[[[text/xml]]]] を使うより、 [CODE(MIME)@en[[[application/xml]]]] を使う方が好ましいと考えられています -- [85] なお、 [CODE(XML)@en[[[xml]]]] [[宣言]]で [CODE(XMLa)@en[[[encoding]]]] [[擬似属性]]が指定されていても、 [CODE(MIME)@en[[[text/xml]]]] では''無視されます'' -- [86] [[YukiWiki]] 2.1.3, [[WalWiki]] 2.1.0.2 にこの問題があります -- ''改善方法'' --- [83] 他の[[媒体型]]を使い、 [CODE(MIME)@en[[[charset]]]] を指定する (最善解) ---- [[Atom]] なら [CODE(MIME)@en[[[application/atom+xml]]; [[charset]]=[VAR@en[charset-name]]]] ---- [[RSS 1.0]] や [[RSS 1.1]] なら [CODE(MIME)@en[[[application/rdf+xml]]; [[charset]]=[VAR@en[charset-name]]]] ---- [[RSS 2.0]] なら [CODE(MIME)@en[[[application/rss+xml]]; [[charset]]=[VAR@en[charset-name]]]] ---- 理由があって以上を使いたくないなら、 [CODE(MIME)@en[[[application/xml]]; [[charset]]=[VAR@en[charset-name]]]] --- [84] [CODE(MIME)@en[[[charset]]]] を指定する ---- [CODE(MIME)@en[[[text/xml]]; [[charset]]=[VAR@en[charset-name]]]] -[88] '''[CODE(MIME)@en[charset]] が正しくない''' -- ''改善方法'' ---[89] [CODE(MIME)@en[[[charset]]]] を正しく指定する。 -[92] '''HTML が使えない場所で HTML を使っている''' -- [CODE(XMLe)@en[[QN[atom:[[title]]][http://www.w3.org/2005/Atom]]]] や [CODE(XMLe)@en[[QN[atom:[[summary]]][http://www.w3.org/2005/Atom]]]] のような [CODE(XMLa)@en[[[type]]]] [[属性]]を省略すると [[HTML]] としては解釈されない場所で[[文字実体参照]]を使った[[フィード]]があります -- [[Movable Type]] が生成する [[Atom]] [[フィード]]がこれ?? -- ''改善方法'' --- [93] [CODE(XMLa)@en[[[type]]]] [[属性]]を正しく指定する (最善解) --- [94] [CODE(XMLa)@en[[[type]]]] [[属性]]を省略したら[[平文]]を使う -[99] '''なぜか [CODE(MIME)@en[[[text/plain]]]]''' -- ''改善方法'' --- [100] [CODE(MIME)@en[[[application/atom+xml]]]] や [CODE(MIME)@en[[[application/rss+xml]]]] を使う -[101] '''なぜか [CODE(MIME)@en[[[text/html]]]]''' -- ''改善方法'' --- [102] [CODE(MIME)@en[[[application/atom+xml]]]] や [CODE(MIME)@en[[[application/rss+xml]]]] を使う -[105] '''多重 escape されていたり、HTML タグが使われていたりする''' -- [[RSS 2.0]] では、 [CODE(XMLe)@en[[[description]]]] ''以外''の文字列を含む[[要素]] ([CODE(XMLe)@en[[[title]]]]) の内容は[[平文]]であって、 [[HTML]] ではありません。 --- [[RSS 2.0]] 仕様書では規定が曖昧ですが、[[RSS Best Practices Profile]] により明確化されています。 -- ただ、現実には [[HTML]] として解釈する実装も存在するので、 [[タグ]]や[[文字参照]]のように見える文字列が含まれているときは危険です。 [[RSS Best Practices Profile]] は[[文字参照]]の使用を勧めています。 -- ''改善方法'' ---[106] 多重 escape せず、 [[HTML]] [[タグ]]も使わない -[107] '''escape が足りない''' -- [[RSS 2.0]] では、 [CODE(XMLe)@en[[[description]]]] [[要素]]の[[内容]]は [[HTML]] とみなされます ([[ソース・コード]]・レベルで見ると、1重 escape された [[HTML]])。 --- [[RSS 2.0]] 仕様書では規定が曖昧ですが、[[RSS Best Practices Profile]] により明確化されています。 -- ''改善方法'' --- [108] [[HTML]] として解釈した時に適切であるように、 [[ソース・コード]]・レベルで見たときに丁度1回だけ escape されているように見えるようにする。 -[109] '''日付形式が正しくない''' -- [[RSS 2.0]] の日付は [[RFC 822の日付形式]]でなければなりません。 -- ただし、 [[RSS Best Practices Profile]] によると、 [[4桁年号]]を使うことができます。 -- [[RFC 822]] によると時・分・秒は2桁の数でなければなりませんが、 1桁の数となっている[[フィード]]もあります。 --''改善方法'' ---[110] [[RFC 822]] に従う -[112] '''空要素が含まれている''' -- 例えば、 [CITE[2008: Hitachi Security Information RSS Feed]] ([TIME[2008-10-24 00:08:51 +09:00]] 版) ([[RSS 1.0]]) は [CODE(XML example)[]], [CODE(XML example)[]], [CODE(XML example)[]] のように意味を成さない[[空要素]]を含んでいます。 -- 例えば、[CITE[@IT]] ([TIME[2008-11-11 13:26:42 +09:00]] 版) ([[RSS 1.0]]) は [CODE(XML example)@en[]] や [CODE(XML example)@en[]] のように意味を成さない[[空要素]]を含んでいます。 -- [[RSS 1.0]] や [[Dublin Core]] の仕様が曖昧なため、仕様違反と断定はできませんが、 無意味、あるいは有害かもしれません。 -[113] '''本文を一般的でない形式でのみ提供している''' -- [[ブログ]]の[[フィード]]から参照している外部の内容が、 一般的でない (その[[著者]]の独自[[スキーマ]]の) [[XML]] [[文書]]で、 [[HTML]] に変換するための [[XSLT]] [[スタイル・シート]]の指定すらなかったりすることがあります。 -- (少なくても[[フィード]]が [[Atom 1.0]] の場合は) 仕様上問題ありません。 -- しかし、広く一般の読者に対して[[フィード・リーダー]]で読み取るために提供している[[フィード]]であるとしたら、 [[相互運用性]]の低い形式で本文を提供しても意味がありません。 -- [[著者]]が編集用に使っている独自形式やマイナーな形式の[[文書]]がある場合、 それを[[フィード]]内に示しておくと何か便利な使われ方がもしかするとあるかもしれませんが、 それはそれ、 [[HTML]] 等の一般的な形式の内容も別途用意しておくべきです。 --''改善方法'' ---[114] [[HTML]] や[[平文]]のような一般的な形式を使う。 ---[115] [[HTML]] や[[平文]]のような一般的な形式も用意する。 [[#comment]] * 自動発見 -[65] '''[[Feed Auto-Discovery]] の [CODE(HTMLa)@en[[[href]]]] が [CODE(URI)@en[[[feed]]:]] [[URI]]''' -- [CODE(URI)@en[[[feed]]:]] [[URI]] に対応した実装はそれほど多くない -- [CODE(URI)@en[[[feed]]:]] [[URI]] を使ったからといって特に便利になるわけではない -- [CODE(URI)@en[[[feed]]:]] [[URI scheme]] は [[IANA]] に登録された正式なものではない -- ''改善方法'' --- [66] [CODE(URI)@en[[[feed]]:]] [[URI scheme]] は使わない [[#comment]] * センスの問題 -[67] '''HTML からフィードへのリンクに [Q@en[[[XML]]]]''' -- 嘘は (たぶん) ついていませんが、 [[XML]] だという説明は[Q[あの人誰?]] [Q[日本人。]] くらいに[[情報量]]が少ないです。 -- ''改善方法'' ---[68] [Q[[[フィード]]]]、[Q@en[[[RSS]]]]、 [Q@en[[[Atom]]]]、[Q[更新情報]]など適切な名前に変更する -[69] '''HTML からフィードへのリンクに[Q[このサイトと連携する]]''' -- 語源はともかくとして、 誰が何のためにどう連携するのか意味がわかりません。 -- ''改善方法'' --- [70] >>68 -[103] '''フィードがなくなる''' --ある時存在した[[フィード]]が、いつの間にか [CODE(HTTP)[[[404]]]] になっていたり、 [[鯖]]ごとなくなっていたりします。 -- これはもう致し方ないですね[AA[orz]] -- ''改善方法'' ---[[フィード]]の [[URL]] を変更しない (最善解) ---新しい [[URL]] へ[[リダイレクト]]する ---[[フィード]]配信を取りやめる場合、 [CODE(HTTP)@en[[[410]] Gone]] [[応答]]を返す [[#comment]] * メモ