give IT a try

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

目標だった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回目)

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