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回目)

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

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

Qiitaの「随時更新」記事は本当に随時更新されているのか調べてみた

はじめに

Qiitaを見ていると、ときどき「随時更新していきます」と書いてある記事を見かけます。
ただ、本当に「随時更新」されているのかどうかはよくわかりません。
もしかすると「随時更新」とか言いつつ、一度も更新されずに放置されている記事も多いんじゃない?と思ったりもします。

というわけで、本当に更新されているのかどうかちょっと調べてみました。

調査の方法

今回はこんな感じ調査してみました。

  • タイトルに「随時更新」を含む記事を取得する(2017年10月16日時点で165件)
  • 「更新日 - 作成日」で更新期間(作成された日から更新された日までの日数)を割り出す
  • 更新期間順に記事を並び替える

記事の取得はQiita APIを使用しています。
本当は日数だけでなく、更新の回数も取りたかったんですが、APIには用意されていなかったので諦めました。

また、記事の並び替えはRubyで簡単なスクリプトを作成しました。
使い捨ての雑なスクリプトですが、実装はこんな感じです。

gist.github.com

調査結果と評価

調査してみるとこんな感じで分布していました。

更新期間 件数 割合
1年以上 15 9%
3ヶ月以上1年未満 24 15%
1ヶ月以上3ヶ月未満 20 12%
4日以上1ヶ月未満 31 19%
1日~3日 19 12%
未更新 56 34%

円グラフにまとめるとこんな感じです。

f:id:JunichiIto:20171016093901p:plain
「随時更新」記事の更新期間の分布

こうやって見ると、思ったよりも「随時更新」されていることがわかりました。
調査前は「半分以上が未更新なんじゃないか」と思っていたんですが、僕の予想は外れました。
しかも、1年以上にわたって更新されている記事もあるので、マメな人はちゃんと「随時更新」しているんだなあと思いました!

おことわり

この調査ではあくまで「更新日 - 作成日」で算出した日数だけが評価対象になっています。
そのため、「5年前に作成 => 昨日はじめて更新」したような記事も「5年以上随時更新」と見なされることになります。

また、作成日によるフィルタリングは特に行っていないため、最近作成された「随時更新」記事ほど、更新期間が少ないと評価されてしまいます。

というわけで、この調査方法では本当に「随時更新」の名に恥じない更新頻度を保っているかどうか、正確な評価はできないことをご了承ください。

参考:更新期間の長い「随時更新」記事トップ10

この調査で判明した、更新期間の長い「随時更新」記事トップ10はこちらです。
いずれも1年以上更新されているので、「随時更新」と呼ぶにふさわしい記事ですね。

タイトル 作成日 更新日 更新期間(日)
iOS開発者の為のAndroid開発 思い出しメモ (随時更新中) by ux_design_tokyo 2013/11/22 2017/06/04 1290
俺得gradleテンプレート(随時更新) by niusounds 2014/11/21 2017/07/11 963
【iOS】パフォーマンス改善で参考にした記事まとめ(随時更新) by xxxAIRINxxx 2014/06/17 2017/01/26 954
オレオレ開発環境まとめ - 随時更新! by fakestarbaby 2012/08/01 2015/02/24 937
SpringBootを使っていてハマった事(随時更新) by yakumo 2015/08/24 2017/09/27 765
プログラミングでよく使う英単語のまとめ【随時更新】 by Ted-HM 2015/09/11 2017/10/12 762
(随時更新)ansibleでよく使うコマンド・モジュールまとめ by uzresk 2015/08/11 2017/04/07 605
【超おすすめ!!】Atomのパッケージ、テーマ、キーバインディング、設定を紹介してみる(※随時更新) by snowsunny 2015/06/29 2017/02/13 595
LinuxコマンドTipsあれこれ(随時更新) by AkihiroTakamura 2016/03/14 2017/07/26 499
Linuxコマンド覚書(随時更新) by ao_love 2015/09/18 2016/12/22 461

まとめ

というわけで、このエントリではQiitaの「随時更新」記事が本当に随時更新されているのかどうか、調査してみた結果を書いてみました。

更新してる人はちゃんと更新してるよ!ということがわかったので、個人的にはすごく納得のいく調査結果になりました😃