\r\n\r\n

ファイルフォーマットとその特性について知っておくべきすべてのこと

音楽、画像、スプレッドシート、スライドショーなど、言葉のファイルを使い分けることができるのです。しかし、ドキュメントを「文書」とするのは何なのだろうか。コンピュータの基本であるこの部分を理解してみよう...。

ドキュメンテーションは、コンピューター体験の基本的な部分です。しかし、「ファイル」とは何でしょうか?デスクトップ上のアイコンであり、スプレッドシート形式で予算を開くリスト項目であり、直近の**に付けられる名前です。最終的に「ファイル」とは、アプリケーションが理解できるパターンで並べられたビット(0と1)の集合体である。

開発者はこれらのフォーマットを秘密にし、ユーザーは他の選択肢があるにもかかわらず、特定のプログラムを使い続けることができるかもしれません。他の開発者は、実際に自分たちのフォーマットを採用することを推奨しているかもしれません。場合によっては、そのフォーマットを簡単に開いて解釈できるかもしれませんし、そのネイティブアプリケーション以外では使用できないかもしれません。今回は、上記のすべての事例を探っていきます。

テキストベースのファイル形式とバイナリファイル形式

ファイルの種類の違いでまず重要なのは、バイナリかテキストベースかという点ですが、それぞれを順番に見ていきましょう。

テキストベースの書式設定

テキストファイルは最も基本的なファイル形式です。プロセッサを持つほぼすべてのシステムで読み取ることができます。フォーマットはASCIIに準拠したビット列(1と0)であり(ここではUnicodeを無視する)、コンピュータは各バイト(8ビット)を以下の文字として解釈できることになる。

  • A-Z (大文字と小文字の両方)
  • 0-9
  • スペース文字
  • 記号の選択(句読点など)
  • 制御文字 (例: "DEL")

データはテキスト形式で保存されているため、Windowsのメモ帳のような簡易エディター(Mac、Linux、iOS、Androidでは同等のツール)でファイルを開けば、ファイルの内容を確認することができます。ほとんどすべてのコンピュータ・プラットフォームには基本的なテキストエディタが付属しているので、ある(テキスト)情報をファイルの1つに置いておけば、常にそれにアクセスすることができます。他のアプリケーションは、少なくともデータを正しく読み取るために、それ以上の情報を知る必要はありません。

しかし、表紙の文字フォントを表現したり、日付などを自動入力する必要がある場合は、より複雑になってきます。このような場合、MarkdownやXMLなどのテキストベースのフォーマットではASCII文字が役立ち、透明性などのプレーンテキストの利点が得られる一方で、これらの文書では通常、タグなどの要素に多くのスペースが必要となります。次のような文章ファイルをプレーンテキストで作成し、その後にXMLのOpen Document Formatを使った「FlatODT」(FODT)形式で作成することを考えてみましょう。下図は、プレーンテキスト版が53バイトであるのに対し、ODT版は25,000バイトであることを示しています。

バイナリ形式

その代わり、バイナリ形式は、アプリケーションが少しずつ構築するファイルです。これらのファイルをテキストエディタで開いてみることもできますが、解釈の仕方がわからない場合があります。以下は、テキストエディタでMicrosoft Excelのファイルを開こうとした場合の結果です。

アプリケーションは、バイナリファイルのデータを特定の方法で処理する必要があります。XLSファイルを開く場合、アプリケーションはファイルの最初の16バイトを "Beginning of File"(BOF)マーカとして扱う必要があります。このマーカ内の5番目の項目は、ファイルが最後にWindowsプラットフォームで編集されたかどうかを示すビット("fWin")である。他の4項目の後に位置し、それぞれが2バイトなので、"fWin "項目はExcelファイルの65番目のビットということになる。

これまで見てきたように、65ビット目を「fWin」フラグとして扱わないアプリケーションで開こうとすると、アプリケーションは**正確に**せずに開いてしまうのです。画面に文字化けを大量に表示したり(上図)、エラーメッセージで潔く処理したり(これも上図、Linuxのため)、クラッシュしたりすることがあります。いずれにせよ、データを正しく読み取る方法を知らないため、データの**正確な表示ができないのです。しかし、一度プログラムを組めば、アプリケーションはいくつものファイル形式を扱うことができます。

オープンフォーマットとプロプライエタリフォーマットの比較

次に考慮すべきは、ファイル形式がオープン(=他人が簡単に利用できる)かプロプライエタリか、という点です。プロプライエタリ」は「クローズド」と同じではないことに注意してください(少なくともすべてのケースでそうではありません)。上記の「テキスト対バイナリ」の議論が技術的なものであるのに対し、「オープン対プロプライエタリ」は、よりファイルフォーマットのライセンス条項に関連するものです。これについては、次の項をご覧ください。

オープンフォーマット

