読者です 読者をやめる 読者になる 読者になる

ScalaMatsuri運営ブログ

アジア最大級のScalaカンファレンス「ScalaMatsuri」の運営ブログです。このブログは株式会社はてな様のご協力でお送りしています。

ScalaMatsuri で、最近賢くなったというウワサの Google 翻訳を使ってみた

こんにちは。ScalaMatsuri スタッフの岡本 (@okapies) です。今年の ScalaMatsuri 2016 に参加して下さった皆さん、ありがとうございました。皆さんのご協力のおかげで、様々な分野から数々の興味深いセッションをホストできただけなく、国内外の Scala ファン同士の活発な交流を実現できたと思います。

そして今、ScalaMatsuri 準備委員会は、次回となる来年2月25~26日の ScalaMatsuri 2017 の開催に向けて準備を進めているところです。現在、ScalaMatsuri では参加者とセッションの募集を行っています!

  • 参加者募集: Doorkeeper で参加チケットの購入が行えます。申し込みの締め切り日は12月7日まで(学生チケットは12月21日まで)ですが、予定の枠数が埋まり次第締め切りとなりますので、この機会をお見逃しなく!
  • セッション募集: 日本各地や国内外から数多くの Scala ファンが集まる ScalaMatsuri であなたの話を聞かせてくれませんか? すでに多数のセッションの応募を頂いていますが、日本語セッション枠の応募がまだ少ないため、当選のチャンスも高いです。また、必ずしも直接 Scala を取り上げた内容でなくても構いません。応募はこちらから。締め切りは 11月20日24:00 JST までなのでお急ぎを!

翻訳の人手が足りない!

さて、私は準備委員会で翻訳チームのリーダーを仰せつかっています。翻訳チームは、国際カンファレンスを目指す ScalaMatsuri において、日本語話者と非日本語話者のコミュニケーションを円滑に進めることを目的として、ウェブサイトやアナウンス、発表資料の翻訳、当日の同時通訳体制の手配、来日した参加者のサポートなどを担っています。

お気付きの方も多いと思いますが、応募されたセッションの概要はすべて日英双方に翻訳した上で掲載しています。これは、セッション応募終了後に行われる投票の際に、参加者の皆さんに言語の垣根なく純粋に興味のあるセッションに投票して頂けるようにするためです。セッションの同時通訳も、同様の趣旨で行っています。

しかし、これがなかなか大変な作業です。準備委員会では、英語ができるメンバーを中心に GitHub 上で翻訳作業を分担して進めていますが、時期によっては純粋に人手を要する場面も多く、より多くのメンバーに手を貸してもらえる体制を作ることが課題になっています。

救世主 Google 先生?

そんなこんなで苦慮していたところ、Google 先生の翻訳精度が劇的に向上したというニュースが飛び込んできたわけです。ひらめく、私。

これ、使えるんじゃね?

どういうことか。

前述の通り、翻訳作業ができる人手を増やすのはチームの重要課題です。しかし、私を含めてそこまで英語が流暢でない人間にとっては、まず文章全体の内容を把握したり、一通り翻訳文を仕上げるところまで持っていくのが一苦労なわけです。結果、目の前の翻訳タスクを取るのに少なからず気合と勇気を要するのが常であり、なかなか新たなメンバーに参加してもらえる体制を作れずにいました。

もし、機械翻訳がある程度のところまで訳してくれるなら、そうした精神的なハードルを下げられるのではないかと思ったわけです。

というわけでチーム内で提案したところ、さっそく試してもらえました。

今回、翻訳したのは、Silvia Pina さんの "Beauty and/or elegance in Functional Programming" です。

原文

Beauty is a combination of pleasing traits, and is not exclusive to art, as it applies to disciplines like mathematics. Debates about beauty / code elegance may be implicit but are at the heart of many concerns of modern software development, and contribute positively to quality metrics. Functional programming, coupled with Category Theory, can represent a plethora of well-defined patterns used to cut through the boilerplate and emphasize the purpose of code. We will explore how we use functional programming to achieve beauty in code, and how that translates to high quality software projects.

Google 先生

美は数学のような学問分野に適用されるので、喜ばしい特性の組み合わせであり、芸術に独占的ではありません。 美しさ/コードの優雅さに関する議論は、暗黙的であるかもしれないが、現代のソフトウェア開発の多くの心配であり、品質測定基準に積極的に貢献する。 カテゴリ理論と相まって、関数型プログラミングは、定型文を切り抜き、コードの目的を強調するために使用される明確に定義された多数のパターンを表現することができます。 我々は、コードの美しさを達成するために関数型プログラミングをどのように使うのか、それが高品質のソフトウェアプロジェクトにどのように変換するのかを探る。

さて、皆さんはどう思われたでしょうか?

まず、文意を素早く把握するのに十分なレベルの出力は得られているという印象です。英語が流暢でないメンバーでも作業に参加しやすい環境を作りたい、という目的には役立ちそうです。

