訳しました:「オブジェクト指向設計実践ガイド」

こんにちは。Misoca開発チームのtaiki-tです。

先日、本を訳したのでそのことについて書きたいと思います。訳した本は「オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方」。

原著は”Practical Object-Oriented Design in Ruby” です。

Practical Object-Oriented Design in Ruby: An Agile Primer (Addison-Wesley Professional Ruby)

Practical Object-Oriented Design in Ruby: An Agile Primer (Addison-Wesley Professional Ruby)

著者

著者はSandi Metzさんです。現在だと「Sandi Metzルール」として聞いたことがある方が多いでしょうか。

綺麗な設計を身に付けるためのSandi Metzルール | A-Listers

Rubyistであると同時に、サイクリストでもあります。本書では、その自転車が題材として取り上げられ、コード例が構築されていきます。

本書の魅力

実践的な立場から、オブジェクト指向設計について、コード例を交えて解説していきます。大まかには下記のような説明の流れになっています。

下記のような疑問を抱いている人は、読んでみると良いと思います。

  • そもそもなぜオブジェクト指向でつくるの?
  • 単一責任の原則って聞いたことあるけど、なぜ重要なの?
  • 設計のとき、どういう観点を持てば良いの?
  • 継承とコンポジションって、どっちが良いの?
  • プライベートメソッドってテストした方が良いの?
  • そもそもテストってなにをテストすると良いの?

著者の過去30年にわたる知見に基づく実践的な立場から解説されるので、実際の開発現場できっと役に立つ知識を得られます。たとえば理論的には、いつでも単一責任の原則を適用すべきです。しかし実務上そうはいかないこともあります。そういう、設計原則を破る場合についても、

  • どういう判断基準で設計原則を破るか
  • 破る場合にはどうするか
  • マシにするためにはどうするか

というような説明がされています。極めて実践的です。

どんな本であってもその一冊だけで事足りるということはなく、この本も例外ではありません。しかし、入り口として読めば、その後の探求を続けていく準備ができる一冊だと思います。

目次は オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方:書籍案内|技術評論社 をご覧下さい。

裏話

内容を紹介してくださっている記事は他にもありますし、せっかくなのであとは翻訳裏話のコラム、的なやつを書いていこうと思います。

きっかけ

RubyKaigi2014での、技術評論社のレポーターに応募したのがきっかけです。 その後、その時の担当の方に「この本訳したいんですよー」と伝え、ありがたいことに企画を社内にあげてくださいました。 すんなりと決まったわけではなく、いろいろと紆余曲折を経て、翻訳を決まりました。 これが、2015年の1月ぐらいです。

技術評論社のレポーターに応募したいきさつは、RubyKaigiのチケット買ってなくて、「Regular Ticket…」と固まっていたところに某角谷さんから「RubyKaigiの基調講演のレポート係をgihyo.jpが募集してるけど、どう?」と声をかけていただいたのでした。 そこらへんの背景についてはこちらをご覧下さい: https://www.wantedly.com/companies/misoca/employees *1

技術評論社のレポーター自体は毎年募集しているので、気軽に応募してみると良いと思います。 今年もまだ間に合う雰囲気があるので、興味のある方は是非問い合わせてみてください。 gihyo.jp,RubyKaigi 2016のイベントレポーターを募集(若干名):インフォメーション|gihyo.jp … 技術評論社

いきなり申し込みはちょっと、という方はtaiki-t (@taiki__t) | Twitterで僕に直接いろいろ聞いてください。

大変だったこと

翻訳。翻訳大変でした。一応個人的には高校卒業時ぐらいで、TOEICでいうと915ぐらいはとってたので、俺英語チョットデキル〜とか思ってました。しかし翻訳を始めてから思い知らされたのは、ほんとにちょっとしかできてなかったな、という現実です。理解して日本語に起こすというのは、また次元の異なる作業でした。

特に頭を悩まされたことの一つが、関係代名詞の訳し方(thatとかwhichとか)です。そのとき読んでいた本 (英文翻訳術) には、「関係代名詞の扱いは難しいから、こうやって訳すといいよ」という感じでいくつか事例が載っていたので、助かったと思いつつ読んでいました。しかし、その節の最後に「でも全部一律に処理できるわけじゃないから、個別の事例は各人工夫して頑張ってね」という旨の内容が書いてあり、それを読んだ日はさすがに梨汁が飛び散りました。まぁ、逆に言えば、プロの翻訳家でもずっと苦労したり悩むところなんだなぁ、と安心した記憶もあります。そんな苦労がいくつもありました。

また、1年以上も翻訳していると、さすがに翻訳スキルも上がってきます。1年前の自分が訳した文章を見ると、「こいつはいったい何を訳してるんだ?」と思ったりするわけです。ですので、また1から訳し直したり、ということもしました。このとき、僕の心の中で、この翻訳プロジェクトは「サグラダ・ファミリア」と呼ばれていました(とはいえ、完成して良かったです)。

2015年1月下旬に翻訳を開始し、終えたのが2016年8月中旬です。実に、足かけ1年8ヶ月に及ぶ長い格闘でした。準備期間のやりとりなども含めると、話をはじめて出したのが2014年9月末ですから、ほぼ2年のプロジェクトとなりました。

翻訳した感想

  • 途中、テスト書いて通ったらOKと言えるプログラミングは素晴らしいなぁと幾度も思いました。文章にもテスト書けたら良いのに
  • 今度やるときは誰かとやりたい
  • 技術翻訳は、いろいろな意味で大変。個人のスキル、気力、体力に頼らない仕組みを作っていかないと、この先やばいのでは(実際訳されてない本たくさんあるし)
  • 作業時間は平日夜と土日という感じだったので、残業がない会社でよかった!

思い返すと苦労ばかりがすぐに浮かんでしまうのですが、書店に並んでいる本の一冊一冊に、これだけ、もしくはこれ以上の手間が掛けられているのだなぁと、本を見る目も変わりました。

ほか、ブログには書き切れないこと、書けないこともたくさんあるので、いろいろ個人的に聞いてください。西日暮里.rbに定期的に出没すると思います。あとがきにも書きましたが、訳書が皆さんのお役にたてば幸いです。

そしてこの本は、今日(2016/9/2)発売です。

RubyKaigi 2016 でサイン会もやるっぽいので、よろしかったら来てくださいね。

*1:角谷さんはMisocaの技術フェロー