Riot.jsを通じて気軽に翻訳とOSSへの貢献を体験してみよう

この記事は[Riot.jsアドベントカレンダー](http://qiita.com/advent-calendar/2016/riotjs)20日目の記事です。

## はじめに

みなさん、普段オープンソースソフトウェア(OSS)へのコントリビューションを行ったことなどはありますでしょうか？
普段からバリバリ趣味や業務の中でコードを書いている人でも、あまり他人のGitHub上にホスティングされたレポジトリに対してアクションを行うことはない。という方も多くいらっしゃると思います。

英語ベースですし、他人が書いたコードを一から読んでいくのも億劫ですし、OSSに関わるのは何かと敷居が高い印象があると思います。

そこで、今回は、上記の敷居の高さ全てがない、気軽に入れるOSSプロジェクト、Riot.jsのドキュメントの日本語化プロジェクトを、初心者の方向けにご紹介します。

## 対象読者

* Gitの利用の心得が最低限あること
* GitHubの使い方を把握していること
* (できれば)Riot.jsを使ったことがある人

## Riot.js日本語化プロジェクトとは？

[riot.github.ioレポジトリ](https://github.com/riot/riot.github.io/pull/158)にて行われている、Riot.jsのドキュメントの日本語化を行うためのプロジェクトです。

先日、新しいRiotのバージョンであるv3.0がリリースされたため、2.xの頃の日本語ドキュメントが少しずつ古くなっており、現在の原文(英語)のドキュメントに追いついていないという現状があります。

そこで、2.xの頃のドキュメントと、3.0のドキュメントの原文を比較し、変更点を少しずつ翻訳し、v3.0へのドキュメントに移行するために行われているプロジェクトになります。

よくあるOSSの翻訳系のプロジェクトとは異なり、今回のRiotのものは、変更が少ない物が多いため、2行3行の変更だけでも1ページを完遂できる気軽さが特徴です。

### Riot.jsの日本語化への貢献がオススメな理由

#### 日本語ベースでコミュニケーションがとれる

Riotの日本語周りを全体的に管理していらっしゃる[cognitom](https://github.com/cognitom)さんを中心として行われており、cognitomさんが日本人ということもあり、プロジェクト全体が日本語で進行しています。

翻訳にあたっては簡単な英語が読める必要はありますが、プログラムを書いていると必要になるドキュメントのリーディングとあまり変わらない感覚ででき、また、どちらかというと苦手意識が強いと思われるライティングが不要になるので、負担がグッと減ります。

#### ソースコードを読む必要がない

勿論、サンプルソースは読む必要がありますが、Riot本体のコードを読まなくても貢献できるのも特徴です。
Riot自体は、非常に簡素な作りとなっており、読むのは難しくないのですが、それでも、全て読んでいくのは大変なもの。

今回は、ドキュメントのプロジェクトとなるので、本体のソースコードを読まずに貢献ができます。

#### 気軽に貢献できる

Riotはまだまだ発展途上のコミュニティということもあり、人と人との距離感を縮めていくことが容易です。
例えば、Facebookでは、[Tokyo Riot](https://www.facebook.com/groups/tokyo.riot/)というコミュニティがあり、こちらに日本でRiotを利用しているかたはの大部分は集まっているんじゃないかと思います。

また、上記Tokyo Riot内での話題より、私が立ち上げた[Riot Japan Slack](http://riot-jp-slackin.herokuapp.com/)では、よりライトに質問やトークができるようになっているほか、アドベントカレンダーからはじまるコミュニケーションなども盛んですし、 #translate チャンネルも作成しているため、翻訳に貢献する場合は気軽に質問が可能となっております。

## 実際にやってみよう

それでは、実際にやってみる手順をご紹介します。
まずは、以下のURLから、実際の翻訳プロジェクト自体のページにアクセスします(リンク先はPull reqです)。

https://github.com/riot/riot.github.io/pull/158

### 今の状況を確認する

![image](https://qiita-image-store.s3.amazonaws.com/0/75633/09d56f96-a53c-935d-396d-2a91aee03a58.png)

まずは初めのコメントから、まだ残っている翻訳を確認します。
記事執筆現在では、7つの翻訳が残っていました。

リンクをクリックすると、原文が出てくるので、ページ自体のボリュームなどを考慮しながら、自分のできそうなページを一つ決めましょう。

### 宣言する

![image](https://qiita-image-store.s3.amazonaws.com/0/75633/34918209-5fad-4803-40b0-38d301195830.png)

次は、実際に翻訳への参加を宣言します。
これは私が行ったときのものですが、このように、やりたいページを書いた上で、 @cognitom さんへメンションを付ける形で連絡をすると、Reactionまたはコメントにて連絡が来ます。

Reactionがついた時点で、Assignとなりますので、実際に作業をしていきましょう。

### 比較して、翻訳を修正する。

ページを決めてAssignされたら、実際に古い文と新しい文を比較して、翻訳をアップデートしていきます。
[Mergely](http://www.mergely.com/editor)というサービスを利用し、[v2.3.18時点](https://github.com/riot/riot.github.io/tree/v2.3.18/)と、[v3.0時点](https://github.com/riot/riot.github.io/tree/v3.0.0/)の英語ドキュメントを左右に貼り付けて、Diffを見ながら日本語に内容を反映していきます。

![image](https://qiita-image-store.s3.amazonaws.com/0/75633/8c19f6fd-0285-0782-37ae-63d582d6a31d.png)

これは、私が担当した２つのページのうちの片方ですが、こちらは追加が非常に多いことがみてとれます。

### 翻訳を完了したらプルリクエストを送る

完了したら、実際にプルリクエストを送っていきます。

拙い英語でもあまり問題ではないので、取り合えず本家のブランチを「v3/ja」に指定することだけ間違えずに、実際にプルリクエストを送っていきましょう。

私が実際に送ったものは、以下となります。
https://github.com/riot/riot.github.io/pull/161

もし、GitHubのプルリクエストの送信方法がわからない！という場合は、以下の記事を参考にしてください。

[GitHubでプルリクエストを送るときの操作手順](http://qiita.com/tyfkda/items/e8079b1585bcc83b7b57)

### 間違っていたら直す

直しましょう。

### マージされる

![image](https://qiita-image-store.s3.amazonaws.com/0/75633/9a74a49c-cf52-08bc-0adf-64d6c5c97850.png)

問題がなければ、マージされます。LGTMがきて、無事マージされると、作業は完了となり、晴れてRiotコミュニティ、及びOSSコミュニティへの貢献者の一人となりました。

## まとめ

ここまで、Riot.jsを通じて、OSSへのコントリビューションの一連の流れを紹介してみました。
今回は、コードを読まずに、かつ日本語でできるプロジェクトを紹介しましたが、ある程度慣れた段階で、英語ベースのコミュニケーションや、実際にコードを読み書きするタイプのコントリビューションを行ってみると良いかもしれません。

未だに私は英語が苦手で、どうしてもわからないところは、Googleのもつニュートラルネットワークにおんぶにだっこで解決する時がありますが、それでも十分読んで貰えるので、「取り敢えず送ってみる」ぐらいの気軽さが重要だな。と思います。

Riot.jsの翻訳プロジェクトが完了することによって、日本各地にいるRiotユーザーや、これからRiotユーザーになる人への大きな助けとなりますので、もし、興味があれば、翻訳プロジェクトに関わってみてください。