PHPの業務経験6ヶ月で初めてOSSにContributeした話
注) これはポエムです。
背景
エンジニアとして働き始めてから、OSSへのContributionに強いあこがれがあったが
- ヨワヨワエンジニアの自分がOSSのコードなんていじれるのだろうか
- そもそもOSSのコードに自分が介入する余地なんてないんじゃないか
なんて考えていた。
しかしやってみたら心配は杞憂だった。
OSSにContributionしたいと思っている人の参考になればと、自分がやったことをメモ。
筆者のスペック (当時)
- エンジニア歴 1年半
- PHP, Laravelの業務経験 半年
Contributeまでの軌跡
業務でとあるOSSを使う
LaravelにはExcelファイルをインポート、エクスポートできるLaravel Excelというライブラリがある。
業務で開発中のプロジェクトでこれを使う機会があったのだが、これが結構よくできたライブラリで[1]、とても簡単にExcelエクスポート機能等を実装できる。[2]
キャッチアップを兼ねてサンプルアプリを作成する
よくできたライブラリなので使いまくったら学びがあると思い、Qiitaの記事等に使用方法をまとめた。
記事を書く際は、サンプルプロジェクトを作ってGithubにコードをアップし、手を動かすことを心がけた。
おや?バグか?
ドキュメントに従って実装しテストコードを書いていると、仕様を満たしているのにエラーになるアサーションメソッドを発見
// 何故か正しくアサーションしてくれない
Excel::assertQueuedWithChain([
new NotifyUserOfCompletedImport($user, $file->getClientOriginalName())
]);
Maintainerに質問する
いくらコードを見直しても正しくアサーションしてくれないので、GithubのdiscussionでOSSのメンテナに質問。
4〜5時間程度で回答がありました。
え? その方法ではアサーションしてくれないんすか???
誰も直さないので直す。
簡単にいうとテスト用アサーションメソッドの実装漏れで、誰が気にすんねん的な機能だった[3]が、
**もしかして今がOSSにContributionする絶好のチャンスなのでは?**と感じて直す。
ちなみに修正自体は決して難しいものではなく20行程度のもの。
より細かい手順はこんなかんじ。
- 対象のリポジトリをforkしてclone
- Contributingガイドラインの確認
- テストが動くように環境構築
- テストコードの追加
- 修正
-
phpunit
で確認 - 念の為、手動でも確認
テスト用DBの用意や古い依存関係の解決など、テストコードを動かすための環境構築が結構大変だった。
またContributingガイドラインではContributionのルール等が細かく書かれており
- コミュニケーションを取る上でのエチケット
- 機能追加時には本当にその機能が必要とされているか
- バグ報告のやり方
など非常に勉強になることが多く書かれていた。
PRの作成
PRの要件を確認すると
- テストコード必須
- ドキュメントへの追記
- クリーンなコードへの配慮
- PRの粒度
などに言及があるので、それぞれの要件を確認。
また過去に出されたPRの中で丁寧に書かれているものをベースにし、PRを作成する。
PRを出す
いよいよ修正のPRを送る。(めっちゃ緊張しました。
1時間程度であっけなくマージ完了。
感想
修正自体は意外にあっさりしていて、プロジェクトの作法的なところをキャッチアップするのに時間がかかりました。
でも無事にマージされたときは自分でも驚くほど嬉しかったです。
もちろん修正内容は大したことないしライブラリの根幹となる機能でもないですが、やはり自分のコードが世界中に配布されるという事実は自分でも驚くほどの高揚感をもたらしました。
あとドキュメントを読み込むので必然的にtypoに気づきやすくなります。
(ドキュメントの修正PRも出せる)
結言
よわよわエンジニアでもそこそこ規模のあるOSSにContributeできたので、同じようにContributeしたいと思っている方の参考になれば幸いです。
-
自分比 ↩︎
-
詳しくはdiscussionを参照いただきたく。 ↩︎
Discussion