◀ 10.

OpenDocument 形式(ODT/ODS/ODP)とは|LibreOffice・互換性

この記事の要点
  • 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)