はじめに
この記事はMicroAd Advent Calendar 2017の7日目の記事です.
先日,「AkkaにPull Requestをあげようハッカソン」に参加してきまして,その際に初めてOSSにコミットができました.夢のOSSコミッタとして初めて活動できたことへの感動をここに書き留めさせて頂ければと思います.
AkkaにPull Requestをあげようハッカソンとは?
akkaというScala/Javaエンジニアにはお馴染みのOSSにプルリクエストを送ってみましょう!という趣旨のイベントで,限られた時間内にコントリビュートすることが目的なハッカソンです.
「ScalaMatsuri」(日本のScalaカンファレンス)の運営の方々の主催で,凄腕エンジニアの手厚いサポートの元,参加者は安心して開発に取り組めるという夢のような環境でプログラミングが出来ます.
憧れのOSSコミッタになれるかもしれない・・・ということで僕はconnpassで発見した瞬間に即申込みしました笑
ちなみに,今回のイベントはScalaMatsuriの本番に先駆けてのテストイベントみたいな位置づけのようです.
何をどうしていいのか分からない前編
会場に着くと,Scalaエンジニアが一杯いて感動しました.最初に今回のイベントの趣旨や進め方を聞いて,ほどなくして開発時間に移行します.開発時間に出来る限りの時間を割いてくれるのはすごく嬉しいですね.
ということで
- 「issueを見つけること」
これがコントリビュートへの第一歩だと教わりました.
help wantedというタグがついたissueは簡単に修正できるようで,早速issue探しを始めます.
- 「issue見ても分からない・・・」
緑色のタグがついてるがhelp wantedなissueなのですが,どれもこれも,何をすればいいのか良くわからないという・・・それもそのはずで,ある程度はakkaの内部実装を知っている前提でissueは書かれているので,経験値も少ない僕にとっては全くピンと来ないのでした.
ただし,そんな事は運営側の想定内.僕みたいな哀れなエンジニアのために事前にいくつかのissueをピックアップしてくれており,大変助かりました.
issueが決まって開発に取り組む中編
↑のissueを紹介してもらったので,それを解決することを目指すことにしました.内容としては,「リソースが使用中かどうかの判定処理が必要だよ!」という感じです.
これは確かに簡単そうだ!と思いましたが,いざコーディングしようと思うと,一体全体これでいいのか?!という不安にかられます.事前にコーディング規約を読むべきだったなぁと反省です.
ともあれ,開発中はスタッフの方に質問させて頂きながら進めました.ペアプログラミングをやって頂けるので非常に勉強になりました.
- 「ペアプロってすごく良い・・」
としみじみと感じました.
プロダクションコードの修正は簡単なのですが,どうやらテストの修正が難易度が高く,そちらに多くの時間を費やしていきました.そして,スタッフの方々の多大なサポートのもと,無事時間内に修正は完了しました.
本当にプルリクエストを送れてしまった後編
修正は僅か数十行ですが,issueの解決に無事成功し,テストも全件パスしていよいよプルリクを送る時間がやってきました.そして,レビューはその場でしてもらえるというスピード感.嬉しすぎます.
イベントに参加する前はまさかプルリクを送れるとは思っていなかっただけに胸の高鳴り,高揚感がこみ上げてきて幸せ指数の高まりを感じました.
そして,CIツールの便利さを改めて実感.自動でプルリクにラベルの付け替え,テスト,レビュー可否などを視覚的にも表示してくれる機能は便利過ぎですね.
そして,複数のレビュアの方に見て頂いて,そこで様々な議論がなされる様をまじまじと見ていて感動の一言.
議論の話について行けてない僕が質問をしたところすごく丁寧な回答をもらって感涙です.
↓質問して超丁寧な回答を頂く様
おわりに
数日後,無事にmasterにマージされて,遂にOSSコミッタの第一歩を踏み出した感じがしました.このイベントの主催の方々やスタッフの皆さんには圧倒的感謝です.そして,OSS開発ってすごくいいな.と感じました.
普段は会社内のプロジェクトと個人的な開発をするだけですが,OSSに参加することで,全く新しい知見が得られますし,issueを通した議論は個人的にはめちゃくちゃ楽しいです.
何より普段使っているライブラリに自分の手が加わったという感動は何にも代えがたい経験になりました.
何気なくOSSのコミッタになりたいなぁとか思ってたことはありましたが,実際に行動したことで,OSSのコミットに対する欲求が高まるのを感じています.
この感動を忘れないよう,これからはOSSのコントリビュートを積極的に進めていきたいと思いました.