どうも、こんばんは。夏が苦手なガジェット系ライターのIPPEIです。
本日のテーマは、Thunderbird 153で今まで設定していた日本語タグが使えなくなってしまう現象についての、解説と改善策です。
多くの方がプライベートやビジネスで愛用しているであろうメーラーといえばThunderbird一択だろう。私も漏れなくユーザーである。職場では、部署内で1つのメールアドレスを共有して、IMAPで同期して利用している。全員がThunderbirdを使っているので、タグも同じように設定することで、メールに対する進捗状況がどの端末からでも把握できるようになっている。例えば、「対応中」や「対応済み」みたいなタグである。
ところが、Thunderbird 153.0.1(以下153と表記します)にアップデートされる前までに使えていたタグが、このバージョンから全く使えなくなってしまった。具体的には、タグを付けても同期されず数秒で消えてしまうのである。IMAPサーバーにも保存していないように思われる。
簡単に結論から
Thunderbird 153では日本語タグの内部キーが変更された可能性があり、日本語タグは140ESRと互換性がなかった。
GUIでASCII名のタグを作成後、prefs.jsで表示名を日本語へ変更することで、153と140ESR間で共有タグを運用できるようになった。
各バージョンでの比較検証
バージョン140ESRを使っている端末もあったため、いろいろと比較検証したところ、次のことが判明した。
- 旧バージョンで設定したタグは問題なく表示される(ただし削除はできない)
- 153の設定画面で新規作成したタグは保存されて、同バージョンからは読み込める(140ESRでは同じ名前のタグを作成しても読み込めない)
- 日本語を含まないタグであれば、153と140ESR間でも同期できる。
以上のことから、おそらくThunderbird内部の日本語処理の問題だと推察された。
prefs.jsに保存されたタグの日本語エンコードが変わっていた
Thunderbirdのタグ設定に関する情報は%AppData%\Thunderbird\Profiles\(プロファイル名)\prefs.jsに保存されている。これを開くと状況がハッキリした。
// prefs.js (140ESR)
user_pref("mailnews.tags.&aehrhu4t-.tag", "案内中");
// prefs.js (153.0.1)
user_pref("mailnews.tags.=e6=a1=88=e5=86=85=e4=b8=ad.tag", "案内中");140ESRと153で日本語タグの内部キーが異なることがわかった。ちなみに、日本語を含めないタグを作成した場合は、内部コードも同じものになった。このことから、日本語タグの内部キー生成方式が変更されたことによって、別バージョン間で日本語タグが同期できなくなってしまった可能性が高い。
ASCIIのみ、順番を考慮した名称で作成する
prefs.jsに最初からタグを設定してもなぜかGUIに反映されなかったので、まずはGUIで新規作成する。名称は後からprefs.jsで編集するので、ここではただ作成するだけでいい。
ただし、ASCIIのみで、順番を考慮して作成する。例えば、「1_informed」や「5_done」みたな感じ。順番については、以前のバージョンではタグ作成順でソートされたが、最新版では文字コード順になってしまうからだ。
そのあとでprefs.jsを編集して、名称部分を日本語に変える。
// prefs.js
user_pref("mailnews.tags.1_informed.color", "#993399");
user_pref("mailnews.tags.1_indormed.tag", "1_案内中");この要領で作成したタグは、9番目までであれば1~9のショートカットキーが利用できるうえ、Thunderbirdの各バージョン間で問題なく同期できることがわかった。
以前に作成したタグも表示させたい
このようにタグを設定することで、今までどおり、すべての端末間でIMAP経由でタグを同期することができた。しかし、わがままを言うと、以前のバージョンで設定したタグも表示されてほしい。
そこで、140ESRのprefs.jsから以前のバージョンのタグ設定をコピーして、新しいバージョンのprefs.jsのタグ設定の後ろにペーストしてみた。すると、古いタグが新しいタグの上へ移動してしまった。文字コード的に"&"が先に来てしまうようだ。そこで、新しい方のタグには頭に"!"を付けることにした。
// prefs.js
user_pref("mailnews.tags.!1_informed.color", "#993399");
user_pref("mailnews.tags.!1_informed.tag", "1_案内中");こうすることで、新しいタグが上へ移動してショートカットキーを利用できるようになり、古いタグも表示だけはできるようになった(あいかわらず削除はできないが)。とりあえず、めでたしである。問題発覚から24時間で自分で解決したのだから我ながらグッジョブだ。
そもそも、デフォルトで設定されているタグは以下のような感じで、$labelで始まり、順番も内部キーもきちんと制御されていることがわかる。
// prefs.js
user_pref("mailnews.tags.$label1.color", "#FF0000");
user_pref("mailnews.tags.$label1.tag", "重要");
user_pref("mailnews.tags.$label2.color", "#FF9900");
user_pref("mailnews.tags.$label2.tag", "仕事");かれこれ記事を書いているうちに、Thunderbird 153.0.2esrがリリースされていた。もしかしたら、すでにデバッグされているかもしれないが、検証はしてない。まあ、エンコードされた文字列で管理されるより、好きな文字列で順番も含めて管理した方が健康的だからね。
コメント
おや、コメントがまだありません。