機械翻訳は自動織機ではなくチェーンソーであるという話と、その帰結

先日、機械翻訳と意味という記事を書きましたが、それ以降も新Google翻訳の精度向上はあちこちで話題になっています*1


新Google翻訳を使って3700ワードの技術文書を1時間で翻訳した

Google翻訳の強化でもっとも得するのは翻訳家という妙


共通して述べられているのは、「新Google翻訳の精度が下訳に使えるレベルになった」「新Google翻訳は、翻訳家にとって大きな助けになる」ということです。


さて、この記事を読む人であれば、ラッダイト運動というものについて聞いたことがある人も多いかと思います。

この運動は、機械によって雇用を奪われた手工業者が起こした機械破壊運動なのですが、このときに対象となった機械は、自動織機のような、人手を置き換えるタイプの機械でした。


それに対して、機械翻訳は、人間の能力を拡張(エンハンス)するタイプのものです。

人間の翻訳家を置き換えるものではなく、翻訳家によって使われることで、翻訳家の生産性を何倍にも上げることができることになりそうです。

これは、機械で言うと、自動織機よりもむしろチェーンソーのようなものではないでしょうか。

チェーンソーは作業の効率を上げてくれるものなので、例えば昔の木こりにチェーンソーを渡したとしたら、すごく感謝されそうですよね。


lifehacking.jp のほうの記事には、こんなタイトルの段落があります。

短期的には、英語のスキルを持っている人にとって朗報


まあ確かに、機械翻訳がチェーンソーのようなものであることを考えると、短期的には朗報であることは間違いないでしょうね。

しかし、私はこの「朗報」という言葉に引っかかってしまいました。

(それが、この記事を書くことにした直接のきっかけです)

確かに短期的には朗報かもしれないけれど、それで喜んでいていいのでしょうか。

中期的長期的にはどうなるのでしょうか。


ここで、ちょっと仮想の世界の話を考えてみます。

この世界では、100人の木こりが働いていて、1日10本の木を切って、合計で毎日1000本分の木材を生産しています。

木こりは、木を1本切るごとに1000円をもらい、1日1万円の収入で生活しています。

ある日、この世界の山の洞窟に無料のチェーンソーの山があるということに、ある木こりが気づきます。

その木こりがチェーンソーを持ち帰って木を切ってみたところ、5倍の速さで木が切れて、1/5の時間でその日の仕事が終わってしまいました。

ゆっくり過ごす時間ができた木こりは大喜びです。


——と、ここまでが、上記の記事で述べられているような、短期的な状況ではないでしょうか。


さて、そこから先を少し考えてみます。

無料のチェーンソーの存在はそのうちみんなに知られてしまい、みんながチェーンソーを持つようになりました。

そうすると、効率が5倍になっているので、何人かの木こりは精いっぱいそれを活用しようとして、「私は50本の木を切る仕事を受けられますよ」と言います。

そういう木こりがある程度出てきたところで、残りの木こりは、受けられる仕事がなくなってしまったことに気がつきます。

そうなると生活ができなくなるので、ある木こりが「私なら、木を1本切るのに、1000円ではなく、500円でやりますよ」と言います。


そうこうするうちに、最終的には報酬は1本200円で落ち着き、20人の木こりが、1日50本の木を切って、1日に1万円を稼ぐようになりました。

残りの80人の木こりは?

失業して、ほかの仕事に就くことになりました。


これが、中期的に起こることです。

これは単純化したモデルで、実際は各人間の生産性の違いも大きいと思いますが、翻訳の単価が安くなる生き残れる人が少なくなるという流れはわかるのではないでしょうか。


これだけでは救いがないようですが、さらに長期的に考えると、次のようなことが起こると思われます。

これまでは、みんな小さな家に住んでいたのですが、木が1本1000円から200円になったことによって、同じ予算でもっと大きな家が建てられるようになりました。

みんなが大きな家に住むようになったので、必要な木材の量は2倍にもなり、1日に2000本の木が注文されるようになりました。

今では、40人の木こりが、チェーンソーを使ってそれぞれ1日に50本の木を切っています。


翻訳で言うと、単価が安くなったことによって、それまで翻訳されなかったようなものが翻訳されるようになるということになります。

それでも、その新しく生み出された需要は単価の低下によるものであり、元々の翻訳家数を維持できるほどにはなりません。


さて、繰り返しますが、以上に書いたことは非常に単純化したモデルです。

翻訳家の技量の違いや、機械翻訳にかけられないような機密性のある文書の翻訳など、このモデルから外れるところもあります。*2

また実際には、短期・中期・長期という時間がはっきり分かれているわけではないので、単価の低下と市場の拡大は同時進行で起こる、つまり翻訳家の需要は「一旦底をついてから回復する」というより「じわじわと減り続けて安定する」と考えるほうが自然かもしれません。


いずれにせよ、中・長期的には、新Google翻訳は翻訳家にとっては朗報とはいえない(生き残れる翻訳家の数が限られる)というのが私の考えです。

この中で、どうやって生存戦略を考えていくか。

翻訳家にとっては難しい状況になりそうです。


最後に、宣伝を兼ねて、ロボットの脅威 ―人の仕事がなくなる日からちょっと不吉な引用をします。


だが、ロボットや機械学習アルゴリズムをはじめとする自動化の波が次第に、職に必要なスキルのピラミッドを底辺から蝕んでいる。そして人工知能のアプリケーションが徐々に高スキルの職業まで侵そうとしているため、ピラミッドの頂にある安全な領域すら時間とともに減っていくだろう。