オープンフォーマットとは、ライセンスによってユーザーが独自のアプリケーションで使用することを許可されたフォーマットのことです。また、ある種の標準化団体が、投稿者コミュニティによる継続的な開発を監督し、フォーマットを真に「オープン」にする必要があります。また、オープンフォーマットはライセンス費用や制約がなく、誰でもどんな目的でも使用することができます。オープンフォーマットとして最もよく知られているのは、2005年にOASISが初めて公開したオープン・ドキュメント・フォーマット(ODF)だろう。これは、生産性向上市場におけるマイクロソフト社のロックインに代わるものを提供することを目的としていた。

オープンフォーマットなら、情報が特定のファイルに固定される心配はありません。以下、フラットなODT形式のファイルを考えてみましょう。周囲には余計な情報が多いものの、そこには実際のデータを端的に見ることができます。

また、オープンフォーマットの利点として、ドキュメントが充実していることが挙げられます。ドキュメントが読みやすいというのは、ひとつのポイントです。プログラマーは、それぞれの機能が何をするものなのか、試行錯誤する必要があるのです。しかし、ODFの場合、バージョン1.2の仕様により、プログラマーは効果的にサポートを実装するために必要なすべての知識を得ることができます。

独自フォーマット

最後に、プロプライエタリなフォーマットは、その開発者によって保護されています。これは、企業秘密が含まれているため、セキュリティのため(と思われる)、あるいは単に開発者が自分の作品を共有したくないからかもしれません。理由はともかく、これらのフォーマットは、エンドユーザーライセンス契約(eula)またはその他の条項によって、ユーザーがファイルフォーマットのリバースエンジニアリングやその他の「クラック」を試みることが禁止されているため、独占所有権を持っています。

かつては「禁止」されただけだったデジタルミレニアム著作権法(DCMA)が、すべてを変えてしまったのです。開発者は、自分たちの作品をリバースエンジニアリングした者を追及するための法的な後ろ盾を得たのです。独自のフォーマットを使用するアプリケーションに投資する前に、将来について考える必要があります。将来、この情報を別の場所に移行する必要があるのでしょうか?その場合、どの程度の痛みを伴うのでしょうか?年以内に会社を設立するのか、5年以内に設立するのか。もし、アプリケーションの機能が、独自形式のために開発者に縛られることも意味するのであれば、その価値があるかどうかを検討する必要があります。

ファイル形式例

上を見ると、いくつかの組み合わせが目に飛び込んできます。確かに、テキストベースのファイルフォーマットは開かれることに向いている。同様に、フォーマットのターゲットがプロプライエタリであれば、バイナリにすることでその状態を維持しやすくなります。しかし、必ずしもそうとは限りません。

GIMP用のXCF画像フォーマットはオープンなフォーマットで、バイナリでもある。このプロジェクトでは、GIMPファイルを構成するグラフィック、テキスト、レイヤーを生のビットとバイトとして保存するフォーマットについて詳しく説明しています(下図参照)。開発者は、ImageMagick Toolbox のような外部アプリケーションがそれらをインポートできるように、独自の実装コードを書くためにこれを使用できます。

これに対し、最新のmicrosoftvisioフォーマット(VSDX)はXMLベース(つまりテキストベース)のフォーマットです。これらのファイルの構成について、詳細なリファレンスを公開している。しかし、参考資料には、マイクロソフト社が「あなたの.VSDXサポート実装をカバーする可能性のある特許を所有している」と記載されています。また、米国議会図書館は、VSDX仕様を使用する場合、「すべての関連特許に対するロイヤルティフリーライセンスは保証されない」としています。それも、サイコロを振ってこのサポートを入れるということです。しかし、マイクロソフトは、Visioとの競合の度合いによって、後でお金を払うことを望むかもしれないし、望まないかもしれない。

これらが複雑だと思うなら、ノンフラットなODT形式はどうだろう。これは、文書のテキスト(content.xml、テキストベースのオープンフォーマット)とグラフィック(PNGなど、バイナリだがオープン)を含むZIP形式のファイル(その暗号化も使用しない限りバイナリでオープン)である。

ファイルフォーマットの重要性は?

これは難しい問題です。一方、iOSのような一部のOSは、ユーザーがファイルを扱うことから隔離しようとします。ファイルを作成したアプリケーションで開くのだから、その構造がどうであろうと、拡張子がどうであろうと、誰が気にする?しかし、多くの組織(特に**)が、公共データのオープンな形式を確保するために努力しています。

もしあなたがソフトウェアの理想主義者なら(それが悪いというわけではありませんが)、新しいアプリケーションを評価するときは、それがオープンな(できれば)テキストベースのフォーマットであることを確認してください。すぐに始めたいのであれば、独自フォーマットでも問題ないかもしれません。

いかがでしょうか?あなたの情報は、変換や検証が可能なオープンなテキストベースのフォーマットで存在することが必要ですか?それとも、プロプライエタリか非プロプライエタリかを問わず、開発者が使うフォーマットなら何でもいいのでしょうか?下のコメント欄で教えてください

写真提供:Edilus/Shutterstock

  • 2021-03-14 03:30 に公開
  • 閲覧 ( 19 )
  • 分類:IT

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