COCOAにコントリビューターとして貢献しよう！

[COCOAにコントリビューターとして貢献しよう！～実践編～](https://qiita.com/Murayu0225/items/c709872fff0a8c5b5fce)を作成しました。PC上でのCOCOAのビルド方法について細かく解説してます。（2021年8月24日 追記）

**当記事の内容は、政府IT室CIO補佐官からの了承を得て投稿しております。**

本日は、COCOAについてです。OSSとして少しずつ進んでいると思うので貢献方法について少しでも解説できればと思います。
**Xamarinとか楽々書けるけど、どうしたらCOCOAに対して貢献できるかを書いています。**

## 自己紹介
都内の高校（普通科）に通っている高校3年です。OSSに興味があります。

作成したもの

- Google Assistant用のアプリ（2回作りました）
- [相模原市 新型コロナウイルス感染症対策サイト](https://sagamihara-stopcovid19.com)
- ブログ（WordPressですが）

コントリビューターとして貢献した(している)もの

- COCOA
- 東京都 新型コロナウイルス感染症対策サイト

## COCOAとは
COCOAは、COVID-19 Contact-Confirming Applicationの略称です。日本語名で言うと、新型コロナウイルス接触確認アプリになるそうです。（参照：[厚生労働相 COCOAホームページ](https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/cocoa_00138.html)）
COCOAと言えば、下記のようなニュースで話題となりました。（AMPリンクです）

https://www.google.com/amp/s/www.yomiuri.co.jp/national/20210203-OYT1T50240/amp/

上記の件については、5か月前(記事作成当時)のGithubにあがった[Issue](https://github.com/cocoa-mhlw/cocoa/issues/14#issue-749853095)にて判明したようです。

日本では最近、COCOAのオープンソース化が進んでいますが、ドイツでは、[こんな感じ](https://github.com/corona-warn-app)でばりばりのオープンソースとして意見をたくさんだして実装しています。日本でもこのぐらい活発になるといいのですが笑
日本でもオープンソースとしてコロナ禍で話題となったのは、[東京都 新型コロナウイルス感染症対策サイト](https://stopcovid19.metro.tokyo.lg.jp/)でしょうか。私自身も幾度か貢献をしました。また、私の住んでいる[相模原市版](https://sagamihara-stopcovid19.com/)も作成しました。東京都の方は、かなり[オープンソース](https://github.com/tokyo-metropolitan-gov/covid19)として活発だと思います。

## 貢献してみよう
COCOAのGithubリンクは、下記のものです。

https://github.com/cocoa-mhlw/cocoa

あまり、動きはありません。連携が悪いのか良くわかりませんが、上手に活動しているようには感じません。


### a.Issuesからできそうなものを探す
Githubには、Issuesというところにtypoやバグなどいろいろ集まります。また、Issuesにはラベル付けがされています。（下の写真て赤色に囲っている部分のことです）初めての方は、**good-first-issue**とラベル付けされているIssueをおすすめします。ラベル付けについては、[CONTRIBUTING.md](https://www.github.com/cocoa-mhlw/cocoa/tree/master/CONTRIBUTING.md)内にわかりやすく書いてあります。少し書いておくと、*welcome-contribution* や *help-wanted*のラベルがついているIssueは、担当してくれる方を探している状態になります。自分のできそうなIssueを見つけることができたらそのIssueにコメントで「対応します」など、わかりやすく書きます。書いたら次のステップに進みます。（もちろん、不明点があったらコメントで質問したり、議論に参加したりできます。）
![label](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527236/6b58d66c-f6b1-cbe1-a128-0331f5d2ea53.jpeg)

### b.PRを作成するまで
担当するIssueが決まったら、その部分の修正をします。まず、自分のアカウントにforkします。
![fork](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527236/91946587-715d-8326-e769-8176ed078302.jpeg)
**Tips**
forkしたらmasterなどといったデフォルトブランチで作業するのではなく新しく#Issue番号/fix-(修正内容)と書いた新規ブランチで作業することをおすすめします。（この内容は、COCOAのCONTRIBUTING.mdのどこにも書かれていませんが、一般的にはそうした方が良いと思います）

修正が完了したら、PRを作ります。PRの提出は、[自分の作成したブランチ]→cocoa[develop]になります。PRのテンプレートが事前に指定されているのでそれに沿って記入していきます。（不要なところは、削除してしまって大丈夫だと思います）ちなみに、一番最初にあるIssue番号には、担当したIssueの番号（Issueの題名の横に書いてある番号）を記入します。ここに記入したIssue番号は、PRがマージされたときに自動的にクローズとなります。

PRの作成が完了したらレビューを待ちましょう。レビューにて指摘（変更など）があった場合、先ほど作成したブランチでそのまま作業をすれば、自動的にPRも変更されます。

レビューで承認（approved）となったら完了です。その後は、運営側がマージしてくれるのでマージされたら次のアップデートであなたの変更が加えられます！（たぶん（本当にこちらのPRがそのまま加えられているかは、不透明です））

こんな感じになっています。以外と簡単にできます。

### c.翻訳について
~~言語を編集する場合、日本語以外の数か国語に対応しているCOCOAでは、別言語への翻訳も必要とします。翻訳については、COCOAの[wiki](https://github.com/cocoa-mhlw/cocoa/wiki/%E5%A4%9A%E8%A8%80%E8%AA%9E%E5%AF%BE%E5%BF%9C%E6%99%82%E3%81%AE%E6%96%87%E5%AD%97%E5%88%97%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AE%E8%BF%BD%E5%8A%A0%E3%83%BB%E5%A4%89%E6%9B%B4%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)に細かくかいてありますので、そちらを参照してください。[Multilingual App Toolkit](https://docs.microsoft.com/en-us/windows/uwp/design/globalizing/use-mat)を利用しているそうです。~~
現在は、廃止されています。

## Issueを作成する
バグやtypoを発見した場合は、Issuesに投稿します。（機能リクエストもできます）Issuesに投稿する場合、COCOAのリポジトリからIssues→Newを選択して作成します。2つの投稿方法[バグ報告,機能リクエスト]があるので、どちらかを選択します。技術的なもの以外は、ここからできないので注意してください。
Issuesには、細かく事象を記入して送信します。時間がたつと何かしらのコメントがつくのでコメントを待ちます。作成したIssueに*welcome-contribution*や*help-wanted*のラベルがついた場合、やるという意思をコメントにて記入して、先ほどと同様にPRを作成してマージされるのを待ちましょう。Issueを提出したら提出した人が修正をしないといけないというわけではありません。（もし、Issueに関して詳細（実行方法など）を聞かれた場合は返信をした方が良いです）

## 最後に
上記のようにしてCOCOAに貢献することができます。まだ、判明していないバク等があるかもしれません。発見した場合は、Issuesに投稿しましょう！出来そうなIssueがあればPRを出してみるのも良いかと思います:grinning:

*この記事の意見に関しては、全て個人の考えです。*

---

追記内容

(4月23日)

- 自己紹介文を追加しました。
- welcome-contributionとなっているIssueを紹介しました。
- 一部の文章を書き換えました。

(6月3日)

- デフォルトブランチがdevelopに変更されたため、ブランチ名を変更しました。

（6月7日）

- developブランチがまだ作成されていないので、それまではmasterにPRを提出することがわかるように追記しました。（Twitterでのご指摘ありがとうございます。）

（7月20日）

- developブランチにPRを出すように変更しました。
- 翻訳に利用していた機能が廃止されたため、追記しました。