教育と訓練へとさらに投資を行うという従来の解決策は、縮小しつつある上位の領域へ全員を詰め込もうとするものだ。そんなことが可能だと考えるのは、農業の機械化の影響で元の職から追われた農場労働者が、トラクターを運転する職を見つけられると考えるのに似ていると思う。数が計算に入っていないのだ。

*1:ですます調とである調をその時々で適当に使い分けています。

*2:ただ、機密性のある文書の翻訳でも、効率が上がるとなると、「抜け駆け」的にこっそり機械翻訳が使われてしまうということも起こるのではないでしょうか。

機械翻訳と意味

ここ最近、Google翻訳がリニューアルされ、性能が向上したという話が流れてきたので、さっそく試してみた。

ぼくが真っ先に試したのは、「母は、父が誕生日を忘れたので、怒っている。」だ。

なぜこの文が気にかかっていたかは後述する。


結果は次の通り。



"My mother is angry because my father forgot her birthday."


すばらしい。

では、「母は、父がを忘れたので、怒っている。」はどうだろうか。



"My mother is angry because my father forgot his bag."


完璧だ!

「誕生日を忘れた」の場合は「母の誕生日」と解釈し、「鞄を忘れた」の場合は「父の鞄」と解釈する。

これこそ、利用者が翻訳に求めるものじゃないだろうか。


しかし、ここまでだった。

次にぼくは、「父」と「母」を入れ替え、「父は、母が誕生日を忘れたので、怒っている。」を翻訳してみた。



"My father is angry because my mother forgot her birthday."


「誕生日」を「母の誕生日」と解釈している。

最初の文でうまくいっていたのは偶然だった。


さて、なぜぼくは「母は、父が誕生日を忘れたので、怒っている。」という文が気にかかっていたのか?

ぼくがこれを見たのはある語学教材の中でだったが、「誕生日」が「誰の」誕生日なのかを確定するために必要な知識・推論を考えると、なかなか複雑だということに気づいたからだ。

文字にすると、以下のようになる。

背景知識として、次のようなことがある。


1. 誕生日というのは、人間にとっての良いイベントである。

2. 誕生日を忘れるというのは、その誕生日がどの一日であるかを忘れるということである。

3. あるイベントがどの一日であるかを忘れると、そのイベントについてに行うべきことを正しい日に行えなくなる。

4. 父と母というのは、この文脈では話者の父親と母親を指す。

5. ある人間の父親と母親は夫婦の関係である。

6. 夫婦は親しい間柄である。

7. 親しい間柄の二人は、互いに良いイベントを祝うことをお互いに期待する。

8. 人は、自分が相手に期待することを相手がしないと怒る。


そして、これらから次のようなことが導かれる。


A. 4, 5, 6 より、「父」と「母」は親しい関係である。

B. A と 1 と 7 より、「母」は「父」が誕生日を祝うことを期待する。


ここで、「父が誕生日を忘れた」を「父が(母の)誕生日を忘れた」という仮説 X を導入する。

すると、次のことが導かれる。


C. 仮説 X と 2 より、父は母の誕生日がどの一日か忘れたということになる。

D. C と 3 より、父は母の誕生日について行うべきことを正しい日に行えない(行えなかった)ことになる。

E. B と D と 8 より、その仮説のもとでは「母」は怒ることになる。


というわけで、「父が(母の)誕生日を忘れた」という仮説が強力に支持される。

また、このほかに「人間は自分の誕生日を忘れることはあまりない」という背景知識もあり、それによって「父が(父の)誕生日を忘れた」という仮説はもっともらしくないことになる。

これらより、「父が誕生日を忘れた」は「父が(母の)誕生日を忘れた」という意味であることがほぼ確実であるといえる。


明示的にこういうことを考えているわけではないだろう。

しかし、「誕生日」を「鞄」に変えると自然な推論が「(父の)鞄」になることからわかるように、これに似た何らかの推論を行っていることは確かだ。

(「鞄」とすると「(父の)鞄」が自然な推論になることの背景には、「人が鞄を持ち歩く場合、それはたいてい自分の鞄だ」といったものがあるだろう)


さて、なぜぼくはこんなことを書いているのか。

それは、機械翻訳と、例えば自動運転やコンピュータ将棋などとの違いを確認するためだ。

結論から書くと、後二者が人間を必要としなくなることは比較的近い将来に想定可能だが、機械翻訳はそうではないということだ。


人工知能について語るとき、よく次のようなことが言われる。

「飛行機は空を飛べるが、鳥を模倣しているわけではない。機械で何かを実現するにあたって、生物がそれを行っているようにやる必要はない」


これは妥当だろうか?

ぼくはそう思う。

目的さえ達成できるのであれば、その手段はどうでもいい。

これに賛成する人は多いだろう。

では、機械翻訳・自動運転・コンピュータ将棋のそれぞれの目的は何だろうか?


自動運転であれば、目的は出発地から目的地まで安全に移動することだ。

人間のように考える必要はない。

地図の情報や周囲の情報を、適切なハンドル・アクセル・ブレーキの動きに変換すればそれでいい。

(さらに言えば、車を運転する必要すらなく、どこでもドアが開発できればそれが一番望ましい)


コンピュータ将棋であれば、目的は相手に勝つように駒を移動することだ。

人間のように考えなくても、盤面の情報を適切な駒の動きに変換すればそれでいい。


これら二つの目的の中に、人間が入っていないということがポイントだ。


