SICPの翻訳についての補足と和田訳について

最近、計算機プログラムの構造と解釈(通称SICP)を訳し直すということをやった。

そのときに書いた記事にはだいぶ反響があった。

ぼくとしても、いろいろ言われることは予想できていたので、ぼくの考えを「腐った翻訳に対する態度について」という別記事にまとめた。

この記事でぼくの考えをわかってくれる人もいたが、いろいろ見て回ると、ぼくに対して強い反感を持つ人もいたようだ。

そういうわけで、この件全体について改めて考えてみたことを書くことにする。

前提

まず、以下のような意見について簡単に触れておく。

  • SICPをいま読む価値はない。
  • SICP(に限らず、英語の技術書)は原書を読むべきだ。
  • SICPには和田訳があるからそれでいい。
  • SICPのminghai氏訳はそれほど悪くない。
  • 誤訳は読者自身が気づくべきだ。
SICPをいま読む価値はない。


SICPが古い本だということは動かしようのない事実だ。今の時代にこんな本を読むのは時代遅れだ、という考えはもちろんあっていいと思う。でもぼくは、個別の言語にとらわれずに「プログラミング」という営為そのものについて考えることができる、いい入門書じゃないかと思った。

まあ、これは主観の問題だから、読む価値がないと思う人もいるだろう。でも、そう思わない人もそれなりにいるはずだ。例えば、大学院の勉強会で使われたりもしている。

SICP(に限らず、英語の本)は原書を読むべきだ。

確かに、今後プログラミングをやっていこうと思ったら、遅かれ早かれ英語を読むことは避けて通れない。上記の勉強会でも、できる限り英語版で読むことを勧めているらしい。

まあ、大学院ならそのぐらい求めてもいいと思う。でも、世の中には高校時代にSICPに触れて熟読したという人もいる。普通の高校生が、SICPを英語で読み通すことは可能だろうか? まあ、できる人はできるだろう。でも、それができない人のことを切り捨てるのは、できれば避けられたほうがいいんじゃないだろうか。プログラミングの魅力を先に知って、英語を後から学ぶというルートもあっていいと思う。

それに、「SICP(に限らず、英語の技術書)は原書を読むべきだ」というのは、「技術書の和訳」というジャンル全体を否定することになり、かなり強い主張だ。ここで扱うには大きすぎる。

SICPには和田訳があるからそれでいい。

ぼくも、和田先生の訳に大きな不満はない。しかし、全体として文体が硬く、慣れるまでが大変だとは言えると思う。それに、和田訳は書籍とHTMLしかない。

そこに、minghai氏版が、ですます調の柔らかい文体で、PDFという扱いやすい形式で、"SICP" で検索するとトップの位置に出てくる。この状況で、minghai氏訳に流れた人について、「和田訳を選べなかったのが悪い」と言えるだろうか? まあ、そういう考えの人もいるとは思う。しかし、それはぼくにとってはある種のマッチョ的な考えに思える。

SICPのminghai氏訳はそれほど悪くない。

これは、「それほど」という部分が曖昧なので、まあそう思う人もいるだろう。しかし、minghai氏訳には例えば以下のような訳がある。

私達がクォーテーションマークを入れ子にすることを第三者が何を言うだろうかを説明するために強制されていることに注意して下さい。

この戦略を用いる見込は新しいオブジェクトやアクションを供給するためにモデルを拡張することはプログラムに対する戦略上の変更を必要としないことです。


これらは、日本語として単独で見ても破綻している。

もちろん、誤訳箇所はこの二個にとどまらず、まだいくらでもある。ぼくはminghai氏訳を書き換える形で最初から最後まで翻訳したので、minghai氏訳の質については、まあわかっているほうだと思う。とはいえ、ぼくと同程度にminghai氏訳を読んだ人でも、許容範囲だと思う人がいないとは言い切れないけれど。少なくとも、minghai氏訳を全部読んだうえでのぼくの考えは、minghai氏訳は悪いというものだ。

誤訳は読者自身が気づくべきだ。

