こんにちは。yamotukiです。普段はM&Aクラウドという八丁堀のベンチャー企業でエンジニアやってます。
この記事は PHP Advent Calendar 2019 の九日目の記事です。
概要
- OSSへのコミットをいつかやりたいと思っていた
- いつも使っていた
Laradock
というPHP開発環境作成するOSSで困ったことがあった - プルリクエスト(以下PRと記述)してみた https://github.com/laradock/laradock/pull/2342
- 初めてマージされた喜び
出したPRも大したことないですが、私個人の心理的には大きな一歩だったので、このアドベントカレンダーのお題に乗って記録しておきたいと思います。
Laradock とは
Laradock is a full PHP development environment based on Docker.
という公式の説明を引用しますが、PHP開発環境だったら大体なんでも立ち上がる便利ツールだと解釈してます。
一部では批判(※1)もありますが、お手軽に種々のPHP環境の開発環境を立ち上げたり、Dockerファイルを書くのに参考にするにはやっぱり便利なOSSです。
※1 色々入りすぎて初心者にはトラブルシューティングしずらいとか、立ち上げが遅いとか
新規プロダクトを立ち上げて1年半ほどの弊社でも、直近では自前のDockerファイルを書く方式に移行しましたが、1年ちょっとくらいお世話になりました。
OSSにコミットしたいなあ
昔から「OSSにコミットしたい」という気持ちがありました。
なぜか?というのを改めて考えてみました。
- 世界のエンジニアに納得してもらってコードが取り込まれることは一人前のエンジニアの証だというイメージを勝手に持っており、そこに近づきたい
- 普段業務を進めている上でお世話になっているコードに恩返しをしたい(というか無料で使わせてもらっているので当たり前では、とも思う)
- 日々勉強している自分の英語は使えるものになってきているのだろうかというのを試したい
プロファイラツールの tideways(xhprof) がうまく動かない
それできっかけをぼんやり探していました。
tideways
というPHPのプロファイラ(コードの性能測定)ツールを使ってみることにしたのですが、導入に多少ハマりました。
tideways
は昔PHP5系の時に有名だったが開発が止まってしまったxhprof
のフォークされてPHP7対応されたものです。
tidewaysレポジトリ: https://github.com/tideways/php-xhprof-extension
何が問題だったか
Laradock ではフラグ立てるだけで割とすぐにインストール出来ることはわかったのですが、プロファイラ開始・終了の関数がうまく呼び出せない問題がありました。
具体的には、公式のREADMEに書いてあるtideways_xhprof_enable()
だと動かないけど tideways_enable()
にすると動くというところ。
自分なら直せる?
ぼちぼち調べてみるとインストールされるtideways
のバージョンの問題であることがわかりました。(v4系とv5系の挙動の違い)
試行錯誤の記録はこちら: https://qiita.com/yamotuki/items/d8112cc7dec2c04130b4
問題の理由も明快で、直すのもそこまで難しくなさそうでした。心理ハードルを超えるだけ。
というわけで初めてのOSSへのPRをチャレンジしてみることにしました。
PRテンプレートの遊び心を感じる
実際にPRを作って出してみると、OSSってこういう感じなのか、というのが面白かったので共有しておきます。
以下はPRのテンプレートに書いてあるチェックリストです。
どのガイドを読めばいいか明快に書いていて、ドキュメントもアップデートしてねと忘れそうなのを書いてある。
三つ目のチェックボックスがとてもいいですね。
マージされた喜び
というわけでPR出していたのですが、2週間ほど放置されていました。
Laradock はある程度枯れた技術になりつつあり、コミュニティはあんまり活発じゃないみたいですね。
インフラ系なので動作確認が多少手間になるので確認が面倒というのもありそう。
(別件で Laravel/framework に出していたPRは数分でコメントがついて、PRがイケてなかったので数日でクローズされました。勢いの差を感じる)
結果として、しばらく放っておいたら特に議論もなくマージされて、自分のコードが世にでることになりました。
喜びを感じました。
次もやりたい
Laravel やその関連ライブラリのレポジトリにコミットしたい!
一番使っているフレームワークでお世話になっていますし、コミュニティは活発。
また、自分がPHPを実用レベルで読み書きできるようになってきたという証になると思ってます。