では、機械翻訳の目的は何か。

それは、原語の文によって人間が伝えたかったことを、人間に伝わるように、目的言語に翻訳することだ。


ここで問題になるのが、目的の中に人間が入ってしまっているということだ。

そうである以上、正しい翻訳をするためには、人間の思考を何らかの形でエミュレートせざるを得ない。

コンピュータ流の思考を通すわけにはいかない。

例えば、「父」と「母」を入れ替えた「父は、母が誕生日を忘れたので、怒っている。」という文を機械が翻訳するにあたって、機械は「誕生日を忘れて怒るのは普通女だから、この誕生日は『母の誕生日』ってことでいいでしょ」と言うことはできない。

正解の判定基準は人間にあるからだ。


これから言えるのは、人間の補助を必要としない機械翻訳ができるようになるのは、機械が人間のように考えることができるようになってからだということだ。

もちろん、ハードウェアは同じである必要はない。

ファミコンミニ*1を作るのにファミコンのCPUを載せる必要がないのと同じことだ。

しかし、ファミコンミニが「ファミコンと同じように考える」必要があるのと同じように、人間の補助を必要としない機械翻訳ソフトは、「人間と同じように考える」必要がある。

つまり、上に書いたような人間的な思考ができるようになる必要があるということだ。

だが、それができるようになるということは、もっといろいろなこと(いま人間にしかできないようなことのほとんど)ができるようになるということだろう。

それが実現できたら、インパクトはとても機械翻訳だけにはとどまらない。

それを考えるのはまだまだ先でいいはずだ。


Google翻訳がよくなったことは確かだ。

ものすごくよくなっている。

それについては各所で書かれている/今後も書かれると思う。

しかし、ぼくが言いたいのは、人間と同じように考えられる機械ができるまでは、人間の補助を必要としない機械翻訳はできないということだ。


これは機械翻訳を貶めるために言っているわけではない。

機械翻訳が役に立つ領域はこれまでよりはるかに広がるだろうし、それはいいことだ。

しかし、機械が人間のように思考できない間は、人間であればしないような間違いをし続けるだろうし、それを発見・修正するという仕事はあり続けるということだ。

その点で、(現時点でそうかはともかく)人間の介入の必要性がゼロになりうる自動運転やコンピュータ将棋とは違う。


この文を書いた動機のひとつとして、「Google翻訳がよくなったことで人工知能ペテン師(固有名詞)がはしゃぎそうだなぁ」と思ったからというのがある。

ここまで書いたように、言語の領域から人間が完全に必要なくなることは当面ないだろう。


しかし、その規模がどうなるかはわからない。

また、現在機械翻訳を補っているのは人間の翻訳家だが、コンピュータに足りないものは本質的に「人間的な思考」であるということを考えると、いつまでもそうであるかはわからない。


いつか、自分にわからない意味的な問題をクラウドソーシングで人間に聞きに行くようなソフトが出てきたりするかもしれない。

将来が楽しみだ。





*1:いま流行りのやつのほう。正式名称は別。

Wikipediaから人名(姓・名別、読みつき)を取り出す

小ネタです。

日本語Wikipediaから人名(姓・名別、読みつき)を取り出すスクリプトを書きました。


https://github.com/hiroshi-manabe/extract_jawp_names


日本語の処理をする際に、Wikipediaのデータを使うことは多いと思います。

いろいろと便利なWikipediaのデータですが、人名に関しては「姓と名が分かれていない」という問題があります。

まあ、本文の冒頭にはたいていスペース区切りで書かれたものがあるので、それを使えば切ることができます。

また、Wikipediaの記事名には読みがついていないという問題もあります。

これも、たいてい本文の冒頭でカッコ内に書いてあります。


ですので、大きな問題はないのですが、Wikipediaのデータは基本的に人が編集しているので、形式がけっこう自由です。

例えば、本文冒頭の記事名はたいてい太字で強調されているのですが、読みはそうである場合もそうでない場合もあります。

そのほかにもいろいろと細々とした問題があり、対応するのはけっこう面倒です。


そういったわけで、人名抽出スクリプトを書いたので公開します。

大した手間ではないのですが、同じことがあちこちで繰り返されると不毛なので。


読みの抽出には、記事中の「DEFAULTSORT」というデータを使っています。

これは、例えば「織田 信長(おだ のぶなが)」であれば「おた のふなか」、「勝 海舟(かつ かいしゅう)」であれば「かつ かいしゆう」のように、濁音や半濁音を清音に直し、小書き文字を大書き文字に直す等の処理をしたソート用のキーで、たいていの記事についています。

このキーを正規表現にして本文にマッチさせることで、かなり確実に読みを取得することができます。


出力結果は次のようになります(2016/02/03版)。

士郎 正宗	しろう まさむね
高橋 留美子	たかはし るみこ
村上 もとか	むらかみ もとか
青木 光恵	あおき みつえ
赤塚 不二夫	あかつか ふじお
一条 ゆかり	いちじょう ゆかり
うすた 京介	うすた きょうすけ
浦沢 直樹	うらさわ なおき
車田 正美	くるまだ まさみ
高橋 しん	たかはし しん
...


読みを取り出す処理自体は人名に限ったものではないので、Wikipedia記事一般に使えるはずですが、今回の個人的な目的は人名抽出だったため、一般の記事についてはテストしていません。

一般の記事に対してやってみたい人は自己責任でお願いします(気が向いたら fork してください)。

翻訳の退場勧告

