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!
2016/05
- Repository : thuss/standalone-migrations
- Language : Ruby
Rails のマイグレーション機能を切り出した Gem で,Rails に互換性のあるマイグレーションを管理することができる.担当してるプロダクトに導入しようと検証していたときに,README に記載されている通りに動かなくて,rake
に渡す環境変数名が間違っていることに気付いた.修正内容は README だけだけど,デバッグするときに ActiveRecord のコードまで読まないと原因が特定できなくて,個人的には苦労したプルリクエストだから記憶に残っている.
2016/07
- Repository : mackerelio/mackerel-agent-plugins
- Language : Golang
7月頃から本格的に Mackerel を導入するために検証をしていた.プラグインのバイナリは今でこそ /usr/bin
に展開されているけど,以前は /usr/local/bin
に展開されていたらしく,今も一部のプラグインは /usr/local/bin
に残っている(シンボリックリンク).Mackerel を導入した直後の僕はディレクトリが変更されたことを知らなくて,さらに README を見ても更新されていなくて,気付けなかった.同じところにハマる人もいるだろうと思って,README を修正した.ここから Mackerel 関連のプルリクエストが増えていくことになる.
2016/08
- Repository : mackerelio/mackerel-agent-plugins
- Language : Golang
Fluentd を監視するために mackerel-plugin-fluentd
を検証していた.動作確認をするだけではなくて,プラグインのコードも読めるように勉強していた時期だったので,たまたまコメント部分にミスがあることに気付いて修正した.
- Repository : mackerelio/cookbook-mackerel-agent
- Language : Ruby
僕の環境では Mackerel 関連のプロビジョニングを全て Chef で完全自動化していて cookbook-mackerel-agent
を使っている.勉強も兼ねて実装を読んでいたら,既に消された attribute の記述が README に残っていることに気付いて,混乱を招かないように削除した.cookbook-mackerel-agent
は非常に良くて,プルリクエストを送るような問題に遭遇したことがない.
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 が大幅にリファクタリングされていて再実装し直す必要があったり,細かくコードレビューをしてもらってロジックを書き直したり,英語表現を添削してもらったり,凄く勉強になったプルリクエストだった.感謝…!
2016/10
- Repository : mackerelio/mackerel-agent-plugins
- Language : Golang
Mackerel で Memcached をモニタリングしようと思って mackerel-plugin-memcached
を検証していたときに,Memcached に保管されているアイテム数(curr_items
)をメトリクスとして取得できないことに気付いて,修正した.マージしてもらった後に ElastiCache の追加対応をしてもらったらしく少しご迷惑をお掛けした気がする.ちょうど ISUCON の時期だったように思う.
2016/12
- Repository : winebarrel/roadworker
- Language : Ruby
Route 53 を Infrastructure as Code として管理する Roadworker を検証していたときに,レアケースだとは思うけど,DNS レコードに GeoLocation を使っている場合に DSL のコンバーターがうまく動かなくて,自分の AWS アカウントで動作確認をしながら修正した.プルリクエストを送る前に RSpec を流したら,Route 53 で管理している僕のドメイン設定が全て消えて,焦った話は良い思い出.
まとめ
今年のプルリクエストは計8個だった.全然多くないし,自慢できるような難易度のプルリクエストもないけど,全てマージしてもらえたことは素直に嬉しいなと思う.さらに Node.js / Ruby / Golang / PHP など幅広くデバッグする機会になって勉強になった.来年も積極的にコントリビュートするぞ!!!