こんにちは。Misoca開発チームのtaiki-tです。
先日、本を訳したのでそのことについて書きたいと思います。訳した本は「オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方」。
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方
- 作者: Sandi Metz,?山泰基
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/02
- メディア: 大型本
- この商品を含むブログを見る
原著は”Practical Object-Oriented Design in Ruby” です。
Practical Object-Oriented Design in Ruby: An Agile Primer (Addison-Wesley Professional Ruby)
- 作者: Sandi Metz
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2012/09/05
- メディア: Kindle版
- この商品を含むブログを見る
著者
著者は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)発売です。
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方
- 作者: Sandi Metz,?山泰基
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/02
- メディア: 大型本
- この商品を含むブログを見る
RubyKaigi 2016 でサイン会もやるっぽいので、よろしかったら来てくださいね。
*1:角谷さんはMisocaの技術フェロー