SICPを訳し直したと、一年前の記事の善意のひどい訳についてに関して、はてな匿名ダイアリーのほうで言及していただきました。


翻訳は/誰がやっても/間違える (前編)

翻訳は/誰がやっても/間違える (後編)


誤訳の指摘ありがとうございます。

差し支えなければ追って反映したいと思いますが(反映について明示的に許可をいただければと思います)、まずはお礼を兼ねてお返事から。


また、タイトル575ありがとうございます。

77でお返しするのが礼儀かと思ったのですが、どうも思い浮かばず… 申し訳ありません。

ところで、匿名の方でお呼びしにくいので、増田*1という意味でMさんとお呼びしますね。


前もって申し上げますが、元記事にはごちゃごちゃした人間的な感情の絡む雑音的な部分も多いので、お返事できそうなところを自分でピックアップして回答しています。

「いや、ここも答えられるだろ」というところがあればご提示ください。


まず、訳文を見ていただけばわかるように、私は翻訳を専門的にやったことはありません。

最近になってやっと、有名な「英文翻訳術」を読んだところです。



そういう私が、「学生時代の専攻が英文学だったことから、翻訳の仕事や、翻訳の校正の仕事をたびたび引き受けてき」たという方から誤訳の指摘をいただけるというのはありがたいことです。(本来ならお金が発生するところではないでしょうか?)


ところで、降って湧いたように翻訳経験者から誤訳の指摘をいただけたわけですが、どうもおかしな人だなという感覚はあります。

というのは、このご指摘の前と後で、私の自分の英語力に対する認識は変わっていないからです。


私は英語の基本的な読み解きはできますが、翻訳の専門的な訓練を受けたことはなく、実力も当然その範囲内です。

Mさんは、私の誤訳を指摘することで「お前の翻訳は間違いだらけだ」と言いたいようですが、そりゃ経験者から見たら穴だらけでしょう(ご指摘の箇所は、特に前編はほぼその通りです。後編については、文脈を見て取捨選択することになりそうです)。

それともMさんは、私が(翻訳者としてのトレーニングも受けずに)自分のことを商業レベルの翻訳者だと思い込んでいると思ったのでしょうか?

それは並みの思い上がりじゃありませんよ。(もちろん、そんな思い上がりはしていません)


で、私の自分の英語力に対する認識は変わっていないので、以前から持っている「手のつけようのない翻訳をそうであると判断する程度のレベルはある」という認識も変わっていないわけです。

それとも、Mさんの意見では、この認識が間違っているということでしょうか?

私が手のつけようのない翻訳だと判断したものが、英語の上級者の視点から見ると全然そんなことはない、これこれこういう理由で優れている、私の指摘は間違っている、ということであれば、それは私にとっては revealing ですし、ぜひお聞きしたいところです。

「致命的な誤訳」「最低クラスの翻訳」「手のつけようのない何か」「身の程を知ってほしい」「そびえ立つクソの山」「腐った翻訳」「自作ポエム」「異世界語版」「有害」「腐臭を放つ吐瀉物の山」といった発言は、人間(真鍋さんの用語で、アスペルガーではないヒトのこと)の言語の運用においては、おそらく指摘ではなく侮辱、退場勧告として機能するでしょう。


Mさんにとっては、侮辱退場勧告は同じようなものなんでしょうか?

私にとっては、それらは全然別のものです。


退場勧告というのは、何かをするうえでの実力がないんじゃないかという意見を告げるものです。

また、いま実力がないということは、この先も実力がないままであるということを意味しません。

そういう意味で、私の発言が退場勧告として受け取られたとしても、それは私の意図に反するものではありません。

「英語の構文解析ができない人間は(それができないうちは)英文和訳をしてはいけない」というのが、一貫した私の意見です。

(私が訳を批判してきた方々はそれができていないという私の認識は変わっていません。これについても、上級者から見るとそうではないということであれば、そう主張していただければと思います)


それに対して、侮辱というのは基本的に必要のないものです。

私はこれまで、翻訳に対してクソの山だとかは言っても、○○氏はクソだという侮辱はしたことはありません。

まあ、「翻訳をクソだと言うと、それは自動的に訳者をクソだと言うことになる」とお考えなのであれば、それは考え方の違いということになります。

私はそう考えていません。

(私に対する誤訳指摘も侮辱だとは受け取っていません。そう認識させたいという痛いほどの努力は伝わってきますが)

ここの認識の違いがある人とは、永遠に平行線なんだろうなと思います。

(ところで、「腐臭を放つ吐瀉物の山」等のいくつかは、全世界に公開しているとはいえ、個人的なつぶやきです。「つぶやく」ことと「相手に向けて言う」こととの間にはまだ違いがあると私は認識しているのですが、Mさんにとってはそうではないのでしょうか?)

日本語訳を読んで、おかしいと思った箇所だけ原文を参照することにします。一般読者は翻訳の質を判断できないという――わたしの感覚からすると一般読者をずいぶん侮った――主張に対するひとつの反証になるかもしれません。


やだなぁ、もう。(呆れてキャラが変わった)

「学生時代の専攻が英文学だったことから、翻訳の仕事や、翻訳の校正の仕事をたびたび引き受けてき」た人が一般読者なわけがないじゃないですかぁ。

一般読者というのは、minghai氏版SICPのブクマ山口さんの翻訳記事のブクマのような人たちのことを言うんですよ。

私の指摘以前に、翻訳の質に言及している人、いますか?