日本語が破綻しているような箇所にぶつかったとき、和訳がおかしいと気づいて原書に当たれないようではダメなのだろうか? これも、読む人によると思う。大学院生やプログラマなら、そういうリテラシーを持っていたほうがいい。でも、上にも書いたように、SICPは高校生が読むこともある。ぼくの考えは、すべての読者にそれを求めるのは酷だというものだ。

本題

というわけで、ぼくの前提は以下のようなものだ。

  • SICPはいまでも読む価値がある本で、
  • SICPの和訳には存在価値があり、
  • SICPの(和田訳でなく)minghai氏訳に流れる人を切り捨てず、
  • SICPのminghai氏訳には問題が多いと思い、
  • minghai氏訳の問題点に自分で気づけない人を切り捨てない。

これらの前提を共有しない人は、この文を読んでもしかたがない…とまでは言わないけれど、前提が違うということを意識してほしいと思う。


で、これらを前提とすると、「minghai氏訳の存在は問題だ」ということになる。

これは、minghai氏を傷つけたくて言っているわけではなく、上の前提を持つ限り、どうしてもそうなってしまう。


さて、ここでやっと本題に入る。

この件について多くの人が思っているのは、「そこまで言うことはないんじゃないの?」ということなんじゃないかと思う。

それについて、ぼくの考えを書く。


minghai氏の翻訳を問題視するなら、主な選択肢は次の二つだと思う。

  1. 翻訳の問題点の多さをminghai氏に指摘し、対応を求める。
  2. minghai氏版と同じアクセシビリティで、minghai氏版よりもよい翻訳を出して広める。

で、1 の選択肢はぼくはもう実行されていると思った。

minghai氏の非公式PDF版SICPの全訳を公開しましたという記事の、dara氏のコメント。

翻訳の前書きを読んだだけですが、意味不明でした。そこで原文を読んでみたら読みやすいのでびっくりしました。訳が酷すぎるとamazonとかで言われ続けた和田の翻訳がネットに上がっているのでそれと比べてみましたが、和田訳と比べても酷いと思います。基本的な勘違いというか、読めていないと思います。UTF 版というのは気に入りましたので、翻訳もどうにかして欲しい所です。


「基本的な勘違いというか、読めていない」

言うべきことは言われている。

minghai氏には、この時点で指摘を受け止め、そのレベルの翻訳がもたらす影響について考え、翻訳を非公開にするなり、翻訳につけるラベルを変える(「試訳」でも何でも、質の低さを示唆するラベルに)なりといった選択肢があったはずだ。

そうしなかったということは、「翻訳に問題点が多い」という前提を共有できていないということで、そうなると残る選択肢は 2 しかない。


で、2 の選択肢を分解すると次のようになる。

アクセシビリティは、minghai氏版の中身を書き換えて作れば自動的に同じになる。*1

よりよい翻訳は、まあ自分にminghai氏版の問題点が見えている以上、普通に翻訳すればそれよりもよくなるはずだった。

(一年かかったけれど)


最後に残るのが「広める」というところだ。

まず、翻訳の最初から最後まで、ぼくはminghai氏の翻訳のことをひどいと思っていたということがある。

ここで、ぼくは「思ったことをそのまま書けば広まりやすいんじゃないか」と考えて、思ったことをそのまま前文として書き、それをブログにも使うことにした。

その結果が「SICPを訳し直した」の記事だ。

(その後、前文に書くのはやりすぎだと言う意見を見て、前文はマイルドにした)


そのときのツイッターでのやりとり。

突き詰めると、「この行為は悪なのか」ということになると思う。


ぼくは、悪いことをしたとは思っていない。

というのは、対象はあくまでも「minghai氏の翻訳」であって、「minghai氏」ではないからだ。


そのほかに、minghai氏訳を完全に書き換えるという形で翻訳をしたことによって、実質的に「minghai氏訳は叩き台にもならない」と言ってしまったようなものだということもある。

いくら言葉を選んでも、そこはどうしようもない。

じゃあ、完全に書き換えるという形で翻訳をしないほうがよかったかというと、そうとも思えない。

どこが生かせるかを考えながら作業するより全部訳し直したほうが楽だったし、元の訳と共存させると文体も不統一になってしまう。


そういうわけで、ぼくはSICPを訳し直したの記事で、minghai氏訳に思いっきりマサカリを叩きつけた。


