接触確認アプリ「Cocoa」で英独の翻訳をした件

こんにちは、[Yui](https://twitter.com/yui_active)です。

あんはるさんの[JKが接触確認アプリ「Cocoa」の開発に貢献した話。〜1日でXamarinを学びアプリ改善〜](https://qiita.com/Anharu/items/c00e882d678538be0ab0)をご存知でしょうか。

こちらを見て、何か私もできないかと思い、今回Cocoaの改善に挑戦することにしました。

# 前提
接触確認アプリ「Cocoa」はOSS（オープンソースソフトウェア）なので、ソースコードが公開されており、誰でもソースコードを見て変更依頼を上げたりすることができます。
私は技術力的には大したことはできないのですが、ちょっとした翻訳や文の修正（typoなど）ならできるかと思い、今回OSSをはじめて改善することにしました。

# 行ったこと
- GitHubとSSH接続
- 出来ることを探した
- 設定
- 多言語化ファイルを探して英独翻訳

# GitHubとSSH接続
はい、お恥ずかしながらGitHub使いはじめて約１年半、まだSSH接続していなかったので、今回OSSを触るにあたってSSH接続することにしました。

[GitHubにssh接続できるようにする](https://qiita.com/0ta2/items/25c27d447378b13a1ac3)を参考に行いました。

まずはSSH Keyの作成から。

```ターミナル
$ ssh-keygen -t rsa -b 4096 -C "hoge@gmail.com"
```

保存先など聞かれるので、希望の場所まで保存。
私は特に気にしないと思ってそのままEnterで進んで`/Users/hoge/.ssh/id_rsa`に保存したのですが、この件の後に他にSSH接続する場面が出てきて少しややこしい思いをしたので、**`id_rsa_github`など任意の場所を設定しておくことをおすすめします。**

後はパスワードを入力してそのまま進みます。

```ターミナル
Your identification has been saved in id_rsa .
Your public key has been saved in id_rsa .
```

とでれば完了です。

後はGitHubに公開鍵を設定しましょう。
[GitHubにssh接続できるようにする](https://qiita.com/0ta2/items/25c27d447378b13a1ac3)を見てもらえればわかりやすいと思うのでここではあまり取り上げませんが、`Settings→SSH Keys→Add SSH key`から自分のkeyを入力してください。

ここまでできたらconfigの設定だけ。

```ターミナル
$ vim /Users/hoge/.ssh/config
```
下記を追記

```
Host github
  HostName github.com
  IdentityFile ~/.ssh/id_rsa #秘密鍵の場所を指定（私の場合はid_rsa）
  User git
```
上述してますが、私は何も考えずにid_rsaのまま進んだのですが、今後のためにも**`id_rsa_github`など任意の場所を設定しておくことをおすすめします。**（後日談ですが、この後Bitbucketを受託開発で使うことになり、再度設定することになってしまいました・・。）

```
$ ssh-add /Users/hoge/.ssh/id_rsa #保存先
# passwordを入力して、Identity added: ~ とでればOK

$ ssh -T git@github.com #動作確認
Hi hoge! You've successfully authenticated, but GitHub does not provide shell access.
```

# できることを探した

さて、CocoaはXamarinという言語で書かれています。
あんはるさんはXamarinを１日で勉強したと書いてたけど、私も出来るかな〜と、環境構築して、公式の[ドキュメント](https://docs.microsoft.com/ja-jp/xamarin/)を読みました。
大体半日ぐらいにらめっこして、なんとなくソースコードが何を書いているのかは理解できました。

ですが、これは貢献できるレベルじゃないと思い、レイアウトの調整に関してはさっさと諦めました。笑

その上で、何が出来るかREADMEを読みながら探していたら、
>私たちは現在、機械翻訳結果の確認レビュアーを募集しています。詳しくは How to Translate application をご確認ください。

この一文が。
私は英語・ドイツ語は多少わかるので、これだ！！と思い、早速多言語化の面で貢献することに決めました。

ただ、他に同じ編集をしようとしてる人がいてはいけないので、issueを見て誰も上げていないことを確認します。
他に編集者がいないことを確認したら、「私がこれやります！」という宣言のためにissueをたてておきます。

# 設定（フォーク、クローンなど）

早速リポジトリをフォークします。

もしフォークしたことがないという方は[公式ドキュメント](https://docs.github.com/ja/github/getting-started-with-github/fork-a-repo)に詳しく記載がありますのでそちらを参考にしてください。

<img width="438" alt="スクリーンショット 2020-07-23 16.51.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670446/a8fa839a-9a7b-00a7-821b-26fd3e2e2b8f.png">
このForkをクリックしたら、自分のフォークに移動します。

<img width="364" alt="スクリーンショット 2020-07-23 16.52.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670446/f86dc785-d325-a53e-e7a3-28aea804bcf0.png">
ソースコードをクローンします。
今回はSSHを利用するので、Use SSH（SSHを利用）をクリックしてクローンしてください。

```ターミナル
$ git clone git@github.com:hoge/Covid19Radar.git
```
ただ、このままではプルリクを上げても自分のリポジトリにしかあがらない可能性があるので、大元のリポジトリと同期させます。

```
# まずは確認（念の為）
$ git remote -v
origin	git@github.com:hoge/Covid19Radar.git (fetch)
origin	git@github.com:hoge/Covid19Radar.git (push)

#上流リポジトリを指定する
$ git remote add upstream git@github.com:Covid-19Radar/Covid19Radar.git
upstream	git@github.com:Covid-19Radar/Covid19Radar.git (fetch)
upstream	git@github.com:Covid-19Radar/Covid19Radar.git (push)

# 再度確認
$ git remote -v
origin	git@github.com:hoge/Covid19Radar.git (fetch)
origin	git@github.com:hoge/Covid19Radar.git (push)
upstream	git@github.com:Covid-19Radar/Covid19Radar.git (fetch)
upstream	git@github.com:Covid-19Radar/Covid19Radar.git (push)

#このように大元のリポジトリのURLがupstreamとして表示されればOK
```
さて、これでフォーク先にpushしたら、大元にも同様にpushされるようになりました。これでプルリクを上げる準備が整いました。

#多言語化ファイルを探して英独翻訳

そうと決まれば、どのファイルを触るのか確認します。
とは言っても、[How to Translate application](https://github.com/Covid-19Radar/Covid19Radar/blob/master/HOW_TO_TRANSLATE_CONTRIBUTE.md)に詳しく書いてあるのですぐに分かりました。
触るファイルが分かれば、後は簡単です。

さすがにマスターブランチで作業するわけにはいかないのでブランチを切って作業します。

私の場合は多言語化だったので、`Covid19Radar/Covid19Radar/MultilingualResources/Covid19Radar.de.xlf`と`Covid19Radar/Covid19Radar/MultilingualResources/Covid19Radar.en.xlf`を編集しました。

私があげたコードは下記で見ることができます。
https://github.com/Covid-19Radar/Covid19Radar/pull/751
https://github.com/Covid-19Radar/Covid19Radar/pull/753
※もし間違いなど見つけたら、優しい方コメント下さい。笑

こうして編集が完了したら先程自分がたてたissueとつなげてプルリクをあげます。
後はマージされるのを待つだけです。

ともかく、これでOSSに貢献ができました！やったね！

# まとめ
今回、なにか出来ることないかな〜となんとなく思いついて行ったことでしたが、意外とOSSを触るのは簡単だとわかりました。また、私自身普段は一人で開発をしているので、このように他の人のコードに自分がプルリクを上げるという経験自体がとても楽しかったです。

まだマージされるかはわかりませんが、少しでも貢献できたというのが嬉しいです。

以前Twitterで開発の初期メンバーである@kazumihiroseさんが、文句ばかり言われるということを書いてらっしゃって、こんなに社会性の高いアプリを開発したのに、何もわかっていない外野の人たちに心無いことを言われるのかと思い、ショックを受けました。
それと同時に、せっかく日本のために技術力のある方々が慈善で行動してくださったのに、それが報われないのはあまりにも悲しいと思いました。

ただ、私自身どのようにその思いを伝えればよいかわからず、また技術的にも未熟なので私がバグを修正することもできず、もどかしい思いをしていました。そんな中、[あんはるさんの記事](https://qiita.com/Anharu/items/c00e882d678538be0ab0)を読んで私も簡単な貢献ならできるかもしれないと思い、行動してみることにしました。

私はそこまで大したことはできないのですが、この記事を読んでいろんな方々がこのアプリを改善していってくだされば良いなと思いますし、何もできなくても、関心だけでももって貰えればと思います。