KitchHike Tech Blog

KitchHike Product, Design and Engineering Teams

OSSは“別世界“。その思い込みは、自らのPull Requestで変わった。


WheneverというOSSにPull Requestを送り、マージされた話

キッチハイクでインターンを始めて、135日。
エンジニア人生初、オープンソースにPull Request(プルリクエスト)を送りました。
GitHubにあるOSSコミュニティは「特別なコミッターたちが集う、別世界」。そう眺めていただけの私が、勇気をもって踏み出してみると、そこには文字通りの「開かれたコミュニティ」がありました。


OSSコミュニティは、手の届かない存在?

みなさんは、OSS開発についてどう思っていますか?
「数多のすばらしいコミットのおかげで、日々開発できています!」「特別な技術がないと、関われない」…こんなイメージを抱く方、少なくないと思います。すごく、分かります。

f:id:izmipo:20180118133523p:plain
OSS コミッターは遠い存在、というイメージ
イラスト素材はぴよたそ

そんな私がこのたび、OSS開発に貢献するというビッグイベントがありました!まさか、こんな日がくるなんて。
大学院を休学して、未経験でキッチハイクにインターンエンジニアとして飛び込んでから約5ヶ月。まだまだ初心者プログラマです。

今回は、そんな私がOSSコミュニティに少しだけ貢献したストーリーをお話します。超えられないくらい高く見えていたはずの壁も、乗り越えた後に振り返ってみたらそこまで高くなかった。思い返せばよくある話ですが、OSSコミュニティへの貢献も決して例外ではありませんでした。
『そうは言っても、Pull Requestなんて敷居が高くって』という方。今日にも 「ちょっと世界を良くしてみようかな」 という気持ちを、行動に移せるかもしれません。


READMEには、私がほしい情報はなかった

事の発端は、cronジョブの実行タイミングに関するリファクタリングでした。

every 1.day at: "6:00 am" do
  runner "Cron::run_hogehoge"
end # これを3:00 pmにも実行したいなあ

# 以下を追加
+ every 1.day at: "3:00 pm" do
+   runner "Cron::run_hogehoge"
+ end # コードが重複している...

これは、 whenever という有名なRubyGemsを導入して書いています。 重複を避けるために、 at で複数の時間を指定できたらいいなあ…と思ったものの、公式のREADMEには、該当するドキュメントは存在しておらず。

そんななか、関連する話題で issue を発見! このissueのおかげで、 at にarrayを渡せるということが分かり、課題は解決しました。
一方で、「(解決できて)よかった」という気持ちよりも、 「私とおなじように困っている人がいるんだ」 という気持ちを強く抱きました。

every 1.day at: ["6:00 am", "3:00 pm"] do
  runner "Cron::run_hogehoge"
end # at には、arrayを渡すことができる!


ここで、CTOがひとこと。
「せっかくだから、READMEにプルリクを送ってみたら?」

f:id:izmipo:20180119151041p:plain
😳!!!


OSSコミュニティへの貢献方法は、コードだけではない

今回のPull Requestにおける修正対象は、ドキュメントです。つまり、私が修正した事でgemの動きが変わる!なんてことはありません。
それでも、これからwheneverを使用するプログラマが課題に直面したときに、私が修正したドキュメントを読むことで救われるかもしれません。となれば、これはりっぱな貢献です。


Pull Requestを送るときに意識したい、3つのこと

背中を押していただき、いよいよPull Requestの作成です。
ここでは、具体的な手順よりも、私がOSSコミュニティに初参加する上で意識したことを "3つ" お話します。

1. 参加コミュニティの文化・慣習を理解する

プログラミング言語に慣習が存在するように、OSSコミュニティにも慣習が存在します。先人たちが築き上げてきた文化に則って開発することは、彼らへの敬意を表すことそのものです。

2. 体温のあるコメント

たとえ拙い英語でも、礼儀正しいPull Requestを送れば、きっとレビュワーは快く対応してくれるでしょう。 丁寧なコミュニケーションは、初心者・上級者によらず意識すべき、大切な姿勢です。

3. 自分の貢献が、誰かのためになるという確信

「この1行があったら、もっと開発しやすいのに。」
開発に携わるなかで、こう感じた場面はたったの1、 2回? なんてことはないと思います。
あなたが感じていることは、きっと他の誰かも感じているはず。実際に改善しよう!と行動に移せるか否かのちがいは、自分自身の判断を信頼できるか、ではないでしょうか。


無事、マージされてcontributorsの一員に!

実際に私が送ったPull Request です 。

f:id:sfujisak:20180119191442p:plain

前述のarrayに加えて、シンボルの表記にも言及してみました。

- :at => '4:30 am'
+ at: '4:30 am' 

はやくコメントがくるといいな〜とソワソワしていたのもつかの間、マージ権限をもつbenlangfeldさんから、早速コメントが返ってきました。

f:id:izmipo:20180117182241p:plain


内容は "コメントにある具体例が、READMEの内容としては複雑すぎるし特定用途向けすぎる" というものでした。ただ、私はもう、コメントがきたというだけで大興奮。すぐに、該当箇所を修正してコミットします。

結果、なんとPull Requestを送ったその日にマージされました!

f:id:izmipo:20180118152641p:plain
Merged 🎉🎉🎉


「こうすれば、世界はもっと良くなる」は、スタートアップそのもの

今回WheneverにPull Requestを送ったことで、こんな小さな修正でも、私は OSSコミュニティの世界に貢献した という経験を手に入れることができました。

私は「未来に生きる、多くの”誰か”に貢献したい」という気持ちは、スタートアップの存在意義そのものだと思います。
実際キッチハイクには、キッチハイクが存在する世界は、今よりもずっといい。と確信を持って行動する仲間ばかりです。また、今回のPull Requestのように、仲間の貢献を心から応援する文化があります。

『これなら、私にもできそう』と思った多くの方。
ぜひ今日から、世界を良くするための一歩を踏み出してみてください。
この投稿が、あなたのOSS開発デビューの一助となることを、切に願っています。


キッチハイクでは、エンジニアのOSSへの貢献活動を推奨しています。Railsエンジニア & React Nativeエンジニアを絶賛募集中です!

www.wantedly.com

www.wantedly.com