しかし、そうすることによってminghai氏に精神的ダメージが行くということは当然予想できる。

それを知ったうえでminghai氏版を力いっぱい叩くのはどうなのか?

そう言われると、「優先順位の違い」としか答えられない。

ぼくは、「minghai氏版と同じアクセシビリティで、minghai氏版よりもよい翻訳を出して広める」ということを完遂させることを優先した。

一年かけた翻訳を、中途半端な注目度で終わらせるわけにはいかない。

minghai氏の元記事は600ブクマもあるし、こちらには改訳というインパクト上のハンディもある。


結果として、SICPを訳し直したの記事は700ブクマ以上を集め、一応の目的は達成できた。

ブクマより大事なのは検索順位で、それはまったく追いついていないが、こればかりは検索エンジン次第なので、まあできることはやったというところだ。


これで、ぼくの動機についての説明は終わり。

しかし、ひとつ気にかかっていることがある。

「なぜminghai氏は、自分で翻訳のレベルに気づけなかったのか」というところだ。


この件に関連して、川合史朗さんがいくつか記事を書いてくれている。

その中のひとつ、「わからないということをわかる」に、次のような節がある。

誰でも最初は、「自分がわからない、ということがわからない」んです。


ぼくも、これに同意したいところだ。

しかし、残念ながら、翻訳に関するぼくの実感はそうではない。

例えば、ぼくが新しい外国語を始めるとき、自分がわからない、ということはわかっている。

そして、その外国語が上達するにつれ、自分がわかる、ということがわかる領域が増えていく。


別の記事には、次のような一節がある。

文の一部や単語の意味がわからなくても、全体の論旨と文の構造を見れば、 これとこれは並置されているとか、この要素はこの要素につながっている、とか、 この代名詞はこれを受けている、といったグラフが描けるはず。 そういう抽象化はむしろプログラマの得意分野だろう。


まさにこのグラフの話が、ぼくの実感によく合っている。

「わかるということがわかる」場合、脳内では構文解析ができているのだ。

逆に、構文解析ができない場合、自分には「わからないことがわかって」いる。


だから、めちゃくちゃな翻訳を出す人について、その人は「わからないことがわかって」いると、ぼくは思ってしまう。

しかし、実際はそうじゃないんだろう。

この脳内構文グラフは、誰にでも描けるものではないようだ。

ぼくはいつの間にかこの脳内構文グラフをイメージするようになっていたので、それができない人のことが理解しにくい。


逆に、脳内構文グラフが描けない人は、脳内構文グラフが描ける人のことが想像できないという、反対方向の難しさもあるんじゃないかと思う。

そもそも、「翻訳とは、原文の単語の意味から、つじつまが合うように日本語を組み立てるものだ」という感覚なのかもしれない。

しかし、それは違う。

脳内構文グラフがイメージできる人にとっては、翻訳とは「原文の構造をイメージして意味を理解し、それを日本語で表現し直すもの」だ。


SICP の英語は、そういうイメージができる人にとっては、特に引っかかるところのない素直なものだ。

(dara氏も「原文を読んでみたら読みやすいのでびっくりしました」と書いているので、そういう感覚があるのだろう)

minghai氏には、(残酷に響くかもしれないが)読む人によってはSICPの英語は難しくない、ということに考えが及ばなかったのかもしれない。


翻訳に対する向き不向きもあるだろう。

相手が向いていないことについて成果物を悪く言うのは残酷なことかもしれない。

ぼく自身、向いていないことはいくらでもある。

ぼくがもし、向いていないことをやって、誰かに成果物をケチョンケチョンにけなされたら? と想像したりもする。

でも、その人がそうすることに十分な理由があるなら、ぼくはそれを「しかたがない」と思うだろう。

結局、この件に対する意見の違いは、これを「しかたがない」と思うか思わないかというところに集約されるのかもしれない。


ところで、上で「和田訳と比べても酷い」というのを引用したが、和田訳についても少し書くことにする。

Amazonのレビューが悪いこともあり、「和田訳は本当にひどいのか?」というのは昔からよく話題になっているようだ。

(調べたところ、「SICP第2版の和田先生の訳は、ほんとにそんなにひどいのか」というそのままの記事が2005年にあった)

