後方互換性と下位互換性
- .NET Framework のバージョン互換性について(http://msdn.microsoft.com/ja-jp/library/47a587hk.aspx)ですが、
原文(http://msdn.microsoft.com/en-us/library/47a587hk.aspx)によると、"backward compatibility" と "forward compatibility" で説明されています。
これが日本語訳では、"backward compatibility" が "下位互換性"、"forward compatibility" が "上位互換性" と訳されていますが、これはそれぞれ "後方互換性" "前方互換性" と訳すべきと考えます。
一般的には、"後方互換性" は "上位互換性" と、"前方互換性" は "下位互換性" とほぼ同じ意味で用いられると思いますが、上記の翻訳ではこの組み合わせも逆になっています。
次の URL の「混乱」のパターンにぴったりとはまってしまっています。
http://ja.wikipedia.org/wiki/%E4%B8%8A%E4%BD%8D%E4%BA%92%E6%8F%9B
すべての返信
- 例えば,
Label コントロール (Windows フォーム)
http://msdn.microsoft.com/ja-jp/library/4k7d0bhs(VS.80).aspx
も,backward compatibility を 下位互換性 と訳してしまっています。
素直に 後方互換性 と訳すべきですし,下位/上位 で表現するとしても
totojo さんが上で書かれているように,上位互換性 でしょうね。
ただ間違って理解している人は,それで納得してしまっているので
気づかないのでそれで過ぎて行っているんでしょう。
訳す人が文脈で判断するには技術的な知識が必要なので,機械的に,
backward compatibility -> 後方互換性
forward compatibility -> 前方互換性
のように素直に 訳しておくのがいいんじゃないかと思います。
今は,クリック一つで英文ページへ行けるので
すべてにおいて素直に訳すのが一番だと思います。
確認したわけではないですが,
たぶん,ヘルプのすべてて逆になってる可能性もあります。
稍丼 / yayadon 貴重なフィードバックをいただきまして、どうもありがとうございます。
社内で慎重に議論を重ねた結果、「下位互換性」を採用したのですが、結果的には混乱を招いてしまい、大変申し訳ございません。深くお詫び申し上げます。
上位バージョンの製品が下位バージョンの製品に対して互換性を持っている場合、「上位バージョンの製品が持つ互換性=上位互換性」という表現よりも、「下位バージョンの製品に対して持つ互換性=下位互換性」という表現の方が、より多くのお客様にとって直観的に分かりやすいのではないかと考えました。例えば、「新しいバージョンの .NET Framework には上位互換性があります」と記載した場合、「新しいバージョンの .NET Framework には、上位バージョンの .NET Framework との互換性があります」と解釈されるお客様も多くいらっしゃるのではないかと思いました。
「後方互換性」についても検討いたしましたが、「新しいバージョンの.NET Framework には後方互換性があります」と記載した場合、この「後方」が上位バージョンを意味するのか下位バージョンを意味するのか、直観的に分かりづらいと感じられるお客様も多くいらっしゃるのではないかと考えました。
Wikipedia では、「下位互換」も「後方互換」も Wikipedia 英語ページの「backward compatibility」にリンクされているようですし、記事の内容に関する議論も継続中のようです。
例えば、「新しいバージョンの .NET Framework には、下位バージョンとの互換性があります」のように訳していれば、もっと多くのお客様にとって分かりやすい説明になったのかもしれませんが、いかがでしょうか?それとも、やはり「後方互換性」の方が分かりやすかったでしょうか?今後の参考のためにご意見をお聞かせください。
あるいは、単なる用語の翻訳の問題ではなく、http://msdn.microsoft.com/ja-jp/library/47a587hk.aspx そのものの内容が不明瞭でしたら、その旨ご指摘いただけますと幸いです。
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。例えば、「新しいバージョンの .NET Framework には、下位バージョンとの互換性があります」のように訳していれば、もっと多くのお客様にとって分かりやすい説明になったのかもしれませんが、いかがでしょうか?それとも、やはり「後方互換性」の方が分かりやすかったでしょうか?今後の参考のためにご意見をお聞かせください。
上位バージョン下位バージョンというのは
例えば「Visual Studio 2008 Professional Edition」と
「Visual Studio 2008 Standard Edition」
の関係のように機能差をいうのではないでしょうか。でも、.NET のバージョンに「上位」「下位」という
表現は少なからず使われているかもしれませんね。あるいは、単なる用語の翻訳の問題ではなく、http://msdn.microsoft.com/ja-jp/library/47a587hk.aspx そのものの内容が不明瞭でしたら、その旨ご指摘いただけますと幸いです。
正直、第一印象で“わかりにくい”と思いました。
試しに、「上位」「後方」といった言葉はあまり気にせず
内容が伝わればいいという気持ちで文章を考えてみました。→下の【考えてみた文章】
--------------------------------------------------------------------------------------
【リンク先の文章】http://msdn.microsoft.com/ja-jp/library/47a587hk.aspx
.NET Framework での下位互換性および上位互換性に対するサポートの程度は、バージョン固有です。.NET Framework は、Version 1.1 を使用して作成されたアプリケーションに対してのみ、下位互換性と上位互換性を両方ともサポートしています。Version 2.0 を使用して作成されたアプリケーションでは、上位互換性はサポートされていません。.NET Framework では、下位互換性とは、以前のバージョンの .NET Framework を使用して作成したアプリケーションが新しいバージョンの .NET Framework でも実行できることを意味します。逆に、上位互換性とは、新しいバージョンの .NET Framework を使用して作成したアプリケーションが以前のバージョンの .NET Framework でも実行できることを意味します。.NET Framework では、高度な下位互換性のサポートを提供しています。たとえば、Version 1.0 を使用して作成されたほとんどのアプリケーションは Version 1.1 で動作し、Version 1.1 を使用するアプリケーションは Version 2.0 で動作します。.NET Framework では Version 1.1 の場合のみ、上位互換性もサポートされています。ただし、上位互換性については、アプリケーションが期待どおりに実行するようにアプリケーションを修正することが必要になる場合があります。Version 2.0 を使用して作成されたアプリケーションは、.NET Framework のそれ以前のバージョンでは動作しません。下位互換性と上位互換性のいずれの場合も、セキュリティ、正確性、または機能を向上させるための .NET Framework への変更によって、互換性の問題が発生する場合があります。
--------------------------------------------------------------------------------------
【考えてみた文章】
.NET Framework の互換性はバージョン固有です。
Version 1.0 を使用して作られたアプリケーションのほとんどは Version 1.1 で動作します。
Version 1.1 を使用して作られたアプリケーションは Version 2.0 で動作します。(後方互換)Version 1.1 を使用して作られたアプリケーションは Version 1.0 で動作します。(前方互換)
ただし、期待どおりの動作にならない場合があります。その場合アプリケーション修正が必要です。
Version 2.0 を使用して作成されたアプリケーションは、Version 1.0、Version 1.1 では動作しません。いずれの場合も、セキュリティ、正確性、または機能を向上させるための .NET Framework への変更によって、互換性の問題が発生する場合があります。
--------------------------------------------------------------------------------------- version の違いを表現するとき
earlier version <--> later version
のように 「時系列」 で表現するか
lower version <--> higher version
のように 「高低」 で表現するかどちらかでしょう。
で,
ここで,互換性を表す言葉
backward compatibility
という表現を考えて見ます。
backward というニュアンスは,視線/視点とは逆側の方向を意味しています。
で,
backward は,
(upward<-->downward という言葉がある関係上)
高低 に対して(少なくとも私の感覚では)使わないので,
上のバージョンの表現に対応するのは,
時系列 の視点を表すのに使われると判断していいでしょう。
で,
時系列の場合,未来方向に視線を向けて考えるのが一般だろうから
backward compatibility は earlier version との compatibility
を意味することになります。
>--------------------------------------------------------------
「後方互換性」 という用語が難解なので意訳するとしたら
執筆者の意図は,
「新しいバージョンの .NET Framework には、過去のバージョンとの互換性があります」
となります。
なので,例えば,
「新しいバージョンの .NET Framework には、下位バージョンとの互換性があります」
と意訳した場合は,執筆者の視点/意図を微妙に曲げていることになります。
技術的な文書で視点を変えてしまうのは,
それなりの理由が必要でしょう。
読者が理解しづらいというのは,
文脈にも左右されますが,ふつうは,理由にはならない気がします。
また,
他に考えないといけないのは,
日本語での単語では意味がかぶっていても,
英語での単語では意味がかぶらないものが多々あるということです。
議論が決着して,仮に,日本語として,
下位互換性 が 後方互換性 と同意で使えるようになったとしても,
下位 には,時系列 という視点がまったく感じられない ので,
backward compatibility が 下位互換性 と同意になるのか?は,
また別の問題のような気がします。
ということで,
機械翻訳がらみもあるので,用語としての単純変換の候補 としては,
「後方互換性」
じゃないといけないんじゃないかと思います。
ただ,
今まで書いてきたことと矛盾するんですが,
仮に意訳する必要がある場合は ,
文脈も重要 なので,場合によっては,
意訳する人の判断に任せることになって,
後方互換性 ではまずいとなった場合は,
そう判断したのだからしょうがないでしょうね。
稍丼 / yayadon- 編集済みyayadon 2009年8月12日 7:13追記&修正
- あと,
読者にわかりやすくするために用語を変える
という行為で,ちょっと気になったことを書きます。
あいまいなニュアンスの用語を分かりやすい用語に
変えることは,一見すると,いいように思えるけれど,
結局は,
英語でその用語に与えられた意味を理解しないことには
理解したことにはならない例を挙げてみます。
early binding --> 事前バインディング
late binding --> 実行時バインディング
のように訳を,数年前に,変えましたよね。
遅延 バインディング から 実行時 バインディング に変更したので,
一見すると,理解しやすくなった気がします。
「late binding とは,実行時にバインディングすることなんだな」
と誰もが理解するようになったでしょう。
でも,
late binding も,実際は,
IDispatchインタフェースに事前にバインディング します。
また,
late binding のことを知らない読者が,
日本語の 実行時バインディング と聞いて,思い描くニュアンスは,
動的バインディングの時に行われるそれが近いでしょう。
で,実際に,
動的バインディングは実行時にバインディングを行う ことになります。
ということは,4.0向けの英文のヘルプを見ると,やはり,
(例えば,CallSiteBinder..::.Bind Method )
には
runtime binding
という言葉を当然のように使うようになりますよね。
で,この日本語訳は,間違いなく,
実行時バインディング
となるでしょう。
そうなると,
late binding の訳を意訳して,
実行時バインディング としてしまったために
用語がかぶる
ことになります。
何を言いたいかというと,
判断に迷うような いわゆる 用語 に相当する単語/単語群を意味を補う意味で意訳 するのは,
止めておいたほうが無難だろうということです。
late binding というのは,
COMの世界での特別な用語なんだってことならば,
レイト バインディング
という訳でも構わないわけです。
あることを表す用語ってものはそういうものだということです。
読者から 「ニュアンスがあいまいな用語だ」 との指摘があった場合は,
日本語訳を変えるんではなく,
それを説明したページを用意して,
そこにリンクするようにするのが,結局,近道になるんじゃないかと思います。
稍丼 / yayadon - 皆様、貴重なご意見を本当にどうもありがとうございます。
大変参考になります。
皆様からいただいたご意見をもとに、社内で検討させていただきたいと思います。
本当にどうもありがとうございました。
この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。


