プログラムを書くときにインデント(字下げ)を入れることは見やすさとバグの防止という観点から当たり前のように入れるのですが、今回はそれが元でバグに遭遇したケースを紹介します。
そのケースとは、とあるサイトでRSSリーダ用のxmlファイルを作成していた時に遭遇したバグです。
その時はRSSファイルを上記の画面のように手作業で作成しました。
当然手入力でコーディングする以上インデントは入れています。アップロードした後、インターネットエクスプローラやフリーのRSSリーダソフトで動作確認を行いました。その時は正常な動きをしました。
ところが、某ブログランキングサイトに登録すると、IN(自分のサイトからブログランキングサイトに遷移する)とOUT(ブログランキングサイトから自分のサイトに遷移する)のカウントがおかしいことに気付きました。
どうしてもINの数が取得できず、最初はリファラーの問題かと思って調べてみたら・・・
RSSの<linlk>と</link>の間にあるアドレスがタブ文字や改行が含まれた形でブログランキングに登録されていました・・・
つまりそのブログランキングサイトにはアドレスが
「http://www.yottanote.com/」
ではなく、
「(インデント)http://www.yottanote.com/(インデント)」
で登録されていたんですね。
だから、「http://www.yottanote.com/」のサイト内からからブログランキングサイトに遷移しても、リファラーにはインデントとして登録されたタブ文字がないので別サイトから遷移してきたと判断され、ランキングカウントが増えないわけです。
これはブログランキングサイトのRSSリーダー機能にバグがあるから発生してしまったわけです。相手のサイトがtrim関数とか使ってタブ文字をトリムしていれば良かったのですが、それは相手の問題なので自分にはどうすることも出来ません。
したがって、RSS用のxmlファイルについては相手のRSSリーダの(残念ながら低い)性能にあわせてインデントをいれずに作成した方がバグを回避できるということになります。
投稿日:平成26(2014)/8/15