一般読者は翻訳の質を判断できないからこそ、minghai氏版がずっと問題にもならずに検索上位に出ることになっていたわけじゃないですか。

私が「王様は裸だ」と言わなかったら、誰が代わりに言ってくれたんですか?

しかし、そのようなミスを犯す方が、他人のミスに対して次のような発言をするのであれば、そこには何らかの認知の歪みがあるということになってしまいます。


まあ、人間はミスを犯すものですし、ちょっとしたミスで実力を判断するのは正しいとは限りませんね。

ただ、Mさんが見つけた私のミスと、私が見つけた山口さんのミスは、(当然ながら)別のものです。

私は、その手がかりから「この翻訳は手がつけようがない」と推測して、結果としてそれは(私としては)当たっていたと思っています。

Mさんは、私のミスを見て、「この翻訳は手がつけようがない」と推測されたのでしょうか。

また、それは当たっていたでしょうか。


最後に。

まず、真鍋さんがなぜそれほど憤っているのか。翻訳には言語に関する才能と一定の経験が必要で、十分な品質に達していない翻訳は有料・無料を問わず世に溢れています。それは自明であるにも関わらず、なぜことさら嘆いてみせるのだろう? 一般の人はそのことに気づいていないとでもいうのだろうか?


「嘆いてみせ」ているのではなく、「嘆いている」のです。

十分な品質に達していない翻訳があふれている状況を、自明なものだとあきらめていないからです。


「翻訳には言語に関する才能と一定の経験が必要」とはいえ、そういう才能と経験を持った(Mさんのような)人はいくらでもいるわけです。

それなのに、なぜ英語の構文解析すらできない(私よりもさらにできない)人間が翻訳をしているのか。

なぜ「統計学を拓いた異才たち」のような本が世に出てしまうのか?


英語の「翻訳術」の良し悪しは、単純に評価できるようなものではありません。

しかし、英語の構文解析を間違っているような、翻訳以前の間違いであれば、英語の読める人なら誰が見ても——もちろん、Mさんが見ても——わかるはずです。

それなのに、なぜそういう翻訳以前の間違いだらけの「翻訳」が、有料無料を問わず生き延びているのでしょうか?


私から見ると、そういう状況を支える要因のひとつとして、「人間」——Mさんのような——の遠慮があるように思えます。

明らかな間違いがあっても、相手への配慮のために、「なかったことに」してしまう。

その結果が、いまの悲惨な状況なのではないでしょうか?


私は、たとえ自分自身の英語の実力が完璧ではなくても(もちろん完璧ではありませんし、その認識は変わっていません)、致命的な誤訳について「致命的な誤訳である」と声を上げることを続けていくつもりです。


*1:アノニ“マスダ”イアリーの通称。

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

腐った翻訳に対する態度について

今回、SICPの翻訳改訂版を公開するにあたって、minghai氏の非公式日本語版(以下、minghai氏版)については「惨憺たる翻訳」「そびえ立つクソの山」などと書きました。これらの言葉は、もちろん本心からのものです。しかし、それを表に出すかどうかについては、冷静に考えた結果として意図的に選択したことも確かです。ここでは、その背景について書こうと思います。

約一年前、私が善意のひどい訳についてという記事を書いたとき、しぶかわよしき様から以下のコメントをいただきました。

趣味のお金にならない翻訳だとだいたい最初の下訳で出しちゃいますね。だからといってそれが悪いことだとは思いません。英語を読まない人は言うまでもなく、英語を読める人でも「下訳」があれば原文を読む時にの速度は上がりますからね。クオリティに対して個人でできることといえば、指摘などで黙々と時間コストを代わりに負担するか、takeda25基金を作って、良い翻訳に対してパトロンになってお金を出すかどちらか以外はないと思います。このエントリーを読んでも世の中の品質があがることはなく、「翻訳するの怖い」と萎縮する人の方が多いと思います。ただでさえ、「怖いから」という話をよく聞きます。今は趣味翻訳する人もそれほど多くないけど、人数が増えれば、それだけ業界全体として翻訳にかける時間が増えて質も量も改善されると思います。僕は未熟でもなんでも、学生とかが翻訳をして公開するのが増えればいいと思ってます。

これに関して、四つのポイントから書いていきたいと思います。

  • ひどい翻訳はないほうがマシなのか
  • 腐った翻訳とはどのようなレベルか
  • 腐った翻訳を腐っていると言うべきか
  • 腐った翻訳を腐っていると言うことによる副作用とその対策

ひどい翻訳はないほうがマシなのか

情報は、基本的にはないよりもあったほうがいいものです。このことは直感的に共有されていると思います。

しかし、これは常に真であるとは限りません。例えば、次のような例を考えてみてください。日本語を片言レベルでしかわからない人が、何かの手違いで日本の首相にインタビューをすることになったとします。その人は、首相の言っていることがほとんど理解できず、たまたま知っていた単語を適当につなげて作文をしてしまった結果、荒唐無稽な記事が世に出てしまったとします。この場合、この記事が「ないほうがマシな情報」であることについてはあまり議論の余地がないでしょう。

ここで、情報が「ないほうがマシ」なものになってしまっているのは、その情報についての「メタ情報」(その情報がどのようなものであるかという情報)が間違っていることによります。どんな荒唐無稽なデタラメ記事であっても、「これは嘘ニュースです」と書かれて適切な場所で公開されていれば、ないほうがマシということにはなりません。上での例の記事が有害なのは、「首相の言葉」というラベルのもとで、首相の言葉でないものが公開されてしまっていることによるものです。

