概要
Microsoft Word の .docx ファイルを Mozilla Thunderbird の添付ファイルとして受け取り、
保存せずにそのまま開くと、文中の相互参照(クロスリファレンス)が
「表 2 表 2 表 2」のように重複して表示される。
ファイルをディスクに保存してから開くと正常に表示される。
⚠️ PDF に書き出しても重複が再現するため、画面表示だけの問題ではない。
環境
| ソフトウェア | 備考 |
|---|---|
| Mozilla Thunderbird | macOS 版 150.0.1 (aarch64) で確認 |
| Microsoft Word for Mac | 複数バージョン 16.109 (26051019) で確認 |
| macOS | Tahoe 26.4.1(25E253) |
※ 他の環境では再現しない場合がある(下記「切り分け」参照)。
再現手順
- 下記の再現ファイル(
thunderbird_bug_minimal2.docx)をダウンロードする。 - そのファイルをメールに添付して自分宛に送信する。
- Thunderbird で受信し、添付ファイルを保存せずに直接開く。
- 本文中の「表 2」「表 3」が重複して表示されることを確認する。
- 次に「添付を保存」でデスクトップ等に保存してから開くと正常表示されることを確認する。
切り分け結果
| 操作 | 結果 |
|---|---|
| Thunderbird から直接開く | 重複表示される |
| 保存してから開く | 正常 |
| 直接開いた状態で PDF に書き出し | 重複が再現する |
| 他の環境(別マシン)で同じ操作 | 再現しない場合あり |
✅ PDF でも再現したため、Word の画面表示設定ではなく、ファイルの読み込み処理に起因する問題と判断。
根本原因の考察
問題の .docx ファイルの XML(word/document.xml)を展開して調査したところ、
相互参照フィールド(REF フィールド)が二重にネストされた構造になっていた。
<!-- 外側フィールド(本来不要) --> <w:fldChar w:fldCharType="begin"/> <w:instrText> REF _Ref228461093 \* MERGEFORMAT </w:instrText> <w:fldChar w:fldCharType="separate"/> <!-- 内側フィールド(本来のREF) --> <w:fldChar w:fldCharType="begin"/> <w:instrText> REF _Ref228461093 \* MERGEFORMAT </w:instrText> <w:fldChar w:fldCharType="separate"/> <w:t>表 2</w:t> <w:fldChar w:fldCharType="end"/> <w:fldChar w:fldCharType="end"/>
Word で通常開いた場合は内側だけを展開して正常に表示するが、 Thunderbird の一時ファイル経由で開くと外側・内側の両方が展開されて重複表示になると推測される。
どちらのバグか
| 責任の所在 | 根拠 |
|---|---|
| Word(Microsoft) | 変更履歴編集時に不正な二重ネスト XML を生成した |
| Thunderbird(Mozilla) | 一時ファイル経由での受け渡しがその構造を表面化させた |
⚠️ どちらか一方のバグとは断定できない複合的な問題であるため、本ページで公開する。
回避策
✅ Thunderbird で受け取った .docx 添付ファイルは、必ず「添付を保存」してからディスク上のファイルを開く。直接開きボタンは使わない。
再現ファイル
以下のファイルで問題の再現を確認している。
追記:責任の所在について
2026年5月
公開後の考察により、本問題の根本原因は Microsoft Word が不正な XML を生成したことにあると判断を改めた。
二重ネストされた REF フィールドは OOXML 仕様上、不正な構造である。
正しく実装されたソフトウェアであれば、そのようなファイルを生成してはならない。
Thunderbird は不正なファイルを受け取って一時ファイル経由で Word に渡したに過ぎず、 いわば被害者の立場に近い。 Word が「通常の開き方では正常表示する」のは、 自身が生成した不正構造を自身でごまかしているに過ぎず、 それがかえって問題の発見を遅らせていた。
⚠️ 本問題は Microsoft Word のバグと判断して差し支えない。
このページについて
このページは Taiji Yamada の依頼により、 AI アシスタント Claude(Anthropic, claude.ai) が バグの調査・切り分け・再現ファイルの生成・HTML の執筆を担当した。 発見から公開に至るまでの作業はすべて Taiji Yamada と Claude の対話を通じて行われた。