10.

OpenDocument 形式(ODT/ODS/ODP)完全ガイド — ISO 26300・LibreOffice・XML 構造・MS Office との相互運用

編集
この記事の要点
  • OpenDocument Format (ODF) は LibreOffice / Apache OpenOffice などが採用するオープン文書形式
  • ISO/IEC 26300 / OASIS 標準で、ベンダー非依存
  • .odt = 文書、.ods = 表計算、.odp = プレゼンと、DOCX/XLSX/PPTX に対応
  • 実体は OOXML と同じく ZIP + XML 構造で、content.xml / styles.xml が中核
  • EU・南米・アジアなどの政府機関・教育機関で「公文書のオープン形式」として採用が進む
  • Microsoft Office も ODF を読み書きできるが、再現性は完全ではない

概要

OpenDocument Format (ODF) は OASIS が策定し、ISO/IEC 26300 として国際標準にもなっているオフィス文書のオープンフォーマット。LibreOffice、Apache OpenOffice、Collabora Online などの OSS オフィススイートが既定形式として採用している。

主な拡張子は以下:

  • .odt — OpenDocument Text (文書)。DOCX に相当
  • .ods — OpenDocument Spreadsheet (表計算)。XLSX に相当
  • .odp — OpenDocument Presentation (プレゼン)。PPTX に相当
  • .odg — OpenDocument Graphics (図形)
  • .odf — OpenDocument Formula (数式)

「ベンダーロックインを避けたい」「長期保存に耐える公開仕様の形式を使いたい」という動機で、EU、ブラジル、インド、日本の一部自治体など、政府・教育機関での採用が増えている。

内部構造

ODF も OOXML 同様、ZIP + XML 構造を取る。一見すると似ているが、XML スキーマは別物。中核は content.xml (本文) と styles.xml (スタイル定義)。

# ODT の中身を確認
unzip -l report.odt
#   mimetype                ← 先頭に非圧縮で配置 (識別用)
#   META-INF/manifest.xml   ← ファイル一覧とタイプ
#   content.xml             ← 本文
#   styles.xml              ← スタイル
#   settings.xml            ← アプリ設定
#   meta.xml                ← メタデータ
#   Pictures/image1.png     ← 埋め込み画像
#   Thumbnails/thumbnail.png ← サムネ

mimetype ファイルが ZIP の先頭に非圧縮で置かれているのが特徴で、file コマンドが ODF として認識するための仕組み。

<!-- content.xml の構造 (ODT) -->
<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
                         xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0">
  <office:body>
    <office:text>
      <text:h text:outline-level="1">見出し</text:h>
      <text:p>これは段落です。</text:p>
      <text:p>
        <text:span text:style-name="Bold">太字</text:span>を含む。
      </text:p>
    </office:text>
  </office:body>
</office:document-content>

主な用途

  • 政府・自治体の公文書 — オープン標準が要件となるケース
  • 教育機関 — 大学・学校の配布資料 (OSS 重視の方針)
  • OSS プロジェクトのドキュメント — Linux ディストリビューションのコミュニティ作業
  • LibreOffice ユーザー全般 — Microsoft Office を持たない環境
  • 長期保存 — ベンダー非依存・公開仕様のため将来も開ける保証が高い

関連形式との比較

用途ODF (OSS)OOXML (MS)レガシー (MS)
文書.odt.docx.doc
表計算.ods.xlsx.xls
プレゼン.odp.pptx.ppt
図形.odg
数式.odf
項目ODFOOXML (DOCX/XLSX/PPTX)
策定OASIS / ISO/IEC 26300ECMA / ISO/IEC 29500
主力アプリLibreOffice, OpenOfficeMicrosoft Office
実体ZIP + XMLZIP + XML
採用状況政府・教育・OSS 系企業・一般ユーザー全般
相互運用MS Office でも読めるLibreOffice でも読める

編集・パーサ・ツール

LibreOffice CLI でフォーマット変換ができる。GUI なしで動くため、サーバサイドの自動変換にも使える。

# LibreOffice headless 変換
libreoffice --headless --convert-to pdf report.odt
libreoffice --headless --convert-to docx report.odt
libreoffice --headless --convert-to xlsx data.ods

# pandoc で ODT を Markdown へ
pandoc report.odt -o report.md

Python では odfpy で ODF を直接読み書きできる。

from odf.opendocument import OpenDocumentText
from odf.text import H, P

doc = OpenDocumentText()
doc.text.addElement(H(outlinelevel=1, text='レポートタイトル'))
doc.text.addElement(P(text='本文の段落です。'))
doc.text.addElement(P(text='ODF はオープン標準です。'))
doc.save('output.odt')

注意点・落とし穴

  • Microsoft Office との相互運用は完全ではない — 複雑な書式・図表・マクロは ODT ⇄ DOCX 変換で崩れることがある。重要文書は同じスイートで完結させる
  • マクロは Basic ベース — VBA と互換性がないため、Word マクロ付き文書を ODT 化しても動かない
  • 業務環境での採用は地域差が大きい — 日本の一般企業ではほぼ見ない一方、欧州政府機関では標準。取引先と齟齬が出ないよう保存形式は事前合意
  • サムネイル経由の情報漏洩 — Thumbnails ディレクトリに低解像度のプレビューが含まれる。機密文書ではメタデータと合わせて確認
  • 名前空間 (xmlns) の差異 — OOXML との XML スキーマ互換性はゼロ。自作パーサを使う場合は両方に対応する必要がある

関連リンク

編集
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)

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