私がminghai氏版の翻訳を有害だと言っているのは、「SICP非公式日本語版」というラベルつきで、それに値しない情報が流されているからです。ついているラベルが「SICPに触発されて書いた自作ポエム」「SICP異世界語版」といったものであればよかったと思っています。

腐った翻訳とはどのようなレベルか

ここでは、「腐った翻訳」という言葉を「ないほうがマシというレベルの翻訳」という意味で使っていきます。

それでは、どのような翻訳が腐った翻訳なのでしょうか。一万文のテキストで、一万文すべてが誤訳であれば、それは確実に腐った翻訳でしょう。一方、一万文すべてが正確な翻訳であれば、確実に腐っていないと言えそうです。しかし、現実の翻訳は常にその間のどこかにあるものです。また、誤訳だらけの訳文から原文の意図を推測することが得意な人もいれば、それが苦手な人もいるでしょう。はっきりと「ここからが腐った翻訳だ」というクリアな線はありません。

私は、例えば2ページに1個程度の誤訳があれば、それは確実に腐った翻訳だと考えています。誤訳箇所に付箋をつけていくと見開きごとに貼っていくことになり、本が付箋でいっぱいになります。

minghai氏版には、大雑把にそのぐらいの誤訳があります。すべて指摘することはできませんが、ここではひとつだけ、翻訳の質を端的に示す例を挙げます。

In a related vein, an important current area in programming-language design is the exploration of so-called very high-level languages, in which one actually programs in terms of declarative statements.

関連領域において、プログラミング言語の設計における現在の重要な領域は超高水準言語と呼ばれる物の調査です。それは実際にプログラムを宣言的文の用語にて作成します。

ここで、"in terms of"を「の用語にて」と訳しています。英語が少しでもわかる人には、この誤訳がどのようなレベルのものかわかるでしょう。ほかにどのような誤訳があるか興味のある方は、真鍋版とminghai氏版と原文を見比べてみてください。

腐った翻訳を腐っていると言うべきか

私は、腐った翻訳についてはそのことをはっきり指摘するべきだと思っています。上で書いたように、腐った翻訳には現実的な害があるからです。指摘をしないで、どうやってその害を防ぐことができるのでしょうか。

英語が得意ではない人にとっては、翻訳が「腐っている」ということがどういうことなのかピンと来ないかもしれませんので、ここでプログラマ向けの例を出してみたいと思います。例えば、別言語からC言語に移植されたライブラリのコードを見ているところを想像してください。その途中、ある関数を見ていると、なんとその関数ではローカル変数へのポインタを返しているということに気づいてしまいます。C言語のまともなプログラマであれば、その瞬間にそのプログラムがどうしようもなく腐っていることに気がついてしまうでしょう。翻訳も同じようなものです。見た瞬間に、翻訳者が英語の文法も何もわかっていないことが気がついてしまうような誤訳というものがあるのです。

上での例のような腐ったコードがあれば、プログラマとしてはどうするべきでしょうか。まずは腐ったコードを「腐っている」と言い、そのコードをコンパイルしたプログラムを使わないように周知するべきではないでしょうか。それとも、初心者に「プログラミング怖い」という印象を持たれるかもしれないから言わないようにするべきでしょうか。私には、後者の意見は馬鹿げているように思えます。

腐った翻訳を腐っていると言うことによる副作用とその対策

以上のような理由から、私は腐っている翻訳には腐っていると言うべきだと考えていますが、それにはもちろん副作用が伴います。副作用には以下のようなものがあるでしょう。

  • 「翻訳するの怖い」と萎縮する人が出てくる
  • 無料の翻訳の量が減る
  • 言われた人が傷つく

それぞれについて考えてみます。

「翻訳するの怖い」と萎縮する人が出てくる

「腐った翻訳を出すと腐っていると言われるのが怖いから翻訳に手を出すのやめよう」という人が出てくるかもしれないということですが、それは「腐ったコードを公開すると腐っていると言われるのが怖いからプログラミングに手を出すのやめよう」というのと何が違うんでしょうか。

プログラミングと同じく、翻訳にもレベルがあります。プログラミング始めたばかりの人がLinuxカーネルにコントリビュートしようと思うでしょうか。それは無謀だと誰でもわかりますよね。最初は誰でも、自分なりの環境で単純な練習問題を解いたりするものです。翻訳もそれと同じです。自分の読めないレベルの文にいきなりぶつかるのではなく、自分に十分理解できるレベルの本を読むなどして実力を上げるのが結局は近道です。外国語なので、子供向けの本などを読むことも恥ずかしいことではありません。

「英語は苦手だけど翻訳に貢献したい」という気持ちは尊いかもしれませんが、まずは「英語が苦手」というのを克服してから貢献を考えてもいいと思います。それが間に合わなければ、自分で翻訳する代わりに、翻訳にかけるはずだった労力をアルバイトや残業などにつぎ込んで、それで得たお金でちゃんとした翻訳ができる人や会社に翻訳を頼むということもできるのではないでしょうか。

無料の翻訳の量が減る

「誰でも自由に趣味で翻訳するようになれば、無料の技術翻訳の量が増え、それに伴って質も上がるはず」という楽観的な意見があります。これはオープンソースソフトウェアのモデルが技術翻訳にもそのまま使えるんじゃないかという考え方から来ているのではないかと思います。しかし、ソフトウェア開発と技術翻訳はそんなに似ているのでしょうか。

