こんにちは、Yuiです。
あんはるさんのJKが接触確認アプリ「Cocoa」の開発に貢献した話。〜1日でXamarinを学びアプリ改善〜をご存知でしょうか。
こちらを見て、何か私もできないかと思い、今回Cocoaの改善に挑戦することにしました。
前提
接触確認アプリ「Cocoa」はOSS(オープンソースソフトウェア)なので、ソースコードが公開されており、誰でもソースコードを見て変更依頼を上げたりすることができます。
私は技術力的には大したことはできないのですが、ちょっとした翻訳や文の修正(typoなど)ならできるかと思い、今回OSSをはじめて改善することにしました。
行ったこと
- GitHubとSSH接続
- 出来ることを探した
- 設定
- 多言語化ファイルを探して英独翻訳
GitHubとSSH接続
はい、お恥ずかしながらGitHub使いはじめて約1年半、まだSSH接続していなかったので、今回OSSを触るにあたってSSH接続することにしました。
GitHubにssh接続できるようにするを参考に行いました。
まずは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接続できるようにするを見てもらえればわかりやすいと思うのでここではあまり取り上げませんが、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を1日で勉強したと書いてたけど、私も出来るかな〜と、環境構築して、公式のドキュメントを読みました。
大体半日ぐらいにらめっこして、なんとなくソースコードが何を書いているのかは理解できました。
ですが、これは貢献できるレベルじゃないと思い、レイアウトの調整に関してはさっさと諦めました。笑
その上で、何が出来るかREADMEを読みながら探していたら、
私たちは現在、機械翻訳結果の確認レビュアーを募集しています。詳しくは How to Translate application をご確認ください。
この一文が。
私は英語・ドイツ語は多少わかるので、これだ!!と思い、早速多言語化の面で貢献することに決めました。
ただ、他に同じ編集をしようとしてる人がいてはいけないので、issueを見て誰も上げていないことを確認します。
他に編集者がいないことを確認したら、「私がこれやります!」という宣言のためにissueをたてておきます。
設定(フォーク、クローンなど)
早速リポジトリをフォークします。
もしフォークしたことがないという方は公式ドキュメントに詳しく記載がありますのでそちらを参考にしてください。
このForkをクリックしたら、自分のフォークに移動します。 ソースコードをクローンします。 今回は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に詳しく書いてあるのですぐに分かりました。
触るファイルが分かれば、後は簡単です。
さすがにマスターブランチで作業するわけにはいかないのでブランチを切って作業します。
私の場合は多言語化だったので、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さんが、文句ばかり言われるということを書いてらっしゃって、こんなに社会性の高いアプリを開発したのに、何もわかっていない外野の人たちに心無いことを言われるのかと思い、ショックを受けました。
それと同時に、せっかく日本のために技術力のある方々が慈善で行動してくださったのに、それが報われないのはあまりにも悲しいと思いました。
ただ、私自身どのようにその思いを伝えればよいかわからず、また技術的にも未熟なので私がバグを修正することもできず、もどかしい思いをしていました。そんな中、あんはるさんの記事を読んで私も簡単な貢献ならできるかもしれないと思い、行動してみることにしました。
私はそこまで大したことはできないのですが、この記事を読んでいろんな方々がこのアプリを改善していってくだされば良いなと思いますし、何もできなくても、関心だけでももって貰えればと思います。