5.

DOCX(.docx)完全ガイド — Office Open XML 構造・ZIP 解凍・python-docx・旧 .doc との違い

編集
この記事の要点
  • DOCX は Microsoft Word 2007 以降の標準形式で、Office Open XML (OOXML) という ISO/IEC 29500 で標準化された仕様に従う
  • 拡張子は .docx だが、実体は ZIP アーカイブ + XML 群 — unzip コマンドで中身を覗ける
  • 中核は word/document.xml。スタイル・関係性・テーマも全て XML で分離管理される
  • 旧 .doc (Word 97-2003) はバイナリ形式で互換性が低く、サイズも大きい
  • Python では python-docx、コマンドラインでは pandoc でプログラム的に編集・変換できる
  • マクロ付きは .docm、テンプレートは .dotx と拡張子が分かれる

概要

DOCX は Microsoft Word 2007 で初めて採用された文書ファイル形式で、それ以降の Word の既定保存形式である。仕様は Office Open XML (OOXML) と呼ばれ、ECMA-376 として標準化された後、ISO/IEC 29500 として国際標準にもなっている。

名前の通り「XML を ZIP に固めたもの」が正体で、旧 .doc のような独自バイナリではない。このため、構造を機械的に解析・生成しやすく、サーバサイドでの自動帳票生成や差分管理 (Git でのレビュー) にも適性がある。

同じ OOXML ファミリには Excel の XLSX、PowerPoint の PPTX がある。いずれも構造は共通で「ZIP に格納された XML + 関連ファイル」である。

内部構造

.docx を unzip で展開すると、以下のようなディレクトリ構成が現れる。これは アーカイブ・圧縮形式 の一種であり、ZIP の構造を完全に踏襲している。

# DOCX の中身を確認
unzip -l report.docx
#   [Content_Types].xml         ← MIME タイプ宣言
#   _rels/.rels                 ← トップレベル関係性
#   word/document.xml           ← 本文の XML 本体
#   word/styles.xml             ← スタイル定義
#   word/settings.xml           ← 文書設定
#   word/fontTable.xml          ← フォント情報
#   word/theme/theme1.xml       ← テーマ
#   word/_rels/document.xml.rels
#   word/media/image1.png       ← 埋め込み画像
#   docProps/core.xml           ← 作成者・タイトルなどのメタ
#   docProps/app.xml            ← アプリ情報

本文を担う word/document.xmlXML 仕様にそった文書で、段落 <w:p>、ラン <w:r>、テキスト <w:t> という三層構造を取る。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
  <w:body>
    <w:p>
      <w:r>
        <w:rPr><w:b/></w:rPr>
        <w:t>太字のテキスト</w:t>
      </w:r>
    </w:p>
  </w:body>
</w:document>

主な用途

  • 業務文書全般 — 報告書、企画書、議事録、契約書のドラフト
  • テンプレート差込 — Word のメール差し込み機能や、サーバサイドでの請求書 PDF 元データ生成
  • 共同編集 — Microsoft 365 / OneDrive のクラウド同時編集の基盤
  • 論文・原稿 — 出版社・大学が指定するテンプレートとして広く使われる
  • 自動生成 — python-docx などでテンプレに動的データを埋め込んで大量帳票を量産

関連形式との比較

形式拡張子仕様実体編集の主役
DOCX.docxOOXML / ISO 29500ZIP + XMLMicrosoft Word
DOC (旧).doc独自バイナリCFB バイナリWord 97-2003
ODT.odtODF / ISO 26300ZIP + XMLLibreOffice
RTF.rtfMicrosoft 独自制御文字付きテキストWord, WordPad
PDF.pdfISO 32000固定レイアウトAcrobat 等
Markdown.md多数の方言プレーンテキスト任意のエディタ

編集・パーサ・ツール

Python で DOCX を扱う定番は python-docx。テンプレートを開いて段落を追加、保存するだけで Word ファイルが生成できる。

from docx import Document
from docx.shared import Pt

doc = Document('template.docx')
doc.add_heading('月次レポート 2026-06', level=1)
p = doc.add_paragraph('売上は前月比 ')
run = p.add_run('+12.4%')
run.bold = True
run.font.size = Pt(14)
p.add_run(' でした。')

# テーブル
table = doc.add_table(rows=2, cols=2)
table.cell(0, 0).text = '項目'
table.cell(0, 1).text = '金額'
table.cell(1, 0).text = '売上'
table.cell(1, 1).text = '12,400,000 円'

doc.save('report-2026-06.docx')

pandoc を使えば DOCX を Markdown / HTML / PDF などへ相互変換できる。

# DOCX -> Markdown
pandoc report.docx -o report.md

# Markdown -> DOCX (テンプレ適用)
pandoc article.md --reference-doc=template.docx -o article.docx

# DOCX -> PDF (要 LaTeX or wkhtmltopdf)
pandoc report.docx -o report.pdf

注意点・落とし穴

  • .doc と .docx は別物 — 旧 .doc (バイナリ) は Word 2003 以前の既定。同じ「Word ファイル」と呼ばれるが内部構造は完全に異なる
  • マクロ (.docm) — VBA マクロを含む場合は .docm として保存される。標的型攻撃で頻繁に悪用されるため、信頼できない .docm は開かない
  • 互換性モード — 古いバージョンで作成された .docx を新しい Word で開くと「互換性モード」で開かれることがあり、新機能が制限される
  • フォント埋め込み — 既定では埋め込まれないため、特殊フォント使用時は別 PC で表示崩れが起こる
  • 外部リンク・画像 — リモート参照を含むテンプレートは情報漏洩や追跡 (Web Beacon) のリスクがある
  • XML 仕様の差異 — Strict OOXML と Transitional OOXML の 2 系統があり、互換性が完全ではないケースがある

関連リンク

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. PDF(.pdf)
  2. CSV(.csv)
  3. Markdown(.md)
  4. TXT(.txt)
  5. DOCX(.docx)
  6. XLSX(.xlsx)
  7. PPTX(.pptx)
  8. TSV(.tsv)
  9. RTF(.rtf)
  10. ODT / ODS / ODP(.odt / .ods / .odp)

最近更新/作成されたページ