give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

2017年版「Everyday Rails - RSpecによるRailsテスト入門」の翻訳スケジュールについて(2017年10月時点)

英語版は2017年版のアップデートが完了、日本語版はいつ?

僕が翻訳者の一人として販売している電子書籍、「Everyday Rails - RSpecによるRailsテスト入門」に関する2017年10月時点の状況報告です。

Everyday Rails - RSpecによるRailsテスト入門 - Leanpub
f:id:JunichiIto:20170622055136p:plain

英語版の方は先日、Rails 5.1 + RSpec 3.6対応版(2017年版)の執筆が完了しています。

一方、日本語版は1つ前のRails 4.1 + RSpec 3.1版になっています。

英語版のアップデートが完了しているので、日本語版も早くアップデートしなければ、と考えてはいるのですが、残念ながら翻訳作業はあまり進んでいません。

具体的な日程は未定ですが、これから年末にかけて翻訳を加速させて、年明け(2018年1月~2月頃?)に日本語版をアップデートしたいと考えています。
もしかすると、英語版がやっていたように、段階的なアップデート(翻訳が終わった章から順次リリース)になるかもしれません。

もちろん、すでにEveryday Railsを購入されている方は無料でアップデートできます。
「早く最新のRailsとRSpecに対応した版を日本語で読みたい!」と思っている方には大変申し訳ありませんが、翻訳が完了するまでもうしばらくお待ちください🙇

2018.1.31追記:2018年2月中にはリリースします!

若干遅れつつも、翻訳作業はどんどん進めていってます。
このペースでいけば2018年2月中にはリリースできる予定です。
具体的なスケジュールが決まったら、またこのブログでお知らせします。

申し訳ありませんが、もうしばらくお待ちください!

翻訳:英語版のリリースノート

先ほども述べたように、英語版はすでにRails 5.1 + RSpec 3.6対応版(2017年版)の執筆が完了しています。
そのタイミングで著者のAaronさんが執筆の完了報告と今後の予定についてブログを書いています。

2017 edition of Everyday Rails Testing with RSpec is content-complete! | Everyday Rails

その内容を翻訳したものを以下に載せておきます。

2017年版のEveryday Rails Testing with RSpecの執筆が完了しました!

私が書いた書籍「Everyday Rails Testing with RSpec(邦題:Everyday Rails - RSpecによるRailsテスト入門)」の第11章がダウンロードできるようになりました。今回公開した「テスト駆動開発に向けて」の章は2017年にアップデートする予定だった最後の章です。本章ではTDDで機能を実装する方法を1つずつ順を追って説明しています。また、「外から中へ向かうテスト」や「レッド・グリーン・リファクタ」サイクルについても解説しています。


もしあなたが本書の完成をずっと待っていたのであれば、今が購入のタイミングです。もちろん、すでに購入されているみなさんは無料アップデートが可能です。Leanpubのライブラリページにアクセスして、最新版をダウンロードしてください。

今後の予定

私は今回の改訂版の出来に自信を持っています。予想以上に時間はかかってしまいましたが、2017年現在の私のテストアプローチをきちんと反映しています。新しいコンテンツがみなさんのお役に立てば嬉しいです。ところで、このあともまだいろいろと考えていることがあります。

  • 読者のみなさんが報告してくれた問題点を現在修正しています。こうした問題点の修正を含む、メンテナンスリリースが来週か再来週ぐらいにリリースされるはずです(訳注:2017年10月23日にリリースされました)。わかりにくいところや間違っているところがあれば、本書のGitHubリポジトリにあるissueページから報告してください。
  • 先日リリースされたRSpec 3.7にはいつ対応するのか、という質問がすでに挙がっています。まだちゃんと準備はできていませんが、アップグレードの方法やRails 5.1のSystem Testの使い方について執筆することを検討中です。この内容はブログ記事としてお知らせするのと同時に、本書の付録としても追記するかもしれません。とはいえ、改訂版で説明した内容はすべてRSpec 3.7にも適用可能ですし、もうしばらく先のバージョンまで有効な内容になっていると思います。
  • 私はテストの他の側面についてもいろいろ議論しています。近日中にテストカバレッジの計測や、テストしやすいコードの書き方、フィーチャスペックをきちんと整理する方法などについてもブログ記事を書くつもりです。


ちなみに、2017年版のサンプルコードはGitHubで公開されています。
「とりあえずコードだけでもチェックしておきたい」という方はこちらのGitHubリポジトリを参照してください。

まとめ

というわけで、このエントリでは現時点での2017年版「Everyday Rails - RSpecによるRailsテスト入門」の翻訳スケジュールを報告させてもらいました。
すぐにアップデート版をリリースできないのが非常に心苦しいですが、必ずアップデートしますので読者のみなさんはもうしばらくお待ちください!

また、まだ購入されていない方も無料でアップデートできますので、2017年版の翻訳を待たずに今購入してもらっても大丈夫です。

翻訳の進行状況は今後もこのブログで報告していきますので、最新情報をキャッチしたいという方は読者登録(「読者になる」ボタンのクリック)をお願いします。

