はじめに
こんにちは。広告技術部のjohnmanjiroです。普段は広告配信のAPIや管理画面を作っています。
今回は最近自分が始めたOSS活動のやり方について紹介しようと思います。 issueを見つけたその日にプルリクを出し、約1週間後にマージされました。
「OSS活動始めたいけど、別に普段使ってる中でバグを見つけたりもしてないし、貢献したい明確なOSSもない、どうしよう🤔」そんなOSS活動未経験者の参考になれば幸いです。
ちなみに自分自身、活動を始めたばかりのペーペーです。
Github Help Wantedでissueを選ぶ
OSS活動を始めるにあたって、まずは貢献するissueを選びましょう。issueを解決することで、自分でバグを見つけたりしなくてもすぐに貢献できます。
もちろん貢献したいissueがすでに決まっていれば問題ありません。
しかし、「OSSっていっぱいあるしどこから目をつければいいのかわからない🤔」 という方も多いと思います。
そんな場合におすすめなのが、Github Help Wantedです。
このサービスでは、実装されている言語とラベルでGithub上のissueを検索することができます。OSS活動を始める場合、以下のようなラベルがおすすめです。
- easy
- help wanted
- good first issue(初めてのコントリビュートに良いissue)
今回はGo言語で実装されているリポジトリの中で、good first issueに絞り込んで検索しました。
そして選んだリポジトリがこちら。
https://github.com/philips-labs/tabia
GithubやBitbucketのリポジトリ等の情報を出力するCLIです。issueは、実行時にリクエストURLを表示する --verbose
オプションをbitbucketコマンドに追加したいというものでした(すでにgithubコマンドには追加済み*1)。
github.com
OSSのコントリビュート方法を確認する
実装に入ったりプルリクを作る前にOSSのコントリビュート方法を確認します。 OSSにはコントリビュートする際のルールが定められているものが多く、大抵READMEにリンクがあったりします。 中には規約に同意することが必要なOSSもあるので、最低限確認しておきましょう。
今回の場合はREADMEには見当たりませんでしたが、プルリクを作成する際のテンプレートにリンクが書かれていました。
実装
いよいよ実装に入ります。もとのリポジトリを直接cloneしてしまうとpushできないので、必ず自分のアカウントにforkしてから実装しましょう。*2
既存コードの動作確認
まず既存のリポジトリが正常に動作することを確認する必要があります。 そのため、READMEを参考にセットアップ、ソースコードをビルドし、コマンドが正常に実行できることを確認しました。
機能実装
次は実際に機能を実装していきます。テストも含め、コードには自分なりの書き方があると思いますが、他のコードとの親和性も考え、リポジトリのスタイルに則って実装するようにしました。
issueにも書いてありますが、今回はすでにgithubコマンドに同様の実装がされていたのでそれを参考にしました。
実装後、コードを改めてビルド・実行して、--verbose
オプション指定時にリクエストURLが出力されていることを確認しました。
プルリクを出す
実装が終わったらプルリクエストを出します。ここでもOSSごとにテンプレートがあったりするので、その場合はそれに則りましょう。 以下が、実際に今回出したプルリクです。
https://github.com/philips-labs/tabia/pull/38
マージされる
プルリクについたコメントに対応したりしつつ、無事マージされたら終わりです。お疲れ様でした!
最後に
今回自分でissueを探すところからやってみて、OSSに対する苦手意識がかなり薄れました。実は今回対応したissue以外にもプルリクを送ったりしています。
OSSって自分が思っていたよりもっと気軽にissueやプルリクを送っていいし、それに対してみんな温かく迎え入れてくれます。技術的に強い人はいっぱいいますが、むしろそういった人たちからレビューを受けれるのはいい経験だと思います。
今後としては、普段使っているOSSでもバグじゃないものの気になる部分があったりしたので、それをissueにしてみるのもいいかなと考えたりしています。 普段自分が作っているものだけじゃなく、使っているものに対してもより関心を向けることができるようになったのが今回の一番大きな収穫かもしれません。
もしOSS活動をやってみたいと思っている方がいれば、ぜひやってみてください。ぼくは今後もOSS活動を続けていきます!