Tech

OSS に対してはじめてコード修正のPRを出してmergeされた

TL;DR

ひょんなことからstorybookへbugfixのPRを出してマージされた感想とかついでに得られた物。ポエムか日記にきっと近しいです。
Readmeの修正は何度か経験がありましたが、コードに対してOSSへコミットするのは初めてでした。

issue: https://github.com/storybooks/storybook/issues/3657
PR: https://github.com/storybooks/storybook/pull/3660

経緯

エラーに遭遇する

この自サイトと似たようなセットでなにか作りたいなーと考えたときに
「nuxtもnuxtを初期設定してからさらにいつも使うやつセットアップするはめになるよな…」
と思い、nuxt-oreore-starter-kitというのを個人的に作ってました。

しかしながらほぼほぼこのサイトと似たようなパッケージだったにも関わらず、エラーを吐き始めました。

原因調査

調べてみると storybook が prettier のバージョンアップ(v1.13.0)によってエラーを吐いていました。
原因的にはprettierがbreaking changesに近しい物をオプション周りで入れたのでその影響でした。
タイムリーに調べたり、各情報を見ていた所、かなりのライブラリに影響を与えていたようです。

このエラーについてはprettierが翌日くらいにエラーをwarningにするという修正(v1.13.1)をリリースしていましたが、
warningの内容からも将来的には再度エラーにするということでしたので、対応が必要そうだったのでたまにはOSSに貢献しようという謎のノリでissueを立てることにしました。

issueを立てる

ある程度原因調査もしてローカルで修正もして修正が確認ができたのでissueを立てよう、と「New Issue」を押したら英語のオンパレードで気が遠くなりました。

new_issue.png

英語はドキュメント等の読むはまだしも、話す、書くとなるとかなり学力的に苦手意識がありました…。

いやしかしながらせっかく調べたしちょっとOSS活動という名の何かをしたいなと思ってGoogle翻訳という相棒と共に、issueを書き上げました

issue.png

PRを立てる

今回の問題の原因調査&修正候補はこの1行の修正でした。

first-pr.png

なのでこれならさくっとmergedされて終わりでしょうねと思って勢い余ってPull Requestも立てておきました

そんな甘くなかった…

PRを立てたものの今では最悪だと思いつつ本当に軽い気持ちで立ててしまったのでCONTRIBUTING.md等を読んでいませんでした。
なのでテスト等もしておらず…な状態で当然テストがこけて指摘が入りました。

修正

ローカルでちゃんとテストを行ったところPrettierのv0.13.0で別の場所(parserの構造)にも修正が入っており、それをstorybookでは利用していて、そちらでもエラーを吐いていました。

これは結構な誤算でPrettierの実装コード等も見にいく必要があり、Prettierのコードも少し読むことになりました。
それを発見したのを伝えつつ修正とテストを終えたところコードに対して今度は指摘が入り何回かというか私的には修正の割には結構な数やりとりしつつなんとか修正しました。

とはいえ指摘自体はドキュメントへのリンクがちゃんと貼ってありかなり手厚かったです。

途中ちょっと指摘に対して「これで良いと思うのだけど?いや違ったら修正します」的なことを返したりしていたので相手が怒ってないか途中から心配しまくりでした。

マージ

なんやかんや色々あって正直若干途中で心が折れそうになりましたが、何かここまで手を付けたのに途中で投げ出すのもどうかと思ってなんとかマージまで辿り着きました。
ドキュメント系はなんどか修正したことがありますが、コードに対しては初めてで、何か違う喜びがあり、嬉しさ爆発でした。

おわりに

よかったこと

  • 英語力はないと厳しいとは思いつつも内容によっては完璧な英語は話せずともなんとかなるという実績を得られた(とはいえ迷惑はかける…)
  • レビュー品質とかそういう類は結構ちゃんとやってくれるしレビューしてくれる人が対応したほうがもはや早そうでもやらせてくれる
  • これも内容によってしまうものの簡易なbugfixとかは恐らく自分レベルでも貢献できるという精神を得た
  • その後気になってみていたらパッケージアップデートを自動でbotがバージョンアップしてPRを立てるという方法をしていてその仕組みを調べたら結構簡単だった
  • dependencies.ioを使っていて、CIのテストを組み合わせるといい感じにライブラリアップデートが回りそうだった)
  • 上記のような環境面で結構モダンな環境でやっていたのでプロジェクト設定周りの気付きが多かった
  • 上記のようなライブラリをDLしてドキュメントを見ているだけではきっと得られなかった何かを得た
  • 質感の違う環境でコードを書けるという嬉しさと楽しみを感じられた(OSSもっと関わりたいと思った)

わるかったこと・反省

  • あまりにもPRを出すのが気軽すぎた。その後仕事で適当PR出さんでーと思ってしまいブーメランが直撃
  • 英語力が圧倒的に足りない(文脈とかが読み解けない、もしくは読み解けているか自信がない)
  • コード力ももっと重い何かをやろうとしたら足りないだろうなと思った

まとめ

結論的に言うとノリで勢いで始まり迷惑はかけてしまったという自責部分はあるものの、自分一方から見た場合は色々得られる物が多かった。
簡単なものでいいから使ってるやつはちょこちょこ手を出していければと思います!

そしてこれが始まりでした…的なことをどこかで言えたらいいなという妄想

嬉しい!

contributors.png

share