コラム
» 2006年02月28日 05時26分 公開

「OpenDocumentフォーマット」はオフィス環境の何を変えるのか? (2/2)

[可知豊,ITmedia]
前のページへ 1|2       

 ファイルを保存したら、解凍ツールで展開すると、次のファイルとフォルダが取り出せる。ここで、次に挙げる主要なファイルの役割を説明しておこう。

content.xml

META-INF/manifest.xml

meta.xml

mimetype

settings.xml

styles.xml

Pictures

Configurations2

Thumbnails


 「content.xml」は、もっとも重要なファイルで、ドキュメントの実際の中身を格納している(画像のようなバイナリデータを除く)。また、テキストに直接設定した書式情報も保存されている。XMLファイルとして表示すると、各要素に対応した部分がタグで囲まれているのが分かる。

主要なコンテンツを格納するcontent.xml

 META-INFフォルダに格納された「manifest.xml」は、解凍したODFファイルの中身のリストになっている。

manifest.xmlは、ODFファイルの中身のリストになっている

 「meta.xml」は、ファイルのメタデータになっている。OpenOffice.orgであれば、[ファイル]→[プロパティ]で設定した、タイトル、テーマなどを格納しているXMLファイルだ。

文書のプロパティに対応したmeta.xml

 「mimetype」は、mimetypeが記述された1行だけのテキストファイルである。ワープロで作成した文書ドキュメントは、次のように記述されている。

application/vnd.oasis.opendocument.text


 「settings.xml」は、保存時の作業状況などを保存している。カーソルの位置や用紙のズーム率といった設定を格納している。

作業状況を保存しているsettings.xml

 「styles.xml」は、「スタイルと書式」機能で設定する段落スタイルやページスタイルといった情報を保存しているファイルだ。

段落スタイルやページスタイルを格納するstyles.xml

 Picturesフォルダには、文書に埋め込まれた画像ファイルが格納される。これらのファイルは、HTMLの imgタグと同じようにして、「content.xml」から参照される。

 このように、OpenDocumentの構造は機能ごとに分類されており、それほど複雑な部類ではない。ただし、取り扱う要素はテキストから表、グラフ、フォーム、図形と非常に多岐に渡っているのが特徴だ。そのため、OpenDocumentの仕様書は、700ページを超えている。多くの要素を持つ仕様書は、リファレンスでもあるので、この程度のボリュームになるのは当然かもしれない。

 仕様書では、第1章がイントロダクション、第2章がドキュメント構造、第3章がメタデータの解説となっている。この辺りだけでも目を通しておけば、いっそう理解が深まるだろう(OpenOffice.orgの開発ガイドよりも、ずっと簡単だ)。

ODFファイルをHTMLに変換する

 ここでは、ODFファイルの扱いがツールでも広まっている例として、HTMLへの変換を示してみよう。

 このような機能はOpenOffice.org自身が持っているが、Rubyによるスクリプトを紹介する。「Ruby-based ODT to XHTML Conversion」(関連リンク)は、ODFファイルをXHTMLに変換するスクリプトである。J. David Eisenberg氏によって開発され、LGPLで公開されているものだ。

 次のように、コマンドラインからスクリプトを実行すると、ODFファイルがHTMLファイルに変換できる。

$ ruby odt_to_xhtml.rb --in test.odt --out im_test.html --images pictures


ODFファイルをHTMLファイルに変換したところ

 このプログラムで注目すべきところは、次の5つのスクリプトで構成されていることだ。実行には、RubyおよびREXML(Rubyに含まれる)、RubyZip (ダウンロードファイルに含まれる)が必要となる。変換対象は、ODFファイル中のcontent.xmlとstyle.xmlである。このほかにも、ファイル中の画像を取り出す機能、指定したCSSファイルを適用する機能を持っている。

ファイル名 内容
odt_to_xhtml.rb メインプログラム
analyze_content.rb content.xmlを解析する
analyze_styles.rb style.xmlを解析する
analyze_graphics.rb 画像ファイルを取り出す
style_classes.rb 指定したCSSファイルを適用する

ODFを活用するためには

 ODFに関する情報は、次のようなWebサイトで得られる。

 

 特に、最初のOOo Basic&SDK Wikiでは、ODFとOpenOffice.orgをプログラムで扱うために必要な情報を集約している。ほとんどのプログラミング言語(Java、C++、Perl、Ruby、Python、PHP、.NET)での応用例をリンク掲載しているため参考になるだろう。英語のサイトでは、OpenDocument Fellowshipの情報が充実している。

ODFの可能性

 これまで、Microsoft Officeの文書処理は、内蔵のマクロBasicで行われることが多かった。そのために、開発/実行環境がMicrosoft Officeに限定され、ベンダーロックインの大きな要因になっていた。

 ODFが公開されたことで、内蔵のマクロBasicではなく、外部プログラムで文書処理を実現できるようになった。サーバ側で処理も可能になり、特定のオフィススイートを使っているか無関係になる(OpenOffice.orgにも依存しない)。また、開発者が使いやすいプログラミング言語を採用できるというメリットもある。サーバ上に格納したODFファイルをブラウザで編集するという“なんちゃってAjaxオフィス”なども実現できるだろう。

 すでに多くのマクロプログラムの資産が存在しているが、ベンダーロックインの呪縛から逃れれば、文書処理の新しい可能性が手に入るといえるだろう。

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ

マーケット解説

- PR -