データ変換とは、コンピュータデータをある形式から別の形式に変換することです。コンピュータ環境全体で、データはさまざまな方法でエンコードされています。たとえば、コンピュータハードウェアは特定の規格に基づいて構築されており、データにはパリティビットチェックなどが含まれている必要があります。同様に、オペレーティングシステムは、データとファイルの処理に関する特定の規格に基づいています。さらに、各コンピュータプログラムはデータを異なる方法で処理します。これらの変数のいずれかが変更されると、データは別のコンピュータ、オペレーティングシステム、またはプログラムで使用される前に、何らかの方法で変換する必要があります。これらの要素の異なるバージョンでさえ、通常は異なるデータ構造を伴います。たとえば、アプリケーションの相互運用性や新機能の使用を可能にするために、ビットをある形式から別の形式に変更することは、単なるデータ変換です。データ変換は、テキストファイルをある文字エンコードシステムから別の文字エンコードシステムに変換するような単純なものから、オフィスファイル形式の変換、画像形式や音声ファイル形式の変換のようなより複雑なものまであります。
コンピュータ環境内でデータを変換する方法は数多くあります。コンピュータプログラムの新しいバージョンにアップグレードする場合のように、シームレスに変換が行われることもあります。一方、変換には専用の変換プログラムを使用した処理が必要な場合や、中間段階を経由する複雑なプロセス、あるいはタブ区切りまたはカンマ区切りのテキストファイルとの間で変換を行う複雑な「エクスポート」および「インポート」手順が必要となる場合もあります。場合によっては、プログラムがデータ入力段階で複数のデータファイル形式を認識し、出力データを複数の異なる形式で保存できることもあります。このようなプログラムは、ファイル形式の変換に使用できます。ソース形式またはターゲット形式が認識されない場合、中間形式への変換を可能にする別のプログラムが利用できる場合があり、その中間形式を最初のプログラムで再フォーマットすることができます。考えられるシナリオは数多くあります。
データ変換を実行する前に、ユーザーまたはアプリケーションプログラマーは、コンピューティングと情報理論のいくつかの基本事項を念頭に置いておく必要があります。これには以下が含まれます。
例えば、トゥルーカラー画像をグレースケール画像に簡単に変換できますが、その逆の変換は骨の折れる作業です。UnixテキストファイルをMicrosoft (DOS/Windows) テキストファイルに変換するには文字を追加する必要がありますが、これはルールベースであるためエントロピーは増加しません。一方、グレースケール画像に色情報を追加するには新しい情報を追加する必要があるため、プログラムで確実に実行することはできません。そのため、色を追加しようとすると、コンピュータが以前の知識に基づいて推定する必要があります。24 ビットPNGを 48 ビット PNG に変換しても情報が追加されるわけではなく、既存のRGBピクセル値をゼロで埋めるだけなので、例えばFF C3 56の値を持つピクセルは FF00 C300 5600 になります。この変換によって、例えば FF80 C340 56A0のような値を持つピクセルに変更することは可能ですが、変換自体がそれを行うわけではなく、画像のさらなる操作によってのみ可能になります。JPEGやVorbisなどの非可逆圧縮形式の画像ファイルや音声ファイルを、PNGやFLACなどの可逆圧縮形式、またはBMPやWAVなどの非圧縮形式に変換しても、元の情報が失われた(非可逆圧縮によるアーティファクトが生じた)同じ画像が変換対象となるため、単に容量を無駄にするだけです。JPEG画像は、ユーザーが画像編集ソフトのJPEGアーティファクト除去機能をどれだけ試しても、元の画像の品質に復元することは決してできません。
非可逆圧縮プロセスによって失われた情報を自動的に復元するには、人工知能における重要な進歩が必要となるだろう。
こうしたコンピューティングと情報理論の現実ゆえに、データ変換は複雑でエラーが発生しやすいプロセスであり、専門家の助けが必要となることが多い。
データ変換は、ある形式から別の形式へ直接行うことができますが、複数の形式間で変換を行う多くのアプリケーションでは、中間表現を使用して、任意のソース形式をターゲット形式に変換します。[ 1 ]例えば、 2 つのエンコーディング間のルックアップ テーブルを使用して、 KOI8-RからWindows-1251へキリル文字テキストを変換することは可能ですが、最新のアプローチでは、まず KOI8-R ファイルをUnicodeに変換し、そこから Windows-1251 に変換します。このアプローチの方が管理しやすく、すべての可能な文字エンコーディングのペアに対してルックアップ テーブルを用意する必要はなく、アプリケーションは各文字セットに対して 1 つのルックアップ テーブルのみを用意し、それを使用して Unicode との間で変換を行うため、テーブルの数を数百から数十に減らすことができます。
ピボット変換は他の分野でも同様に使用されています。オフィスアプリケーションは、オフィスファイル形式間の変換を行う際に、内部のデフォルトファイル形式をピボットとして使用します。たとえば、ワードプロセッサは、 RTFファイルをOpenDocument形式に変換してからWordPerfect形式に変換することで、 RTFファイルをWordPerfectファイルに変換する場合があります。画像変換プログラムは、 PCXイメージを直接PNGに変換しません。代わりに、PCXイメージを読み込む際に、メモリ内で内部的に使用するために単純なビットマップ形式にデコードし、PNGへの変換を指示されたときに、そのメモリイメージをターゲット形式に変換します。FLACからAACに変換するオーディオコンバータは、まずソースファイルをメモリ内で生のPCMデータにデコードし、次にそのメモリイメージに対して非可逆的なAAC圧縮を実行してターゲットファイルを生成します。
データ変換の目的は、すべてのデータと、可能な限り多くの埋め込み情報を維持することです。これは、変換先のフォーマットが元のファイルと同じ機能とデータ構造をサポートしている場合にのみ可能です。ワープロ文書をプレーンテキストファイルに変換すると、プレーンテキスト形式では太字などのワープロ機能をサポートしていないため、書式設定情報が失われます。そのため、ユーザーにとって重要な機能をサポートしていないフォーマットへの変換は、相互運用性を確保するために必要な場合もあります。例えば、Microsoft Wordのあるバージョンから以前のバージョンにファイルを変換して、同じ最新バージョンのWordをコンピュータにインストールしていない他のユーザーが転送して使用できるようにする場合などです。
情報損失は、ターゲットフォーマットでの近似によって軽減できます。ASCII規格にはäのような文字がないため、äをASCIIに変換する方法はありませんが、 aeとして近似することで情報を保持できます。もちろん、これは最適な解決策ではなく、検索やコピーなどの操作に影響を与える可能性があります。また、言語がäとaeを区別している場合は、その近似によって情報が失われます。
データ変換は、概念的に異なる形式間で変換を行うため、不正確さが生じることもあります。ワードプロセッサやデスクトップパブリッシングアプリケーションに存在するWYSIWYGパラダイムと、 SGML、XML、およびHTMLやMathMLなど、それらから派生した多くのアプリケーションに見られる構造記述パラダイムは、その一例です。WYSIWYG HTMLエディタを使用すると、この2つのパラダイムが混同され、結果として、標準的ではないにしても最適とは言えないコードを含むHTMLファイルが生成されます。WYSIWYGパラダイムでは、二重改行は新しい段落を示します。これは、そのような構造の視覚的な手がかりですが、WYSIWYG HTMLエディタは通常、そのようなシーケンスを<BR><BR>に変換しますが、これは構造的に新しい段落ではありません。別の例として、PDFから編集可能なワードプロセッサ形式に変換するのは大変な作業です。なぜなら、PDF はテキスト情報を石に刻むように記録し、各文字の位置が固定され、改行もハードコードされているのに対し、ワードプロセッサ形式はテキストのリフローに対応しているからです。PDF は単語間のスペース文字を認識しません。2 つの文字間のスペースと 2 つの単語間のスペースは、その量だけが異なります。そのため、効果を高めるために十分な文字間隔を空けたタイトルは、ワードプロセッサファイルでは通常スペースが入ります。たとえば、1 emのスペースを空けた INTRODUCTION は、ワードプロセッサ上では INTRODUCTION となってしまいます。
データ変換を成功させるには、ソース形式とターゲット形式の両方の動作原理を熟知している必要があります。形式の仕様が不明な場合は、リバースエンジニアリングによって変換を行う必要があります。リバースエンジニアリングによって元の仕様にかなり近い変換を実現できますが、それでもエラーや機能の欠落が生じる可能性があります。
データ形式の変換は、電子通信システムの物理層でも行われることがあります。NRZやRZといった回線コード間の変換は、必要に応じて実行できます。