前方互換性または上位互換性とは、システムが自身の後のバージョン向けに設計された入力を受け入れることを可能にする設計特性です。この概念は、システム全体、電気インターフェース、通信信号、データ通信プロトコル、ファイル形式、プログラミング言語などに適用できます。標準規格が前方互換性をサポートしていると言えるのは、以前のバージョンに準拠した製品が、理解できない新しい部分を無視して、標準規格の後のバージョン向けに設計された入力を「適切に」処理できる場合です。
W3Cの技術アーキテクチャグループ(TAG)は、この概念をより正式に定義しています。「言語の定義の変更は、元の言語の利用者が進化したバージョンの言語用に書かれたテキストを正しく処理できる場合に、前方互換性がある」[ 1 ] 。
前方互換性技術の目的は、古いデバイスが新しいデバイス用にデータが生成されたことを認識できるようにすることです。[ 2 ]
旧システムとの前方互換性は通常、新システムとの後方互換性、つまり旧システムからのデータを処理できることを意味します。一方、新システムは通常、旧システムの形式でデータを処理および生成できるため、旧システムとの完全な互換性を備えています。
前方互換性と拡張性は同じではありません。前方互換性のある設計は、将来のバージョンのデータの一部を処理できます。拡張可能な設計は、アップグレードを容易にします。これらの設計思想の例として、Webブラウザが挙げられます。現在のブラウザは、新しいバージョンのHTMLをスムーズに受け入れることができれば前方互換性があると言えますが、新しいHTMLを処理するためにブラウザのコードをどれだけ簡単にアップグレードできるかが、そのブラウザの拡張性を決定します。
W3C技術アーキテクチャグループは、前方互換性のある言語設計を可能にする置換ルール群を文書化しました。各ルールは、コンシューマーが認識できない構造に遭遇した際にどのように動作すべきかを規定しています。
これらのルールは、広く普及している言語やプロトコルの前方互換性の基盤となっている。例えば、 HTTP/1.1では、認識されないヘッダーフィールドは受信者によって無視され、透過プロキシによって転送されなければならないと規定されている。これは「未知のものを保持する」ルールの直接的な適用である。[ 4 ]
FMステレオ伝送、つまりカラーテレビの導入により、モノラルFMラジオ受信機や白黒テレビでも新しい送信機からの信号を受信できるようになったため、前方互換性が確保されました。[ 2 ]また、新しい受信機は古い送信機から生成されたモノラル信号や白黒信号を受信できるため、後方互換性も確保されました。
HTMLは、ブラウザのデフォルト設定、またはページに含まれるスクリプトやスタイルによって外観や動作が上書きされない限り、すべてのタグを同じように (不活性でスタイルが適用されないインライン要素として) 扱うように設計されています。 [ 14 ]これにより、ほとんどの新機能は古いブラウザで適切に劣化します。意図どおりに機能しなかったケースの 1 つは、スクリプト ブロックとスタイル ブロックです。これらのブロックの内容は、ページの一部ではなく、ブラウザによって解釈されることを意図しています。このようなケースは、内容をコメント ブロックで囲むことで対処されました。[ 15 ]より一般的には、HTML の前方互換性は「無視しなければならない」設計に従います。初期の HTML 仕様では、認識されない開始タグと終了タグはトークン化中に何もマッピングされないことが要求されており、これにより、既存のブラウザを壊すことなく、後からなどの要素を導入することが可能になりました。[ 3 ]<img>
コンピュータやウェブブラウザの強制的なアップグレードはないため、多くのウェブ開発者は、グレースフルデグラデーションまたはプログレッシブエンハンスメントのアプローチを採用し、JavaScriptが無効になっている場合や接続速度が遅い場合でも使用できる、古いコンピュータやウェブブラウザと互換性のある新しいウェブサイトを作成し、利用可能な場合はより新しいウェブブラウザの高速ハードウェアや優れたJavaScriptサポートを活用しようとしています。[ 16 ]
最も一般的な 3 つの 12 cm光メディアフォーマット ( CD、DVD、Blu-ray ) はそれぞれ、書き込み可能なフォーマットが利用可能になる何年も前に、読み取り専用フォーマットで最初にリリースされました。各フォーマット内には前方互換性と後方互換性の両方があり、ほとんどの古い読み取り専用ドライブとプレーヤーは同じフォーマットの書き込み可能なメディアを読み取ることができます (ただし書き込みはできません)。一方、読み書き可能なドライブは古い読み取り専用メディアを読み取ることができます (ただし書き込みはできません)。フォーマット間には前方互換性はありません。たとえば、CD プレーヤーは DVD (新しいフォーマット) を読み取ることができません。オーディオ トラックでさえも読み取れません。市場性を高めるために後方互換性がある場合もあります (たとえば、DVD プレーヤーがオーディオ CD を再生するなど) が、それは規格に固有のものではありません。[ 17 ]
前方互換性のある設計は、RFC 761 (1980 年 1 月)でJon Postelが明確にした堅牢性の原則「自分の行うことには保守的であること、他者から受け入れることには寛容であること」と密接に関連しています。[ 18 ]この原則の「受け入れることには寛容であること」の部分は、前方互換性のあるシステムが認識できない入力に対して取る姿勢を表しています。「未知のものを無視しなければならない」というルールは、その具体的な実装として読むことができます。
しかしながら、前方互換性を正式に定義することは困難であることが判明している。W3C技術アーキテクチャグループのメンバーは、2007年に前方互換性と後方互換性の定義を未解決の問題として扱ったが、その理由の一つは、この概念がまだ存在しない言語の将来のバージョンとの関係を記述しているからである。[ 19 ]
一部の製品は、上位互換性を考慮して設計されておらず、これはNUC(上位互換性なし)と呼ばれています。場合によっては、ベンダーロックインやソフトウェアのリグレッションの一形態として、設計者によって意図的にこのような設計がなされていることもあります。
例えば、あるオフィス用パーテーションメーカーがパーテーションのデザイン変更を検討しているとします。あるデザイナーは、設置面積を4フィート(1.22メートル)四方から1.2メートル四方に変更することを提案します。すると、営業部長がすぐに「NUC」に連絡し、問題点が明らかになります。設置面積が変更され、既存顧客がそのメーカーから追加購入を検討している場合、4フィート四方のパーテーション用に設計されたオフィスに、異なるサイズのユニットを設置しなければならなくなるのです。
計画的陳腐化は上位互換性の一種だが、企業は下位互換性のポリシーを採用するのではなく、下位非互換性の商業ポリシーを採用することで、新しいアプリには新しいデバイスが必要になるようにしている。
{{cite web}}: CS1 maint: 数値名: 著者リスト (リンク){{cite web}}: CS1 maint: 数値名: 著者リスト (リンク)