2016年のプルリクエストを振り返る

2016/02

  • Repository : fiveisprime/marvel-api
  • Language : Node.js

アイアンマンなどで有名な Marvel が公式に提供してる API のラッパーで,Node.js で実装されている.Hubot で Marvel のキャラクター情報を返すボットを作ったときに使った.Hubot を実装しているときに,特定の条件下で marvel.creators.findByName() の動作が変なことに気付いて,API 側が期待しているパラメータになるように修正した.コメントで “amazing pull request” と書かれていてとにかく嬉しかった.

This is an amazing pull request. Thank you so much!

github.com

2016/05

  • Repository : thuss/standalone-migrations
  • Language : Ruby

Rails のマイグレーション機能を切り出した Gem で,Rails に互換性のあるマイグレーションを管理することができる.担当してるプロダクトに導入しようと検証していたときに,README に記載されている通りに動かなくて,rake に渡す環境変数名が間違っていることに気付いた.修正内容は README だけだけど,デバッグするときに ActiveRecord のコードまで読まないと原因が特定できなくて,個人的には苦労したプルリクエストだから記憶に残っている.

github.com

2016/07

  • Repository : mackerelio/mackerel-agent-plugins
  • Language : Golang

7月頃から本格的に Mackerel を導入するために検証をしていた.プラグインのバイナリは今でこそ /usr/bin に展開されているけど,以前は /usr/local/bin に展開されていたらしく,今も一部のプラグインは /usr/local/bin に残っている(シンボリックリンク).Mackerel を導入した直後の僕はディレクトリが変更されたことを知らなくて,さらに README を見ても更新されていなくて,気付けなかった.同じところにハマる人もいるだろうと思って,README を修正した.ここから Mackerel 関連のプルリクエストが増えていくことになる.

github.com

2016/08

  • Repository : mackerelio/mackerel-agent-plugins
  • Language : Golang

Fluentd を監視するために mackerel-plugin-fluentd を検証していた.動作確認をするだけではなくて,プラグインのコードも読めるように勉強していた時期だったので,たまたまコメント部分にミスがあることに気付いて修正した.

github.com

  • Repository : mackerelio/cookbook-mackerel-agent
  • Language : Ruby

僕の環境では Mackerel 関連のプロビジョニングを全て Chef で完全自動化していて cookbook-mackerel-agent を使っている.勉強も兼ねて実装を読んでいたら,既に消された attribute の記述が README に残っていることに気付いて,混乱を招かないように削除した.cookbook-mackerel-agent は非常に良くて,プルリクエストを送るような問題に遭遇したことがない.

github.com

2016/09

  • Repository : wimg/PHPCompatibility
  • Language : PHP

PHP 5.3 → PHP 5.6 にアップデートするプロジェクトを担当していたときに,PHP の非互換コードを静的解析できる PHPCompatibility を使っていて,PHP 5.4 以降で禁止となった break 0;continue 0; を検知できないことに気付いた.基本的に Sniff と呼ばれるルールを追加していく実装になっているので,検知できるような Sniff を実装した.僕が実装しているときに同じ .php が大幅にリファクタリングされていて再実装し直す必要があったり,細かくコードレビューをしてもらってロジックを書き直したり,英語表現を添削してもらったり,凄く勉強になったプルリクエストだった.感謝…!

github.com

2016/10

  • Repository : mackerelio/mackerel-agent-plugins
  • Language : Golang

Mackerel で Memcached をモニタリングしようと思って mackerel-plugin-memcached を検証していたときに,Memcached に保管されているアイテム数(curr_items)をメトリクスとして取得できないことに気付いて,修正した.マージしてもらった後に ElastiCache の追加対応をしてもらったらしく少しご迷惑をお掛けした気がする.ちょうど ISUCON の時期だったように思う.

github.com

2016/12

  • Repository : winebarrel/roadworker
  • Language : Ruby

Route 53 を Infrastructure as Code として管理する Roadworker を検証していたときに,レアケースだとは思うけど,DNS レコードに GeoLocation を使っている場合に DSL のコンバーターがうまく動かなくて,自分の AWS アカウントで動作確認をしながら修正した.プルリクエストを送る前に RSpec を流したら,Route 53 で管理している僕のドメイン設定が全て消えて,焦った話は良い思い出.

github.com

まとめ

今年のプルリクエストは計8個だった.全然多くないし,自慢できるような難易度のプルリクエストもないけど,全てマージしてもらえたことは素直に嬉しいなと思う.さらに Node.js / Ruby / Golang / PHP など幅広くデバッグする機会になって勉強になった.来年も積極的にコントリビュートするぞ!!!