2004年02月20日 (金)

Re: トラックバックのエンコーディング問題

iBloggers in Japan MLまえださんから報告&問いかけがあったのでそれについての私の考えを書いてみます。まえださん是非参考にして HaloScan にお伝え下さい。

英語が達者なら自分で加勢に出たいのですが、英作文はさっぱりなので人頼みです。m(_ _)m

【なんで文字化けになるの?】
図示するとこういうことです。

トラックバック Ping 元(Shift_JIS と設定)

(Shift_JIS の日本語)

HaloScan のサーバ ←(Shift_JIS の日本語)→ HaloScan のデータ

(Shift_JIS の日本語)

トラックバック先(UTF-8 と設定) <= ここでエンコードのミスマッチ!!


【どうなったらいいの?】
トラックバック先は HaloScan から送られて来たページを表示しているだけですし、そもそも HaloScan を利用しているということは自前で CGI など用意できないからで、トラックバック先で Shift_JIS から UTF-8 に変換することは望めません。同じようにトラックバック Ping 元でも同じように HaloScan を利用しているかもしれないわけですから、ここで変換することも望めません。

そうすると HaloScan の中で Shift_JIS から UTF-8 への文字コード変換をしてあげればよいことになります。


【それは可能なの?】
100% の信頼性で行うことは不可能です。なぜならばトラックバック Ping 元では Shift_JIS の文字列であることを HaloScan に教えていないからです。HaloScan はエンコードの自動認識をする必要があります。そして違うエンコードの文字コードには重なりがあります。この重なりがあるとどちらのエンコードなのか機械的に判断できません。

それでも重ならない文字コードが使われていればそれを見てエンコードが判断できます。エンコードの自動判定はこれを利用した機構なのですが、上記の理由で完全な自動判定は不可能なことなのです。


【ではどんな工夫があり得るの?】
一つは HaloScan が可能な限り質の良いエンコードの自動判定を行うようにするというものがあります。もう一つは、Ping 元が使用しているエンコードを HaloScan に教えるというものです。恐らく既存の国内のトラックバック先はこの方策を両方行っていると思います。つまり教えてもらえればそれを使って変換し、教えてもらえなければ頑張って判定して変換するのでしょう。このために文字化けが(ほとんど)発生しません。


【HaloScan はそれを採用できるの?】
できません。
少なくとも低コストではできません。

なぜならば HaloScan は国際的なサービスだからです。日本語だけでも大きく分けて 5 つくらいのエンコードが使用されています。世界中の数多あるエンコードをノーヒントで言い当てられるようにするには相当大変なことです。寄付(と広告?)で成り立っている HaloScan にはそこまでのコストをかけられないでしょう。

そして、もう一つの方策のエンコードを教えてあげる方ですが、このための統一された規格はまだ無いようです。トラックバックは送り手と受け手がいるものですからお互いが理解しているやり方で教えなければなりませんが、その教え方が決まっていないのです。(少なくとも去年の今くらいはそうだったようです)


[本当にできないの?]
実は上のできない理由の前半には詭弁が含まれています。国際的なサービスだからといって特定の国だけに対応してはいけないわけではありません。ユーザ数の多い順などなんらかの基準で個別対応してゆけばいいのです。

現在、HaloScan のトラックバック URL は次のような形をしています。
http://haloscan.com/tb/YOURNAME/ENTRY_ID

例えば日本語にローカライズされたトラックバック URL を次のようにします。
http://haloscan.com/tb/YOURNAME/ENTRY_ID/ja_JP

このようにすれば HaloScan の tb というトラックバック用のプログラムは ja_JP 用のローカライズされた処理を行えばよいと知ることができます。日本における日本語用の処理であればエンコードのバリエーションを減らすことができ、その範囲内ならばそれほどコストをかけずに対応できるはずです。

そして、その ja_JP に対応するところを予算に合わせて順次広げていけばよいのです。
# 願わくば日本が後回しになりませんように。


【規格は直ぐに決まるの?】
わかりません。最近の動向まで調べる余裕がいまありません。先日リリースの HaloScan が採用していないということは決まっていなさそうです。

わかりませんが、仮に明日決まったとしてもそれが広く普及するのはかなり先のことになるでしょう。それまでの間はその新しい規格と古い(エンコードを教えない)規格が混在することになります。その間、上のような自動判定の努力をしていなければ、文字化けの発生を容認せざるを得ません。(自動判定も完全にはできないので多少は容認せざるをえないですが...)

更に、仮に決まっても HaloScan は上の自動判定と同じ理由で一挙にサポートできません。世界中の色々なエンコードに全て対応するのはとても大変です。実は上の自動判定による変換をサポートしてゆくと、規格が決まっても既にサポートした部分はごくごくわずかな変更で対応できます。


【だからどうすればいいのさ!】
だから HaloScan はユーザが多い地域などの基準で順次ローカルな自動判定の対応をしてゆき、エンコードに関するトラックバックの規格が決まるのを待つと言うのがベストな方針です。

Posted: 14:50    | Comment | Trackback


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