not good but great

プログラミング、アート、映画・本の感想について書きます。

ショボいPull Requestを積み重ねて、自分の中でOSS活動の敷居を下げる

GitHubのプロフィールページがパッとしない

f:id:naoyashiga:20150718092722p:plain
https://github.com/naoyashiga

「Repositories contributed to」がスカスカ
GitHubの自分のプロフィールページを見るたびに、なんかパッとしないなあと思っていた。それは「Repositories contributed to」のところがスカスカだったからだ。Contributeをしてプロフィールページを豪華にしたいと思った。

スターが多いリポジトリは難しい
できればスターが多いリポジトリにContributeしたい。自分はSwiftを使うことが多く、例えばAlamofireのような人気リポジトリに、プログラミング能力が低い自分がContributeするのは難しい。実際にリポジトリを見ても、何が問題なのか全くわからなかった笑

ショボいPull Requestを送る

「Repositories contributed to」を豪華にさせるにはPull Requestをしないことには始まらない。最初からホームランを狙い、バットを長く持って、打つのは初級者には難しい。バットを短く持ち、まず一塁に出ることが点に繋がる。

ということでショボいPull Requestでもいいから、送ってみることにした。

手頃なリポジトリの探し方

Search GitHubを使う
自分に馴染みのある処理のコードだったら、理解しやすい。Search GitHubを使って、コードを検索することにした。例えば、自分は「CABasicAnimation」を使ったアニメーション処理のコードに馴染みがあったので、「CABasicAnimation」というクエリで検索した。「Recently indexed」の検索条件を加えれば、公開されたばかりのリポジトリを見ることができる。

Search GitHubを使うメリットは以下2点。

  • 馴染みのあるコードをチェックできる
  • Recently indexedの場合、開発者がフィードバックくれくれ君状態になっている?のですぐ返信が来る

実際に自分はCircularRevealAnimatorというリポジトリを見つけて、Pull Requestを送ったら、すぐに返信が来て、Mergeされた。リポジトリによるけど、返信は20分~1日以内あれば来るという印象。

removedOnCompletion,fillModeを追加 by naoyashiga · Pull Request #1 · kitoko552/CircularRevealAnimator
https://github.com/kitoko552/CircularRevealAnimator/pull/1

Trending repositoriesをチェック
SwiftのTrending repositoriesで上位に来ているリポジトリのコードを読んでみることにした。
Trending Swift repositories on GitHub today · GitHub

Trending repositoriesを見るメリットは以下の3点。

  • スターが少し多い
  • 公開されたばかりのリポジトリが多く、開発者がフィードバックを求めている
  • 新しいリポジトリなので、Swift1.2や2.0で書ける

自分はTinder風UIが作成できる「Koloda」(スター数500くらい)にPull Requestを送ると、Mergeされた。Trending Rankingに自分のアイコンが載るのはテンションが上がるw
Refactoring some code by naoyashiga · Pull Request #6 · Yalantis/Koloda · GitHub

ショボいPull Requestでも感謝される

varをletに変える
リポジトリを探して、コードを読んでも、めちゃくちゃすごい改善案を思いつくことは自分はできなかった。Swiftのコーディングスキルが低いからだ笑。しかし細かい修正だったらできそうだった。例えば「varをlet」に変えるようなことだ。これはXcode7のbetaでは自動で検出してくれる笑。それくらいショボい。

色を動的に生成してくれるリポジトリ「DynamicColor」にPull Requestを送ると、Mergeされた。

改善はショボかったけど、作者からコメントで感謝された!やった。

I pointed the problem before and I have forgotten to fix that, so thank you for your vigilance.

change "var" to "let" by naoyashiga · Pull Request #3 · yannickl/DynamicColor · GitHub

怒られることもある

Pull Requestのルールは守ろう
リポジトリによっては「Contribution Guidelines」のようなものがあり、Pull Requestのやり方が決まっている。これは守ろう。

Closed Pull Requestに目を通そう
海外のTechブログをまとめた「engineering-blogs」にLINEのブログを追加することにした。スターの数は5000以上でテンションが上がっていた。意気揚々としてPull Requestを送ると、「Gemfile.lockをpushしないでくれ」と怒られたw

これは以下のような問題があるかららしい。
Ruby - BUNDLED WITH で Gemfile.lock が更新されてしまう件 - Qiita

過去のPull Requestを読むと、同じようなミスをしている人がいたので、Closed Pull Requestはさらっと目を通しておくのが良い。

revertしたら無事Mergeされた!
Added LINE engineering blog and updated opml by naoyashiga · Pull Request #279 · kilimchoi/engineering-blogs · GitHub

OSS活動は楽しい

敷居が下がった
公開リポジトリにPull Requestなんて自分にはできないと思っていたけど、できた。簡単なPull Requestだったらできそうだと思えるようになった。ショボい改善くらいでPull Requestを送ってくるなんて、作者の人は迷惑に思うかもしれない。その時はMergeされないだけ。送ってみることが大切だなあと思った。

感謝される
作者の人から感謝される。これはすごい気持ちいい!また「Pull Requestを送っちゃおうかな〜」という気持ちになる。

業務のコードに還元できる
他の人のコードを自然と読むようになるので、自分が普段しない書き方に出会うことができる。会社で働いている人だと、チーム外のコードを見ることは少ないかもしれない。良いコードがあればチームに還元できるメリットがある。「公開リポジトリのコード」と「業務で書いているコード」とを比較して、前者が優れていれば、業務のコードを改善し、後者が優れていれば、Pull Requestを送ればいい。

まとめ

当初はプロフィールページを豪華にしたいという虚栄心から始めたPull Requestだったけど、数を重ねるうちに面白くなり、プロフィールページの豪華さはどうでも良くなってきた。というか自分のプロフィールページなんてほとんど見ないし笑。それよりもPull Requestを送ることで作者からすぐに返信が来るスピード感にゾクゾクした。以前よりもリポジトリを見るときは、他の人が送っているPull Requestを見たり、立ててあるIssueを見て、「大変そうだなあ」と思うようになった笑。


結果として、ショボいPull Requestを積み重ねて、自分の中でOSS活動の敷居を下げるということは、GitHubのSocail Codingの面白さを体感することに繋がった。