にゃごにゃ小学校

本家(HP)作製のネタ、あるいは記事にするには寸足らずな話を日記兼用でアップします。

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

 ある程度英語が得意なら、オリジナルが英語で和訳もある技術書の場合、原文で読んだ方がわかりやすい例はよくあります。これはそれでも、一応、和訳が正しく行われている場合です。

 一方、和訳が不正確な場合には、この傾向がいっそう顕著です。ちょうど、Linux Device Driverという書籍を読んでいて、典型的な例にぶつかりました。
 和訳は第一版。手元にある英語の原文は第二版。第二版の和訳本があれば一番いいのですが、今手元になく、それでも大半は同じであり、日本語の場合斜め読みがきくというメリットがあるので、両方を並行して読んでいます。
 ところが、キャラクタ型ドライバ(Char Drivers)の構造体メンバの説明のところで、どうしても和訳では理解できないところにぶつかりました。日本語版のP.58ページ、struct file_operations *f_op;の説明の中ほど。英語版ではP.68です。

『例えば、open用のコードで、メジャー番号が1であるもの(/dev/null、/dev/zeroなど)は、オープンされるときのマイナー番号によってflip->f_opの中の操作を代行します。』

 う~ん、前後の脈絡も含めて、意味がわからない。
 そこで、オリジナルの英文です。

For example, the code for open associated with major number 1 (/dev/null, /dev/zero, and so on) substitutes the operations in filp->f_op depending on the minor number being opened.

 あ、これではわかるはずがない、とすぐに理解できました。和訳の方は、substitutesを、「代行する」と訳しているのです。この単語にはその意味もありますが、ここでは、「差し替える」が正しいのです。それに引っ張られて、前後の文も含めて、全般に妙な訳になっています。
 正しく訳してみると、次のようになります。

『例えば、メジャー番号が1であるデバイス(/dev/null、/dev/zeroなど)のドライバにおけるopen用のコードでは、flip->f_opの中で定義されている操作(関数)群そのものをマイナー番号に応じて差し替えます。』

 open, read, writeなどのシステムコール別の、ドライバの処理関数は、この構造体の中で、関数ポインタの代入という形で実装されています。open用の関数が呼ばれたとき、そこでマイナ番号をみて、それら構造体中のポインタに該当する処理の関数ポインタ群を代入することで、実行される処理そのものをデバイスに応じて差し替える、という意味だったのです。もとの和訳では、似ても似つかぬ日本語になっています。もちろん、理解不能です。
 こう言うと申し訳ないのですが、翻訳を担当した人も間違いなくこの部分は理解できていなかったでしょう。

 英語力が低ければ、この逆に、英語を読んでも理解できないが、ちゃんとした和訳を読めば理解できる、という場合ももちろんあります。英語力が低いのに原文で、というのは間違いのものになり兼ねないのも事実です。
 この書籍についていえば、概して和訳は優秀で、こうしたミスはまれ、しかし、万に一つのミスは、読者を混乱に陥れます。

 今回のsubstituteのような複数の解釈が可能な単語(英語では日本語に比べて、こうした単語が圧倒的に多い)の存在が、また、技術者でない通訳者の訳がわかりにくくなってしまうという大きな理由の一つにもなってしまっています。
 ともあれ、苦手なら苦手なりに、少しでも自分の英語力を向上させておくことは、思わぬ時に自分を助けてくれることになる場合も出てくるでしょう。

スポンサーサイト

コメント

コメントの投稿

Name
Title
E-mail
URL
Comment
Password
※入力しないと編集・削除ができません
 管理者にだけ表示を許可する

トラックバック

この記事へのトラックバックURL

http://questkpax.blog51.fc2.com/tb.php/180-48c60c85

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。