OSSのバグから逃げずに進んだら2つ以上手に入った話
OSSにPRが取り込まれました
スターフェスティバル株式会社 エンジニアのDPontaroです。
先日OSSへPRを出し、無事取り込まれるという経験をしました。
なにげに初めてのことだったので、
自身が抱いていた印象と実際に取り組んでみた感想を記事に起こしてみます。
OSSコミットへのハードルを感じてる方への背中を押せる内容になっていれば幸いです。
遭遇したバグ
直近取り組んでいたプロジェクトではORMとしてPrismaを採用しています。
Prismaではテーブルの関係性をprismaというファイルで記述します。
このprismaファイルからER図を生成するprisma-erd-generatorというnpmパッケージを導入し
ER図のドキュメント管理を自動化しようと試みました。
ですが、特定条件化でプライマリキーが定義した名称と違うものが割り当てられるバグがあり
取り込みが一旦見送られました。
興味本位で調査を始めてみる
あまりやったことないし、しっかり実装読んでみるかーくらいで調査を始めました。
最初から”修正しよ!”という気持ちがあったわけではありませんでした。
まずはforkする
該当リポジトリのCreate new forkから自身のアカウントにforkします。
forkしたリポジトリは下記のようにforked from という表記になります。
実行環境を整える
コントリビュータ向けにドキュメントが用意されていたので
それに従って実行環境を整えました。
この辺りは全く手こずることはありませんでした。
OSSとして公開されているので、きちんと整備されているなぁという印象です。
いざコード確認
メインのtsは500行くらいで、そこまで大きなコードではありませんでした。
prismaファイルを解析して、リレーションを把握して図示する
という処理なので、妥当な量かと思います。
介入したことのないOSSの世界だったので
勝手に複雑で膨大なコードを想像してしまっていたようで、そのギャップに驚きました。
環境構築もテスト実行もさくっとできて、コード量も把握できるくらいの量、、
"これ、やれんじゃね?"
と思い、気づけば数時間後にはPRを出していました。
テストが用意されていたのもあり、自然と先にテストケースを書いて取り組むことができたのも良かったです。
PRを出してみた感想
- 勝手に膨大で複雑なコードという想像をしていた
- 凡人の自分には理解難しいんじゃないかという恐れ
- 大体海外製で、英語だし。
- やったことないものはだいたい怖い
といった理由からOSSにPR出すというのは、ハードル高い印象を持っていました。
ですが、実際に取り組んでみると
- 今回取り組んだものは、コードは現実的に把握できる量であった
- テストなども用意されており、仕様の把握などもしやすい
- PRの文章もDeepLの翻訳で問題ない
と終わってみると何を恐れる必要があっただろうかという印象になりました。
通常業務で他人のコードを読む、修正するというのは行っていることで、
対象がPublicな組織外のコードである、というくらいしか相違は無いので過剰な恐れだったようでした。
逃げずに進んだことで掴んだもの
OSSのバグから逃げた場合、
"自分のコードが非難されないという安心"
が1つ手に入ります。
ですが、今回進んで取り組んだことで
- OSSにPRを出したという経験
- 他のプロジェクトがどのような構成になっているかという知見
- huskyが使用されていたので、現行の開発プロジェクトにも取り入れました
- テストが仕様を把握するドキュメントの役目を果たしており、テストの仕組みを用意する重要性を再確認
- 一度取り組んだことで今後もOSSバグに遭遇しても自分で修正できるという武器が手に入った
- こうしてブログとしてアウトプットにもつながる
と、2つ以上のものを手に入れることができ良いことづくめでした!
逃げたら1つ、進んだら2つ以上、です!
また、OSSへの取り組み方について調べている中でこういうのも知りました。
恐れず進んでみましょう!!
採用にも進んでほしい(切実)
課題は尽きず、エンジニアがまだまだ足りておりません!!
ご応募お待ちしております!
ウェルウェルカムカム!!
Discussion