実際のところ、技術翻訳は以下のような点でソフトウェア開発とは違います。

  • 創造性が少ない
  • 個人個人の速度の差が小さい
  • 再利用が利かない

まず、「創造性が少ない」という点について。プログラミングは、同じ目的を達成するのにも、非常に多くの選択肢があり、そこに創造性と楽しさが生まれます。翻訳は違います。翻訳は、あくまで原文の意図を忠実に伝えるということが第一です。文芸翻訳であれば創造性を発揮する余地もあるかもしれませんが、技術翻訳でそのような余地は限られています。

次に、「個人個人の速度の差が小さい」という点について。プログラミングであれば、一部の天才が数日間の突貫作業ですばらしいソフトウェアの基礎を作り上げるという話は珍しくありません。翻訳ではそのようなことはありません。どれだけ優れた翻訳者でも、平均的な翻訳者の何十倍もの速度で訳せるわけではありません。

最後に「再利用が利かない」という点について。ソフトウェアは、部品によって組み立てることができ、また作っているソフトウェア自身を部品として再利用しやすいようにすることができます。オープンソースソフトウェアは、まさにそのことによって驚くべき発展を成し遂げています。しかし、翻訳はそうではありません。一冊の本を翻訳しても、そこから再利用できるものはあまりありません。SICPの翻訳の一節がほかの本の一節として出てくるなんていうことはないのです(あるとしたら引用程度です)。翻訳メモリといった再利用の方法はありますが、同じ本の新しいバージョンでもない限り、あまり役に立つものではありません。

以上を総合すると、翻訳(特に技術翻訳)は「データを扱う」という共通点はあるものの、本質的にはソフトウェア開発よりも作業に近いと言えるでしょう。それは本来、対価が払われる仕事としてなされるべきものです。こういう面から考えても、無料の翻訳というものは時間やエネルギーに余裕がある人がボランティアとしてするぐらいのもので(現状ではそうなっていますよね)、安定的な供給が期待できるものではないのではないかと思います。

言われた人が傷つく

腐った翻訳をそうと自覚せずに公開した人に対して「翻訳が腐っている」と指摘すると、もちろん言われた人は傷つくことになるでしょう。いいことをしたと思っていた本人にとっては寝耳に水でしょうし、言うほうとしても気持ちのいいものではありません。

指摘をする場合には、「人身攻撃をしない」ということを心がける必要があります。私自身、minghai氏版の翻訳は腐っていると思いますし、それを公開したことは害悪だと思っていますが、それが善意から出た行動であることは疑っていません。不幸な事故のようなものだと思っています。

そもそも、なぜこういう不幸なことが起こってしまうのか。それを考えるほうが建設的ではないでしょうか。

私は、「翻訳とは誰にでもできる」という考えがその原因ではないかと思います。「翻訳は誰にでもできる」というのは、「注射は誰にでもできる」と言うようなものです。注射針を腕に突き立てることは誰にでもできますが、注射針を「正しく」刺すことは誰にでもできるわけではありません。翻訳もそれと同じです。自分がどの程度「正しく」翻訳できるかということを把握していないとひどいことになります。

まとめ

以上のように、私は「ないほうがマシなレベルの翻訳というものはある」「そのような翻訳に対してはそうと指摘するべきである」という考え方です。そして、minghai氏版の翻訳はそのようなレベルのものだと思っています。

本来は、minghai氏版を最初に見たときに指摘したかったところでした。当該記事のdara氏の次のコメントに強く共感します。

英語を「日本語」に変えるのは goo 翻訳でもやれます。ただ意味が通じない(何が言いたいかわからない)だけです。そして、それでは翻訳の意味がありません。

これを読み、私は言うべきことはすでに言われていると判断しました。minghai氏の回答は以下のようなものでした。

私はやれるだけのことをやりました。
後は皆さんの具体的な指摘を反映するか、または皆さんが私の成果の派生を好きに作って頂ければそれで満足です。

そのようなわけで、minghai氏に提供していただいたテンプレートをもとに、自分で翻訳を行いました。もちろん、テンプレートを提供していただいたことについては大変感謝しています。

私のこの翻訳により、SICPに興味を持つ人が増えることを願っているのはもちろんですが、「翻訳」ということについて真面目に考えてくれる人が増えてくれることも同時に願っています。

非公式PDF版SICP・新訳

計算機プログラムの構造と解釈、通称SICPを一から翻訳し直しました。


ファイル: SICP非公式日本語版 翻訳改訂版

リポジトリ: https://github.com/hiroshi-manabe/sicp-pdf


また、今回の翻訳をするにあたって考えたことを別記事にまとめました。


腐った翻訳に対する態度について


SICPはMITの有名なプログラミングの教科書です。詳しくはminghai氏の記事をご参照ください。

この翻訳改訂版は、minghai氏の非公式日本語版(以降、minghai氏版)のあまりにも惨憺たる翻訳を見かねて、原著から翻訳をし直したものです。この翻訳を進めるにあたっては、minghai氏版の訳を置き換えていくというやり方で進めていきました。しかし、差分を取ればわかっていただけると思いますが、minghai氏版のテキストは痕跡をとどめていないはずです。この方式を採ったのは、“そびえ立つクソの山”を少しずつ置き換えていくことによってやる気を出すという、主にモチベーション上の理由によるものです。もしminghai氏版の痕跡が(誰が訳しても同じようになるものを除いて)あるとすれば、それは作業漏れが残っているということですので、ご報告いただければ幸いです。

