はじめに
私はエンジニア3年目ですが、新卒でエンジニアになったときからいつかはOSSにコントリビュートしてみたいという目標がありました。
そしてついに、普段お世話になっているリポジトリや機能に対してコントリビュートできたので、その背景をまとめたいと思います。
コントリビュートの内容
マージされたPRは、以下です。
リポジトリは、Composerです。
PHPを使っている方ならお馴染みの、パッケージ管理ツールです。
モダンなPHP開発では、ほぼ必ず用いられるツールです。
筆者も業務でPHPとLaravelを使って開発をしていますが、毎日当たり前のようにComposerを使っています。
コントリビュートの内容は、テストコードの追加です。
self-updateコマンドという、Composer自身のバージョン管理を行えるコマンドがあるのですが、そのコマンドのテストケースをなにもない状態から作成しました。
カバレッジは、40%くらいまではもっていけました。
もう少しカバレッジを上げようとしたのですが、私の実力ではこれ以上やろうとすると結構時間がかかってしまいそうだったので、一区切りつけてPRを出しました。
コントリビュートチャンスを見つけた方法
Good First Issueというサイトで見つけました。
OSS活動初心者向けという意味合いのgood first issue
というラベルがついたIssueの中で最近動きがあったものを言語ごとにまとめてくれているサイトです。
私はこのサイトを知ったのが2ヶ月前くらいなのですが、それから何日かに一回はこのサイトを見るようにしています。ある日、このIssueが掲載されているのを見つけました。
コマンド系のテストコードのカバレッジ全然足りてないから、どんどんテストコード書いてくれ!というIssueですね。
テストコードの追加なら、自分にもできそうだと思いました。
業務でもちょうどテストコードの導入に向けてPHPUnitを調査していたので、アウトプットしてみたいという気持ちもありました。
普段業務で頻繁に使っているself-updateコマンドにまだテストコードが存在しないことを知り、このコマンドのテストを書くことにしました。普段使っておりコマンドの挙動がわかっているため、テストも書きやすいのではないかと思いました。
マージまで進んだ背景
テストコード自体は、仕事終わりに書き進めて、大体3日くらいで形になりました。
念入りにセルフチェックをして、 PRを出しました。PR出すときはほんとに緊張しました、、。
2週間ほどして、2つ指摘をいただきました。
1つ目の指摘は、PHPUnitのdata providorを使ったほうがきれいに書けるよというものでした。おっしゃる通りです、、。
2つ目の指摘は、どのファイルにも書く定型文をちゃんと書いておいてねーというものでした。見逃していた、、。すみません。
修正をしてから、マージしていただきました。PRを出してからマージまで、待ちの時間込みで約1ヶ月でした。
おわりに
エンジニアとして一つ目標としていたことが達成できて、素直に嬉しいです。
自分の書いたコードは少しとはいえ、Composerの一部として全世界のPHP開発者の元に行き届くと思うとちょっとだけ誇らしくなります。
また、最近Composerは大規模な脆弱性のパッチ対応が行われました。
その対応としてComposerのバージョンアップを行う際、self-updateコマンドは結構世界中で叩かれることになるコマンドだと思います。その動作安定性向上に少しでも寄与できたのかなと思うと、やってよかったなと思いました。
Good First Issueのサイトは、OSS活動に興味がある人にとてもおすすめです。
対応できそうなIssueがないか、これからも定期的にチェックしていきたいと思います。