| この記事の要点 |
|
概要
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.xml は XML 仕様にそった文書で、段落 <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 | .docx | OOXML / ISO 29500 | ZIP + XML | Microsoft Word |
| DOC (旧) | .doc | 独自バイナリ | CFB バイナリ | Word 97-2003 |
| ODT | .odt | ODF / ISO 26300 | ZIP + XML | LibreOffice |
| RTF | .rtf | Microsoft 独自 | 制御文字付きテキスト | Word, WordPad |
| ISO 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 系統があり、互換性が完全ではないケースがある
関連リンク
- テキスト・ドキュメント形式
- ファイル拡張子とは
- XLSX(.xlsx)
- PPTX(.pptx)
- RTF(.rtf)
- ODT / ODS / ODP
- PDF(.pdf)
- アーカイブ・圧縮形式
- XML(.xml)
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15