オフィス文書の国際標準
ODF 1.2
OSS オフィスソフト・フェスタ
2014.4.9
技術評価
WG
株式会社 ミライト情報システム
小笠原 徳彦
ogasawara.naruhiko@miraitsystems.jp
2014/04/09
OSSオフィスソフト・フェスタ
2
自己紹介
●
小笠原 徳彦
(OGASAWARA, Naruhiko)
●
ミライト情報システム
エンタープライズ事業本部
ソリューション事業部
OSS 技術部 所属
●
技術評価
WG メンバー
●
日本語チーム メンバー
●
雑誌・
Web メディアなどに執筆経験あり
目次
●
ODF とは何か
●
ODF の構造
●
ODF で表現するもの、しないもの
●
ODF vs OOXML
●
まとめ
2014/04/09
OSSオフィスソフト・フェスタ
4
目次
●
ODF とは何か
●
ODF の構造
●
ODF で表現するもの、しないもの
●
ODF vs OOXML
●
まとめ
ODF とは?
●
Open Document Format
–
オフィス文書の交換用標準フォーマット
●
Apache OpenOffice 、 LibreOffice
、
OpenOffice.org
の
標準文書フォーマット
●
オープン系オフィスソフトの
Abiword 、 Gnumeric 、
Calligra (旧 KOffice )なども標準で採用
●
Microsoft Office や Google Drive もインポート・エクス
ポート可能
2014/04/09
OSSオフィスソフト・フェスタ
6
ODF を決めているのは?
●
規格団体
OASIS (
https://www.oasis-open.org/
) の
Open Document Format for Office Applications
(OpenDocument) TC にて制定
http://www.oasis-open.org/committees/office
–
TC = Technical Committee
(技術委員会)
●
制定後、
ISO/IEC に標準化提案
●
現在は
1.2 が OASIS で制定完了 (2012.01.11)
–
ISO/IEC
で標準化プロセス中
ポイント
●
完全にベンダーフリー
–
TC
のスポンサーは多種多様
IBM, Microsoft, Nokia, Novell, Oracle, Red Hat, Boeing
●
大きく分けて二つの標準化の集合
–
Open Document Format (ODF)
●
文書フォーマットの標準
–
Open Formula
2014/04/09
OSSオフィスソフト・フェスタ
8
目次
●
ODF とは何か
●
ODF の構造
●
ODF で表現するもの、しないもの
●
ODF vs OOXML
●
まとめ
ODF = ZIP された XML + α
$ unzip ../ODF.odp (git)-[master] Archive: ../ODF.odp extracting: mimetype extracting: Thumbnails/thumbnail.png inflating: meta.xml inflating: settings.xml inflating: content.xml inflating: Pictures/TablePreview1.svm extracting: Pictures/10000000000001680000003C4B8CF63D.jpg extracting: Pictures/1000020100000258000000B2FAEDCD5A.png extracting: Pictures/1000000000000320000000C8FC9C48B6.png extracting: Pictures/1000351400009698000054ABF11AC20D.svg extracting: Pictures/10000201000003AF00000212D6B53D6E.png extracting: Pictures/10000000000000200000002000309F1C.png inflating: styles.xml creating: Configurations2/images/Bitmaps/ inflating: Configurations2/accelerator/current.xml creating: Configurations2/floater/ creating: Configurations2/popupmenu/ creating: Configurations2/statusbar/ creating: Configurations2/toolpanel/ creating: Configurations2/progressbar/ creating: Configurations2/menubar/ creating: Configurations2/toolbar/ inflating: META-INF/manifest.xml
2014/04/09
OSSオフィスソフト・フェスタ
10
展開した
ODF の内容
ファイル名
意味
mimetype
ファイルの
mime type を示す
Thumbnails/*.png
サムネイル画像
settings.xml
文書の設定を保持する
XML
content.xml
文書の内容を
XML で記載したもの
Pictures/*
文書内に添付されている画像のファイル
・表のプレビューファイル
styles.xml
スタイルおよびマスターページに関わる情報
Configuraltions2/*
文書ごとに保存する「オプション」の設定
META-INF/*
文書のメタ情報を保存
META-INF/manifest.xml ファイル構成その他の「マニフェスト」を宣言する
データ表現の例①
●
例えば
–
このような
●箇条書きは
–
どうなるか
<text:list text:style-name="L2">
<text:list-item>
<text:p>
例えば
</text:p>
<text:list>
<text:list-item>
<text:p>
このような
</text:p>
<text:list>
<text:list-item>
<text:p>
箇条書きは
</text:p>
</text:list-item>
</text:list>
</text:list-item>
<text:list-item>
<text:p>
どうなるか
</text:p>
</text:list-item>
</text:list>
</text:list-item>
</text:list>
2014/04/09
OSSオフィスソフト・フェスタ
12
データ表現の例②
この線は?
<style:style style:name="gr13"
style:family="graphic"
style:parent-style-name="objectwithoutfill">
<style:graphic-properties
svg:stroke-width="0.1cm"
svg:stroke-color="#ff0000"
draw:marker-start-width="0.45cm"
draw:marker-end-width="0.45cm"
draw:fill="none"
draw:textarea-horizontal-align="center"
draw:textarea-vertical-align="middle"
fo:padding-top="0.175cm"
fo:padding-bottom="0.175cm"
fo:padding-left="0.3cm"
fo:padding-right="0.3cm"/>
</style:style>
……
<draw:line draw:style-name="gr13"
draw:text-style-name="P2"
draw:layer="layout"
svg:x1="2.111cm" svg:y1="16.879cm"
svg:x2="7.937cm" svg:y2="11.855cm">
<text:p/>
</draw:line>
<style:style style:name="
gr13
"
style:family="graphic"
style:parent-style-name="objectwithoutfill">
<style:graphic-properties
svg:
stroke-width
="
0.1cm
"
svg:
stroke-color
="
#ff0000
"
draw:marker-start-width="0.45cm"
draw:marker-end-width="0.45cm"
draw:fill="none"
draw:textarea-horizontal-align="center"
draw:textarea-vertical-align="middle"
fo:padding-top="0.175cm"
fo:padding-bottom="0.175cm"
fo:padding-left="0.3cm"
fo:padding-right="0.3cm"/>
</style:style>
……
<draw:line draw:style-name="
gr13
"
draw:text-style-name="P2"
draw:layer="layout"
svg:x1="
2.111cm
" svg:y1="
16.879cm
"
svg:x2="
7.937cm
" svg:y2="
11.855cm
">
<text:p/>
</draw:line>
気がつくところ①
●
元々の文書の構造が割と
XML に素直に対応する
–
だからちゃんと文章の構造を意図して書くと、
ODF
的に
綺麗に表現できる
–
Writer
などで見た目だけを整えてしまいスタイルを使わ
ないとよろしくない
●
寸法・位置は
cm の実寸で表現
–
ピクセル表現ではない
2014/04/09
OSSオフィスソフト・フェスタ
14
気がつくところ②
●
内部的には線の太さや色は「スタイル」になる
–
線:線種・色・太さ
–
塗りつぶし:色・パターンなど
gr1 = 線種:実線、太さ: 0.1cm 、色:赤、
塗りつぶし:なし
詳しい仕様
●
OASIS のサイトにて配布
–
Technical Work Produced by the Committee
-Open Document Format v1.2
https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office#technical
●
三部構成
–
Part 1 OpenDocument Schema
http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part1.pdf
–
Part 2 Recalculated Formula (OpenFormula) Format
http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part3.pdf
–
Part 3 Packages
2014/04/09
OSSオフィスソフト・フェスタ
16
Part 1 OpenDocument Schema①
●
XML 文書の定義について述べた仕様
●
ODF は以下のようなフォーマットの集まり
–
OpenDocument Text Document
–
OpenDocument Spreadsheet Document
–
OpenDocument Drawing Document
–
OpenDocument Presentation Document
–
OpenDocument Formula Document
Part 1 OpenDocument Schema②
●
Producer と Consumer
–
Producer: ODF
に適合する文書を作るソフトウェア
2014/04/09
OSSオフィスソフト・フェスタ
18
Part 1 Open Document Schema③
–
Text
–
Paragraph Element
–
Text Field
–
Text Indexes
–
Tables
–
Graphic
–
Chart
–
Database Front-end
Document
–
Form
–
Common
–
SMIL Annotations
–
Styles
–
Formatting Elements
●
さまざまな
Content (内容)
Part 1 Open Document Schema④
●
Datatypes (データ型)
–
W3C Schema Datatypes
●
string, date, time, dateTime, decimal, duration, int, integer,
nonNegativeInteger, positiveInteger, double, long, short, base64Binary, ID,
IDREF, NCNames
–
Other Datatypes
●
angle, anyIRI, boolean, cellAddress, cellRangeAddress, cellRangeAddressList,
character, clipShape, color, coodinate, countryCode, CURIE, CURIEs,
dateOrDatetime, distance, language, languageCode, length,
namespacedToken, nonNegativeLength, nonNegativePixelLength, pathData,
percent, point3D, points, positiveLength, relativeLength, safeCURIE,
scriptCode, sizedZeroToHandledPercent, styleName, styleNameRef,
targetFrameName, textEncoding, timeOrDateTime, URLorSafeCURIE,
valueType, variableName, vector3D, zeroToHandledPercent
2014/04/09
OSSオフィスソフト・フェスタ
20
Part 1 Open Document Schema⑤
●Attributes (属性)
–
XML タグの中で、タグを修飾するもの
–
General Attributes (一般属性)
●プレゼンアニメとかデータベース接続とかフォームとか
–
Formatting Attributes (書式属性)
●<style:*-properties> タグ専用の属性。書式を定義する
<draw:line
draw:style-name="gr13"
draw:text-style-name="P2"
draw:layer="layout"
svg:x1="2.111cm" svg:y1="16.879cm"
svg:x2="7.937cm" svg:y2="11.855cm">
<text:p/>
</draw:line>
<draw:line
draw:style-name="gr13"
draw:text-style-name="P2"
draw:layer="layout"
svg:x1="2.111cm" svg:y1="16.879cm"
svg:x2="7.937cm" svg:y2="11.855cm">
<text:p/>
</draw:line>
この部分が属性
Part 2 OpenFormula Format
●
大雑把に言えばセル関数の定義
–
ODF 1.1
までは
Open Document Schema
の一部だったが
1.2
から独立
●
Expression (式)と Evaluator (評価器)
–
OpenDocument Formula Expression
~= OpenFormula
–
評価器は三種類存在
●
OpenDocument Formula Small Group Evaluator
●OpenDocument Formula Medium Group Evaluator
●OpenDocument Formula Large Group Evaluator
サポートする
セル関数の
範囲で決まる
OpenDocument Formula Expression OpenFormula2014/04/09
OSSオフィスソフト・フェスタ
22
Part 3 Packages
●
ODF のファイル構造を決めたもの
●
このスライドの
p.9 で示したような内容が厳格に定
義されている
●
Encryption (暗号化)や Digital Signature (電子認
ODF Validator
●
ODF 文書が規準を満たしているかを検証
(validate) するソフトウェア
–
Apache ODF Toolkit
インキュベータプロジェクト
http://incubator.apache.org/odftoolkit/conformance/ODFValidator.html
–
Web サービスも公開中
2014/04/09
OSSオフィスソフト・フェスタ
24
ODF Plugfest
●Plugfest とは
–
元々は同じ標準に基づく物理インタフェースを持つ多種多様な
デバイスを「
plug して( = つないで)」動作チェックをするイベント
–
転じて、同じファイルフォーマットを扱えるソフトウェアの
相互運用
性
をチェックするイベント
●ODF Plugfest
–
ODF を扱えるソフトに様々なファイルを読み込ませて正しく読める
かを確認するイベント
–
最後に行われたのは
2012 年 10 月
–
ホストしていた
OpenSociety のサイトもダウン中
–
ちょっと状況を監視したい……
目次
●
ODF とは何か
●
ODF の構造
●
ODF で表現するもの、しないもの
●
ODF vs OOXML
●
まとめ
2014/04/09
OSSオフィスソフト・フェスタ
26
ODF で表現するもの
●
ODF ファイルの構造
●
ODF 文書の中に持つべき情報
–
文書の構造
–
文書の構成要素
–
各構成要素の書式
–
……
●
ODF で決まっている仕様を変更・拡張する
ようなア
プリケーションの機能要求は、受け入れられるハー
ドルが上がる
ODF で表現しないもの
ODF は表現しか決めないので、動作に関する部分は
アプリケーションで決まる
●
ODF の表現をどうユーザーに見せるか
–
ODF
では表現可能であっても、アプリ的には不可能にし
ているものもある
●
ある文書表現をどう操作して入力・編集するか
●
インポート・エクスポートの仕様
–
例えば
Excel 2003
文書を読み込んで
Calc
にしたとき
2014/04/09
OSSオフィスソフト・フェスタ
28
ODF で表現されるべきだが
そうでないもの
●
アプリケーション側の機能拡張で、本来なら
ODF を
拡張すべきだが企画提案されておらず、先行的に
入っているもの
●
アプリケーションのリリースノートのようなものに「企
画提案中」などと書いてあったりする
●
ODF Validator はこの手の拡張を知らないのでエ
ラーを吐くことになる
–
ローカルで動かして最新のスキーマ定義を適用してや
れば検証可能
目次
●
ODF とは何か
●
ODF の構造
●
ODF で表現するもの、しないもの
●
ODF vs OOXML
●
まとめ
2014/04/09
OSSオフィスソフト・フェスタ
30
OOXML とは
●
MS Office 2007 から導入された新しいファイル形式
●
Office Open XML の略、別名 OpenXML
●
Microsoft により仕様提案、 ECMA
http://www.ecma-international.org/default.htm
にて標準化
(ECMA-376)
http://www.ecma-international.org/publications/standards/Ecma-376.htm
OOXML と旧 MS Office 形式
●
旧
MS Office 形式はフォーマット非公開
–
バイナリー形式であり中を覗いても意味不明
–
ただしユーザーが多いので解析されつくしている
●
OOXML と旧 MS Office 形式はファイル形式の互換
性は一切ない
–
表現力は近いとは想像できる
●
MS Office 2007 以降にとって、旧 MS Office 形式は
「インポート・エクスポート」の対象
–
標準フォーマットではない
2014/04/09
OSSオフィスソフト・フェスタ
32
OOXML = ZIP された XML + α
$ unzip ../line-thickness.xlsx Archive: ../line-thickness.xlsx inflating: [Content_Types].xml inflating: _rels/.rels inflating: xl/_rels/workbook.xml.rels inflating: xl/workbook.xml inflating: xl/theme/theme1.xml inflating: xl/worksheets/_rels/sheet1.xml.rels inflating: xl/worksheets/sheet2.xml inflating: xl/worksheets/sheet3.xml inflating: xl/worksheets/sheet1.xml inflating: xl/styles.xml inflating: docProps/core.xml inflating: xl/printerSettings/printerSettings1.bin inflating: docProps/app.xml $ unzip ../line-thickness.xlsx Archive: ../line-thickness.xlsx inflating: [Content_Types].xml inflating: _rels/.rels inflating: xl/_rels/workbook.xml.rels inflating: xl/workbook.xml inflating: xl/theme/theme1.xml inflating: xl/worksheets/_rels/sheet1.xml.rels inflating: xl/worksheets/sheet2.xml inflating: xl/worksheets/sheet3.xml inflating: xl/worksheets/sheet1.xml inflating: xl/styles.xml inflating: docProps/core.xml inflating: xl/printerSettings/printerSettings1.bin inflating: docProps/app.xmlOOXML の特徴
●
アプリケーションによりファイル構造が大きく異なる
–
例えば
Excel
なら
worksheet + (sheets × n)
など
●
ODF はスタイル指向だが、 OOXML は個々のプロパ
ティを設定していく感じ
●
仕様がとにかく膨大
–
ODF 1000
ページ:
OOXML
6500
ページ
–
Office Open XML overview
という
14
ページの入門ド
キュメントがあるのでこれを読むと良い
2014/04/09
OSSオフィスソフト・フェスタ
34
OOXML と ODF を比べる①
●
日本のみなさん大好きな
罫線を
Excel で描く
–
Excel
の罫線は
ODF
の罫線とモデルが違う
●「線種」と「線の太さ」が一次元にマップされている
–
OOXML
もそれを反映
<sheetData> <row r="2" spans="2:2"> <c r="B2" s="1"/></row><row r="3" spans="2:2" ht="14.25" thickBot="1"/> <row r="4" spans="2:2" ht="14.25" thickBot="1"> <c r="B4" s="2"/></row>
<row r="5" spans="2:2" ht="14.25" thickBot="1"/>
<row r="6" spans="2:2" ht="15" thickTop="1" thickBot="1"> <c r="B6" s="3"/></row>
<row r="7" spans="2:2" ht="14.25" thickTop="1"/> </sheetData>
OOXML と ODF を比べる②
●「線の太さ」に関するモデリングの違い
–
ODF は線の太さは実寸( cm 単位)
–
OOXML は「細い」「中ぐらい」「太い」しかない
●悩ましい変換の問題
–
基本的に行ったり来たりをするのは推奨されない
s = "1"
ODF アプリケーション
OOXML
OOXML
インポーター
内部モデル
(ODF like)
stroke-width=??
stroke-width=0.1cm
OOXML
エクスポーター
s = "?"
2014/04/09
OSSオフィスソフト・フェスタ
36
OOXML Validator / Plugfest
●
一応存在する
http://ooxmlvalidator.codeplex.com/
–
非常に野良っぽい
–
2009
年から更新が止まっている
–
OOXML
最新バージョンは
4
だが、
3.0
しかサポートして
いない
●
Plugfest
–
存在しない
●
OOXML は、相互運用性の担保に無関心に見える
目次
●
ODF とは何か
●
ODF の構造
●
ODF で表現するもの、しないもの
●
ODF vs OOXML
●
まとめ
2014/04/09
OSSオフィスソフト・フェスタ
38
まとめ
●