Open Packaging Conventions
Open Packaging Conventions (OPC) はマイクロソフトによるファイル格納に関する技術で、XMLと非 XML ファイルをパッケージするための規格である。Open XML Paper Specification (OpenXPS) ドキュメントやOffice Open XML (OOXML) で採用されている。
MIMEタイプ | application/octet-stream |
---|---|
開発者 | マイクロソフト、Ecma、ISO/IEC |
初版 | 2006年12月7日 |
最新版 | ISO/IEC 29500-2:2012 (2012年8月22日 ) |
種別 | ファイルアーカイブ、データ圧縮 |
包含物 | 電子文書 |
包含先 | ZIP |
派生元 | XML, ZIP |
国際標準 | ECMA-376, ISO/IEC 29500 |
ウェブサイト | ECMA-376, ISO/IEC 29500-2:2012 |
OPC形式でファイルをパッケージ化する利点は、独立したファイルをそのままの形でドキュメントに添付でき、XMLをそのまま使用するより小さいファイルを生成できることである。
仕様
編集OPC 仕様はOffice Open XML標準(ISO/IEC 29500:2008 およびECMA-376)のPart 2に定義されている[1][2]。
ISO/IEC 29500-2:2008規格とECMA-376の第2版以降では PKWARE社.のZIP ファイルフォーマット仕様 バージョン 6.2.0 (2004)を引用規格としており、追補として規範例が付属する。注意: ECMA-376 の第1版では上記より新しいPKWareのZIPファイルフォーマット仕様 バージョン6.2.1 (2005)を参照している[1]。この版のZIPファイル形式は国際標準に定義されていないが、コミュニティと開発者間には広く普及している。
マイクロソフトが2006年に Internet Engineering Task Forceに提出したドラフトではOPC形式のパッケージへの参照として "pack" URI スキーム (pack://
) を使用するよう記述していたが、このドラフトは 2009年に失効している。この記述方法は Internet Standard の URI スキーム(STD 66, RFC 3986)に適合しておらず[3]、このスキームは現在historicalと分類されている[4]。
使い方
編集XML Paper Specification (XPS)[5]とOffice Open XML (OOXML) はともにZIPを利用したOpen Packaging Conventions (OPC) を使用している。XMLマークアップファイルのほかに、ZIPパッケージに含められるファイルには PNG、BMP、AVI、PDF、RTF のようなテキスト、バイナリファイルのほかに、すでにパッケージ化されたODFファイルを含むこともできる。OPC ではファイルの命名規則も定義しており、バイナリとXMLファイルがZIP書庫ファイル内の格納場所に依存しないよう間接参照方法も定義している。
OPCファイルは一般的なZIPユーティリティで開くことができる。また、OPCファイルでは、間接参照、チャンク化、および、相対間接参照がサポートされている。[6]
OPCを利用するファイルフォーマット
編集OPCは、多数の新しいファイルフォーマットの基盤技術となっている:[7]
ファイル形式 | 拡張子 | 内容 | 規格 |
---|---|---|---|
オートデスク AutoCAD Design Web Format (DWFX) ファイルフォーマット[8] | .dwfx | CADデザインデータ (2D/3Dコンピュータグラフィックス および 製図). | |
回路図[9] | .cddx | 回路図 containing layout, connections and embedded components | |
Family.Show file format[10] | .familyx | 系譜学 : 家族データ、ストーリー、写真など | |
Microsoft Application Virtualization file format | .appv | ポータブルアプリケーション | |
Microsoft Semblio ファイルフォーマット | .semblio | インタラクティブ学習素材, such as e-books containing images, audio, and video | |
Microsoft Visual Studio 2010 機能拡張 ファイルフォーマット | .vsix | 統合開発環境 向け機能拡張 | |
Microsoft Visio 2013 drawing file format | .vsdx | replaces .vsd (Visio binary file) and .vdx (Visio XML Drawing) formats used in earlier versions. [11] | |
Microsoft Windows 8, Windows 8.1 および Windows Phone 8.1 アプリケーションパッケージ [12] | .appx | マイクロソフトの Windows Store および Windows Phone Store で展示されるアプリのパッケージソフトウェア [13] | |
Microsoft Windows 8.1 および Windows Phone 8.1 アプリ バンドル[14] | .appxbundle | パッケージソフトウェア that bundles hardware platforms, languages, and resources for an application listed on Microsoft's Windows Store and Windows Phone Store. | |
Microsoft Windows Azure C# パッケージ | .cspkg | クラウドコンピューティング 向けデータ | |
Microsoft XML Paper Specification | .xps | fixed document for document exchange | |
NuGet パッケージ | .nupkg | パッケージ管理システム 向け パッケージソフトウェア | |
Office Open XML Document | .docx | ワードプロセッサ document | ECMA-376, ISO/IEC 29500:2008 |
Office Open XML プレゼンテーション | .pptx | プレゼンテーション | ECMA-376, ISO/IEC 29500:2008 |
Office Open XML ワークブック | .xlsx | 表計算ソフト ワークブック | ECMA-376, ISO/IEC 29500:2008 |
Open XML Paper Specification | .oxps | fixed document for document exchange | ECMA-388 |
Siemens PLM Software file format | .jtx | ||
MathWorks Simulink model file | .slx | Dynamic system specification for Model-based design | |
SMPTEメディアパッケージ | .smpk | Storage format for distribution and playback of multimedia video and audio files. | SMPTE ST 2053-2011 |
SpaceClaim 3D ソリッドモデリングファイル [15] | .scdoc | Embedded 3D CAD data files include Standard ACIS Binary (SAB) solid model files |
プログラミング
編集OPCは.NET Framework 3.0でネイティブにサポートされており、System.IO.Packaging ネームスペースで利用できる。他言語のためにオープンソースのライブラリが存在する。
Windows 7より、OPCはWindows APIとしてもサポートされるようになり、COMインタフェースを通じて利用できる。Packaging API という名称で参照できる。
別の方法として、ZIPライブラリを使ってOPCファイルを作成、開くことができる。この場合ZIP内に名称規約に従ったファイルが正しく格納されている必要がある。
パッケージ、パーツ、およびリレーションシップ
編集OPCの専門用語において、パッケージはZIPアーカイブに対応し、パーツはZIPアーカイブに格納されているファイルに対応する。パッケージ内の各パーツには、MIMEメディアタイプ形式で表現された特定の要素タイプに加えて、一意のURI準拠のパーツ名が存在する。パーツの要素タイプはパーツに格納されているデータの型を明示的に定義しており、拡張子に起因する重複や曖昧さといった扱いの難しさを削減する。
OPCパッケージにはパッケージ、パーツ、および、外部リソースの間の関連付けを定義するリレーションシップを含めることができる。
ディレクトリおよびパーツの階層構造に加えて、OPCパッケージでは、関連付け関係の有向グラフを通したコンテンツへのアクセスにリレーションシップを一般に使用する。
リレーションシップは4つの要素から構成される:
- 識別子 (ID)
- 省略可能なソース(パッケージまたはパッケージ内のパーツ)
- リレーションシップタイプ(リレーションシップのタイプを定義するURI形式表現)
- ターゲット(パッケージ内の他のパーツまたは外部リソースを指すURI)
OPCパッケージは(テキスト、画像、XML、バイナリなど)任意の形式のデータを含むパーツを格納できる。
ただし、拡張子「.rels」は「/_rels」サブフォルダ内にリレーションシップメタデータを格納するために予約されている。
サブフォルダ名「_rels」、そのようなディレクトリ内のファイル拡張子「.rels」、そして、任意のフォルダ内のファイル名「[Content_Types].xml」の3つのみがOPCパッケージに格納されるファイルで予約済みとなっている名前である。
- /[Content_Types].xmlファイル
- このファイルはパッケージ内のすべてのパーツのMIMEメディアタイプを定義する。「/[Content_Types].xml」ファイルは、特定のパーツに対する要素タイプのファイル拡張子の既定値とは異なるオーバーライドに加えて、ファイル拡張子に基づく既定の割り当てを定義する。例えば、これらの定義済みのMIMEタイプの1つは次のようになる:
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
- /_rels
- ルートレベルの「/_rels」フォルダにはパッケージ全体のリレーションシップが格納される。「/_rels」フォルダには通常「.rels」という名前のファイルが含まれる。「/_rels/.rels」は開始時パッケージレベルリレーションシップが格納されるファイルである。通常、OPC形式のファイルを開くと、アプリケーションは初めに「/_rels/.rels」ファイルにアクセスし、開始時パッケージレベルリレーションシップを読み込む。
- [パーツ名].rels
- 各パーツはそれ自体のリレーションシップを持つことができる。_relsフォルダは与えられたパッケージ内の任意のパーツに対するリレーションシップを見つける場所である。特定のパーツに対するリレーションシップを見つけるには、パーツの兄弟ノードである「_rels」フォルダ内を調べる。もしパーツがリレーションシップを持っている場合、「_rels」フォルダにはパーツ名に「.rels」を加えた名前のファイルが存在する。例えば、要素タイプパーツファイルにリレーションシップがあるならば、「[Content_Types].xml.rels」という名前のファイルが「/_rels」フォルダ内に存在する。
(ルートパッケージに関連付けられたリレーションシップを含む)すべてのリレーションシップはXMLファイルとして表される。
「.rels」ファイルをテキストエディタで開くと、そのパーツからターゲットされるすべてのリレーションシップを定義する実際のXMLマークアップを見ることができる。
典型的なリレーションシップファイルは次のようなXMLコードを含む:
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="R0" Type="http://schemas.microsoft.com/xps/2005/06/fixedrepresentation" Target="/FixedDocumentSequence.fdseq"/>
<Relationship Id="R1" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail" Target="/Documents/1/Metadata/Page1_Thumbnail.JPG"/>
</Relationships>
これはルートパッケージに対する2つの関係を定義しており、最初のものはルートパッケージとして考えることができ(ここで示したものは初期のMicrosoft XPSドキュメントであり、openxmlformatsコレクションでOpen XML Paper Specificationとして標準化される前である)、もう1つは代替形式への参照(ここではドキュメントの最初のページのサムネイル画像)に使用されている。
チャンク化
編集ファイル破損の影響を少なくできることから、ドキュメントを小さなチャンクに分割することは推奨されている。[16]
また、これはデータアクセスの向上にもつながる。
たとえば、1つのXMLパーツ内にすべてのスタイル情報を格納し、それぞれのワークシートやテーブルをそれ自体からなるパーツに格納する。
これによって利用側アプリケーションは高速なアクセスとオブジェクト作成の削減が可能になり、複数のプロセスが同じドキュメントで作業することが簡単になる。
相対間接参照
編集Open Packaging Conventionsでは、参照を持つ各ファイルは間接参照リストである_relsファイルを持つ。
これによって、いくつかの場面で一部の情報を関連するすべてのリソースとともに切り貼りすることが容易となるほか、ファイル間での名前衝突のおそれのない名前スコープの提供が可能になるなどの利点がある。
脚注
編集- ^ a b ISO/IEC 29500-2:2008 - Information technology -- Document description and processing languages -- Office Open XML File Formats -- Part 2: Open Packaging Conventions, ISO
- ^ Ecma International TC45 (December 2006).
- ^ “pack Status: historical”. IANA (2011年10月4日). 2013年5月12日閲覧。
- ^ “Uniform Resource Identifier (URI) Schemes”. Protocol Registries. IANA. 2013年5月12日閲覧。
- ^ XPS team (2006年9月1日). “Open Packaging Conventions & Open XML Markup Compatibility”. XPS team blog. 2007年4月4日閲覧。
- ^ Rick Jeliffe (2007-07-29).
- ^ Adventures in Packaging - Episode 1, May 18, 2009, by jack davis, Microsoft Packaging Team Blog: Open Packaging Conventions
- ^ http://dwgtodgn.com/blog/2014/06/22/autocad-dwf.html
- ^ http://www.circuit-diagram.org/help/cddx-file-format
- ^ Family.
- ^ https://msdn.microsoft.com/en-us/library/office/jj228622%28v=office.15%29.aspx
- ^ https://msdn.microsoft.com/en-us/library/windows/apps/hh464929(v=VS.85).aspx
- ^ http://www.theverge.com/2014/2/11/5400660/windows-phone-8-1-features-leaked
- ^ https://msdn.microsoft.com/en-us/library/windows/apps/bg182885.aspx
- ^ http://www.mxcad.com/spaceclaim/working-with-spaceclaim-documents/8876-spaceclaim-file-format-421
- ^ Using OPC to Store Your Own Data (page 3) - OPC Recommendations
関連項目
編集- OPC UA