結論から言うと、和田訳はそこまで悪くない。致命的な構文解析のミスは、あったとしても多くない。


しかし、完璧かというとそうでもない。明らかな間違いもある。

まず、序文からひとつ。

For all its power, the computer is a harsh taskmaster.


和田訳では、こうなっている。

その力において計算機は苛酷な仕事師である.


しかし、これは間違いだ。"For all ...," というのは、「…にもかかわらず」という定型表現だ。ぼくの訳はこうだ。

コンピュータは強力ですが、厳しい親方でもあります。


次に、3.5.3節から。

The stream approach can be illuminating because it allows us to build systems with different module boundaries than systems organized around assignment to state variables.


和田訳は以下の通り。

ストリームによる問題解決は, 状態変数への代入の周囲に組織化されたシステムとは異る部品化の境界を持つシステムが構築出来るため, 照り輝く.


この「照り輝く」という言葉のインパクトの強さのため、照り輝くSICP日本語版botなんて酔狂なものを作った人までいる。

しかし、これも誤訳だ。

"illuminating" のCambridge辞書の検索結果は以下の通りだ。

giving you new information about a subject or making it easier to understand


ぼくは以下のように訳している。

ストリームというアプローチは、状態変数への代入を中心に組み立てるシステムとは違うモジュール境界を持つシステムを構築できるという意味で、学ぶところが多くあります。

*2


ここで和田訳について書くのは、ちょっといやらしいツイートを目にしたからということもある。



これは、SICP の翻訳を晒したぼくについて書いているようなものだとぼくは受け取った。


まず、この意見はそもそも正しくない。

翻訳の有用さを決める要素はほかにもあるからだ。


まず、(HTMLとして公開されてるとはいえ)和田先生に著作権がある和田訳と違い、CCライセンスに基づいて訳したものは再配布ができるというメリットがある。

GitHub で公開しているため、修正を受け付けることもできる。

さらに、PDFという形式も、タブレット等で見る場合にはHTMLより扱いやすいだろう。

minghai氏が翻訳を公開したのも、そのあたりが頭にあったはずだ。

翻訳の質にそれほど大きな問題がなければ、少しぐらい翻訳が悪くても、それを補う利点があっただろう。

(ぼくは大きな問題があると思ったので訳し直したわけだが)


さらに、ぼくが訳し直した動機には、上に書いた通りminghai氏版の存在があるため、minghai氏版より少しでもよければそれで状況が改善できたことになる。


とまあ、元発言の誤りを確認したうえで。

ぼくは、英語の読解力については、和田氏よりも上だと思っている。

傲慢だろうか?

ぼくはそうは思わない。

原文が読めない人は、翻訳の質を訳者の経歴や権威でしか判断できないのかもしれないが、ぼくはそうではない。

ぼくから見て、十分な英語力があればしないような(うっかりとも思えない)間違いをしている以上、和田先生の英語力(少なくとも読解力)は、ぼくよりも下だと想定するのが自然だ。

(例えば、学生などに下訳をさせて、そのチェックをしっかりやっていないということも考えられるが、それは別の意味で和田先生に対して失礼な想定だ)

ぼくは偽りの謙遜をするつもりはない。

(計算機科学についてはそんな大言壮語はできないが、まあ間違っていれば修正を受け付けることはできるし、その叩き台になる程度のレベルには達していると考えている)


そういうわけで、ぼくはSICP真鍋訳リポジトリ)にそれなりの自信を持っている。

minghai氏には精神的ダメージを与えてしまったかもしれないが、決してそれを目的にしたわけではない。


そういえば、「日本語版のテンプレートを提供していただいたことについて、minghai氏に深く感謝します。」という文言が屈辱的だという意見も見た。

しかし、これは本当のところを書いたものだ。

minghai氏が環境を整えてくれなければ、ぼくには翻訳はできなかったと思っているし、感謝しているのも本当だ。

どう書けばよかったんだろうか。

これはまだわかっていない。

*1:正確に言うと、Kindle版は作っていない。

*2:引用する際に、「状態変数」が誤って「局所状態」となっていることに気づいたため修正した。こういう翻訳ミスについては、ぼくの訳も改善の余地がまだまだあると思う。