用語については、無用の混乱を避けるため、和田英一氏によるオンライン版「計算機プログラムの構造と解釈」(以下、和田氏版)にできるだけ追従するようにしました。もちろん、訳文はすべて自分で一から作り上げたものです。用語の追従によって著作権やライセンス上の問題が発生することはないと信じていますが、問題があるようであればお教えいただければと思います。

以下、minghai氏版に対して否定的なことを書くことになるため、人身攻撃をするつもりはない、また人身攻撃と受け取られるような部分があれば真剣に対応するということをあらかじめ表明しておきます。

minghai氏版を見たときの衝撃は、これまでにも何回も受けたことのある種類のものでした。ちょっと原文と比較するだけで、数限りなく致命的な誤訳が出てくる。またひとつ、とんでもない翻訳が世に出てしまった。なぜこういう悲劇はなくならないのか……。

私はそれまでにも SICP という本については聞いたことがあり、一度はしっかり読んでみたいと思っていたところでした。そこに出てきたminghai氏版がこのありさまだったため、書籍のほかにオンラインでも公開されている和田氏版に目を向けてみました。見ると、硬い印象の訳文で、すっと頭に入ってきにくいところはあるものの、真面目に時間をかけて読めば解読できるものでした。何より、(序文を除けば)致命的な誤訳は多くありません。それだけでも、minghai氏版よりはるかに優れていることは明らかでした。喩えるなら、和田氏版がこちこちに固くなった乾いたケーキだとすると、minghai氏版は柔らかい腐ったケーキというところでしょうか。

私としては、もしminghai氏版がなければ、和田氏版の訳書を購入して勉強して、それで済ませていたはずのところです。訳文は硬いとはいえ読めないことはなく、英語で読むよりは速く進められそうでした。ほかのこなれていない訳書同様、不満を持ちながら読み、それで終わりだったはずです。

しかし、minghai氏版が出てきたことで、状況は大きく変わりました。minghai氏版は無料のPDFなので、有料の書籍とオンラインHTMLという和田氏版よりアクセスが容易です。さらに、和田氏版は(Amazonのレビューにもあるように)翻訳の評判がよくありませんが、minghai氏版はですます調で一見親しみやすく、中身が腐っていることがすぐにはわかりません。

これでは、SICPの評判を聞いて勉強しようとした人が、minghai氏版に流れてしまうのではないか。私のその危惧は、Twitterのタイムラインで現実化していました。タイムラインでもminghai氏版に手を伸ばそうとしている人がいたため、和田氏版をお勧めしておきました。もちろん、その人は氷山の一角で、実際には少なからぬ人たちがminghai氏版に流れていることは確実でしょう。

文体が硬くて意味の取りにくい翻訳の場合、もたらす被害は限られています。訳文が直訳調で読みにくければ、読者はなんとか読み解く努力をするか、読むことをあきらめて訳者を責めるか(これはAmazonレビューで起こっていることです)のどちらかの行動を取るでしょう。後者の人に対しては(有料で購入した場合)金銭的な損害を与えているかもしれませんが、それがすべてです。どうしても読みにくければ、原文で読むことになるでしょう。いずれにせよ、翻訳が存在しなかった場合以上の害悪はありません。

しかし、表面上読みやすそうな腐った翻訳は、はるかに深刻な害悪をもたらす可能性があります。実際には誤訳のために訳文が意味不明になっているだけなのに、理解できないのは書いてある内容が難しすぎるためだ、それを理解するだけの頭脳が自分にないためだ、と読者は思い込んでしまうかもしれません。それだけはどうしても避けたいところです。

それらのことを考え合わせた結果、SICP を原文から翻訳しながら勉強していくことにしました。始めたとき、毎日一時間というペースで進めていくと決め、数日間やってみた進捗状況から翻訳が終わるまでの期間を見積もったところ、どうやら一年ぐらいかかりそうだとわかりました。一年というのは長い時間です。心がくじけそうになりつつも、ミヒャエル・エンデの「モモ」を思い出し、その日その日の分だけを考え、続けていきました。毎日夜9時からを定刻としていたため、Twitterでは「時報」と言ってくれる人もいました。

そして先日、ようやく翻訳とチェック作業が終わりました。期間は予定通り一年程度でした。勉強を兼ねての翻訳だったため、中身を理解しながら、練習問題もできるだけ(といっても、第3章の途中あたりでリタイアしましたが)解いていきました。前評判に違わず、SICPの内容はとても充実していました。翻訳前に危惧していたような、「この時間で何ができたか」と後悔するようなことにはならずにすみました。

もちろん、私のこの翻訳が完全だとは思っていません。しかし、致命的な誤訳が何百箇所もあってどこから手をつけていいかもわからないような“そびえ立つクソの山”でないことは保証します。この本の内容が理解できないとすれば、それは翻訳がおかしいからではありません。もちろん、内容が難しすぎるためでも、それを理解するだけの頭脳がないためでもありません。足りないのは時間をかけた読み込みです。じっくりと一文一文の意味を考え、サンプルコードを動かし、できるだけ練習問題を解いていけば、それで十分です。この本は、読者を置き去りにしようとするような本ではありません。

最後に、日本語版のテンプレートを提供していただいたことについて、minghai氏に深く感謝します。minghai氏の日本語版テンプレートがなければ、私のTeXLaTeXについての限られた知識では日本語訳を行うことはできなかったでしょう。

それでは、SICP非公式日本語版(真鍋版)をお楽しみください。

追記:PDF前文中の表現を改めました(編集前はこの記事とほぼ同じものを記載していました)。