引き続き「Everyday Rails - RSpecによるRailsテスト入門」をよろしくお願いします!

Everyday Rails - RSpecによるRailsテスト入門 - Leanpub
f:id:JunichiIto:20170622055136p:plain

目標だったRuby Weeklyに記事が載りました!(+英語記事を書くコツについて)

お知らせ:Ruby Weeklyに記事が載りました!

Ruby Weeklyというメールマガジンをご存じですか?
これはRuby関連の技術記事のリンクを毎週お知らせしてくれる、海外のメルマガです。

Ruby Weekly
f:id:JunichiIto:20171029142824p:plain

僕は数年前からこのメルマガを読んでいます。

最近でこそ、日本国内ではRuby界隈での知名度は多少上がってきた僕ですが、世界レベルになるとまだまだです。
いつか英語で技術記事を書いて、Ruby Weeklyに載りたいな~と以前から思っていたのですが、ついに載りました!
しかもトップで!

Ruby Weekly Issue 372: October 26, 2017
f:id:JunichiIto:20171029143105p:plain

ちょっとわかりにくいですが、僕が書いたのは「10 new features in Ruby 2.5」という記事です。
この記事は僕がRubyMineの公式ブログに寄稿した記事です。

10 new features in Ruby 2.5 | RubyMine Blog
f:id:JunichiIto:20171029132136p:plain

内容は以前Qiitaに書いたRuby 2.5の紹介記事を、英語で書き直してコンパクトにまとめたものです。

Ruby 2.5の新機能紹介であれば、国内・国外を問わずみんな知りたい話だと思うので、掲載される可能性は高いんじゃないかな~と思っていましたが、まさかトップに載るとは思いませんでした。
Ruby Weeklyに載るのは前々からの目標だったので、これで目標を一つ達成できました。やった!

社内でも「Ruby Weeklyに載るぞー!」と宣言してました

実は2年ほど前に、ソニックガーデン社内の「宣言大会」(次の年の目標をみんなの前で発表するイベント)で「今年(2016年)はRuby Weeklyに載りたい!」と宣言していました。

以下はそのときに作ったスライド(一部)です。

f:id:JunichiIto:20171029133146p:plainf:id:JunichiIto:20171029133153p:plain

ちょっとわかりにくいですが、RSpec風に「今年の目標」を書いています。
("jit"は社内での僕のアカウント名です)

実際には2年かかりましたが、なんとか目標を達成することができました!

Tips: 英語記事を書くときのコツ?

ところで、今回の記事の英文は基本的に僕が全部自分で書きました。
掲載されるのがRubyMineの公式ブログなので、掲載前にちょっとだけ英語の校正が入っています。
ですが、9割以上が僕の書いた英文のままです。

英語で記事を書くときは、僕はこんなテクニック(?)を使っています。

  • 頭の中の日本語を100%伝えることを諦める。「6割ぐらい伝わればOK」とハードルを下げる。
  • 説明はそこそこにして、さっさとサンプルコードを見せる。
  • 中学生レベルの英語でも気にしない。むしろ中学生レベルでOK。

まあ、一言で言ってしまえば、「雑」に書くことを自分で許容する、っていう感じですね。

100%伝えることを諦める

元ネタは日本語で書いたQiita記事なので、これをきれいに英語に直せればベストなんですが、これは英語が得意な僕でもちょっと大変です。
なので、「拙速は巧遅に勝る」の精神で、「難しい説明」や「面倒くさい説明」は、とことん端折って執筆時間を節約しています。

まず、元記事では22個あった新機能を10個まで減らしました。
さらに、それぞれの新機能の紹介についても、「詳しく説明しようとすると時間がかかりそうだな」と思ったものは、詳しい説明を諦めて必要最小限の内容しています。

さっさとサンプルコードを見せる

また、日本人であれ、外国の人であれ、プログラマであればコードを見れば、だいたいやりたいことがわかります。
なので、説明が多少不足していても、「あとはコードを見てちょーだい」ということで、さっさとコードを紹介しています。

中学生レベルの英語でも気にしない

あと、僕が書く英語は自分で「きれいな中学生英語」だと思っています。
長くて複雑な英語は書きません(書けません)。
とはいえ、中学生レベルの英文でもきちんと書けば、だいたい相手に伝わります(サンプルコードもあるし)。

こういったポリシーで、ざざざーっと、Qiitaの元ネタを英訳していきました。
例を挙げるとこんな感じです。

日本語バージョン

ERBのローカル変数をHashで渡せる ERB#result_with_hash メソッド

これまでERBでテンプレート内で使われるローカル変数を渡すには、以下のようにbindingを渡したり、あるいは渡す変数を絞るためにstructを定義する必要がありました。

require 'erb'
require 'ostruct'

namespace = OpenStruct.new(a: 2, b: 3)
template = 'Result: <%= a * b %>'
ERB.new(template).result(namespace.instance_eval { binding }) #=> "Result: 6"