とはいえ、訳文の自然さや、特に難しい文の翻訳の品質にはまだ課題があります。例えば、この訳文をレビューした米国生活の長いメンバーからは「一文目の "pleasing" や "as" の意味がうまく取れていない」という意見が出ました。よく見ると、「何となく文意は取れるけど微妙に何を言っているのか分からない」文章になってしまっています。

アブストラクトの翻訳は、この後のセッション投票の成否を左右する重要な要素なので、このレベルの品質だとレビューを通さずそのまま掲載するのは難しそうです。ちなみに、実際にウェブサイトに掲載した翻訳文は以下の通りです。さきほどの機械翻訳と比較してみてください:

美しさとは感性に訴えかける特性の組み合わせであり、芸術に限らず数学のような分野にも適用できる。日常的に行われる美しさやコードの手際の良さに関する議論は、モダンなソフトウェア開発における多くの懸念事項に関わってくる課題であり、それはコード品質の客観的評価基準にもつながってくるトピックだ。関数型プログラミングと圏論を組み合わせることで、多くの正確に定義されたパターンを表現することができ、紋切型の文を取り除いて、実際のコードの目的を強調することができる。このセッションでは、関数型プログラミングを用いてコードをいかに美しくできるか、そしてそれがどう高品質なソフトウェアプロジェクトにつながってくるのかをみていく。

日英翻訳の使い方

もう一つ、今度は日英翻訳を試してみましょう。今度のお題は、中村学さんの "Readable Scala" です。

原文

しばしば Scala のコードは読みにくいと言われることがあります。多くの場合、言語機能を意図とは異なった形で使用しているためであったり、行き過ぎた抽象化によってコードの目的が直接表現されていない事に起因しているように見受けられます。Scala の言語機能は、コードを読みにくくするためではなく、読みやすくするために熟慮されたものです。言語機能の動機を正しく理解し、より読みやすい Scala コードを記述するための指針を示します。

Google 先生

Occasionally it is said that Scala's code is hard to read. In many cases, it seems that it is due to the fact that the language function is used in a form different from the intention, or because the purpose of the code is not expressed directly by excessive abstraction. The language function of Scala is not intended to make the code difficult to read, but it was contemplated to make it easier to read. I understand the motivation of the language function correctly and show the guidelines for describing the Scala code which is easier to read.

そこそこ意味が取れる文は出力できています。しかし、これでは自然な英文とは言い難く、大幅な手直しが必要でしょう。以下が、実際に掲載した翻訳文です:

It's often said that Scala code is difficult to read. In many cases, this is caused by irregular use of language features beyond their original intent or by excessive abstraction that no longer expresses the purpose of the code. The language features of Scala were well thought out to make the code more readable, not less. In this session, we will first solidify our understanding of the motives behind the language features, then propose guidelines to write more readable Scala code.

ただ、いろいろと実験してみたところ、語順を入れ替えたり省略している主語を明確にするなど、いわゆる「翻訳調」の文章に修正することで品質を改善できるかもしれません。この辺りは、まだ研究の余地がありそうです。

書き直した原文

Scala のコードは、しばしば読みにくいと言われることがあります。それは、多くの場合、Scala 言語の機能を元の意図とは異なった形で使っていることや、行き過ぎた抽象化によってコードの目的を直接表現できていないことに起因しています。Scala 言語の機能は、コードを読みにくくするためではなく、読みやすくするために熟慮して設計されています。このセッションでは、言語機能の動機を正しく理解し、より読みやすい Scala コードを記述するための指針を示します。

Google 先生

Scala's code is often said to be hard to read. In many cases, it is caused by using Scala language functions differently from the original intention, and not being able to express the purpose of the code directly by excessive abstraction. The function of the Scala language is carefully designed to make it easier to read, not to make the code less readable. In this session, we will give you guidelines to correctly understand the motivation of the language function and describe the more readable Scala code.

新しい Google 翻訳は「使える」か?

翻訳する内容や用途にもよると思いますが、少なくとも ScalaMatsuri で必要とされるような正式なドキュメントでそのままの形で使うには、まだ品質に課題があると感じます。しかし、例えば多少の英語スキルがある人が、読み書きの補助として使う用途では十分に可能性があるのではないでしょうか。

また、我々のような翻訳業務以外でも、例えば英語学習者にとってもメリットがありそうです。初学者にとって、英語に取り組むことはまとまった集中力を必要とするタスクであり、そのせいで数をこなせずなかなか上達しない…という悪循環はありがちです。うまく使えば、数をこなす上でのハードルを下げることができるのではないでしょうか。

ただ、これまでと違い、たとえ Google 先生が文の意味を取り損なっていてもそこそこ「読める」翻訳が出力されるので、読み手が誤った読み方に誘導される危険性はありそうです。使う際には、原文と照らし合わせながら読むのが安全でしょう。そのあたりは、今後の翻訳品質の改善を待つ必要がありそうです。

ScalaMatsuri では、これまで Scala コミュニティの中の言語の垣根を取り払うことを目標として、人的にも金銭的にも少なからぬコストを投じてきました。もし、技術の進歩によってそのような壁を消し去ることができれば、コミュニティの成熟にきっと新たな展開が訪れるだろうと思います。機械翻訳技術のさらなるイノベーションに期待したいですね。