これが、ERB#result_with_hashの導入により、最低限の変数だけ渡すのが以下のように簡単に書けるようになりました。

require 'erb'

ERB.new('Result: <%= a * b %>').result_with_hash(a: 2, b: 3) #=> "Result: 6"
英語バージョン

ERB#result_with_hash

The following code shows how to assign local variables to ERB template in Ruby 2.4:

require 'erb'
require 'ostruct'

namespace = OpenStruct.new(a: 2, b: 3)
template = 'Result: <%= a * b %>'
ERB.new(template).result(namespace.instance_eval { binding }) #=> "Result: 6"

But in Ruby 2.5, you can rewrite with ERB#result_with_hash like this:

require 'erb'

ERB.new('Result: <%= a * b %>').result_with_hash(a: 2, b: 3) #=> "Result: 6"

日本語に比べて、英文の方は情報量が減っていますが、最低限、言いたいことは伝わりますよね?
英語で説明するのが難しかったら、コードを書いて"like this"で済ませちゃえばいいんです。"like this" is 便利!

自分の記事が英語で拡散されるのはなかなか新鮮

自分の書いたブログやQiita記事が日本国内で拡散されるのには慣れましたが、海外の人に拡散されるのは滅多にないので、なかなか新鮮でした。

f:id:JunichiIto:20171029135815p:plain

僕が見る限り、「英語が下手くそでわかりにくい」みたいな反応はないので、だいたいうまく伝わっているんだと思います。

あと、これだけ拡散されたのはRubyのパパ、Matzにツイートしてもらえた影響も大きいと思います。
(どうもありがとうございます!)


まとめ

というわけで、このエントリではRuby Weeklyのトップに自分の記事が載ったよー、というお話を書いてみました。
自分が日本語で書いている記事は、「これってたぶん海外の人にとっても役立つだろうな~」と思うことがたまにあるので、今後も折を見て英訳していきたいな~と思います!

10 new features in Ruby 2.5 | RubyMine Blog

あわせて読みたい

RubyMineブログには以前も英語記事を載せてもらいました。(今回で2回目)

英文の書き方については以前書いたこちらの記事でも説明しています。

QiitaにRSpec 3.7の紹介記事を書きました(+記事を書くモチベーションについて)

お知らせ

Qiitaに「rspec-rails 3.7の新機能!System Specを使ってみた」という記事を書きました。

qiita.com

この記事はRails 5.1で導入されたSystemTestCaseという機能をRSpecから利用する、System Specの使い方を説明した記事です。
以前から利用できるFeature Spec(フィーチャスペック)とほぼ同じ機能ですが、Rails標準の機能が使えるぶん、Feature Specよりも手軽に使えるようになっています。

RSpecユーザーのみなさんはぜひチェックしてみてください!

余談:なんでしょっちゅう新機能とか紹介してるん?

ところで、先日公開したRuby 2.5の新機能紹介記事もそうですが、僕は結構頻繁に新しくリリースされたツールやフレームワークの新機能をQiitaとかで紹介しています。

もしかすると、中には「なんでそんなにしょっちゅう紹介記事書いてるん?」「何がモチベーションなん?」と思ってる人もいるかもしれません。
僕が新機能の紹介記事を書いたりする理由、というか思考回路は、こんなふうになっています。

新機能がリリースされたら、どんな機能なのか早く確かめたい
 ↓
READMEファイルやリリースノート(だいたい英語)を読んだりして、仕様や使い方を調べる
 ↓
だいたい内容を理解する
 ↓
たぶん世の中の多くのプログラマが、僕と同じようにドキュメントを調べたりするんだろうなーと想像する
 ↓
じゃあ、僕が仕様や使い方を日本語で紹介すれば、さくっと新機能の内容が理解できて、世の日本人プログラマの時間を節約できるんじゃ?と考える
 ↓
自分だったらこんなふうに説明してもらえるとわかりやすくて嬉しい、と思えるような記事を書く

一番大きなポイントは「たぶん世の中の多くのプログラマが、僕と同じようにドキュメントを調べたりするんだろうなーと想像する」というところですね。

みんなが同じようにドキュメントを読んだり、同じように使い方がわからなくてハマったりするのは、なんかもったいない。
誰か一人が詳しく調べてその知見を共有すれば、世のプログラマの時間が節約できる!

そんなふうに考えて、Qiitaに記事を書いたりしております。
(これも一種のDRYの精神・・・なんでしょうか??)

同じような話は関西Ruby会議2017でも発表しているので、こちらも参考にどうぞ。

まとめ

というわけで、このエントリではQiitaに書いたRSpec 3.7の紹介記事と、Qiitaとかに記事を書いたりするモチベーションについて書いてみました。

いつも「こういうことを書いたらみんな喜んでくれるかなー」と思いながら記事を書いているので、ちょっとでもお役に立てば「役に立った!」「書いてくれてありがとう!」という喜びの声を聞かせてもらえると嬉しいです😃
みなさん、よろしくお願いします~。

qiita.com