2012/12/10

初めて Pull Request した話。 #phpadvent2012

PHP Advent Calendar 2012 10日目です。
昨日は 竜一 得上 さんの 「PHPマジカルしばり + Raspberry Pi でPHPを動かしてみた」 でした。

Raspberry Pi はじめて知りました。確かに名刺サイズです。PHP もサクッと入るみたいなんでいいおもちゃにナリそうですね :)
マジカル定数 __DIR__ の影の薄さは異常だとおもう今日この頃、__LINE__ も「ラ↓イン↑」か「ラ↑イン↓」の発音の仕方で世代が分かりそうです。そして僕は「マジカル」という響きに昭和な香り感じる世代です。マジカルバナナとか

さて、今回で3回目の参加になり、
2011年:Eclipse と Xdebug で PHP をステップ実行 PHP Advent Calendar jp 2011 #phpadvent2011
2010年:今更きけないあの娘の名前 (PHP Advent Calendar jp 2010 Day 9)
と書きました。

今年は何を書こうかと思いましたが、数ヶ月前に初めて php-src に Pull Request を送り、めでたく merge されました。そのことを書いてみたいと思います。

そうは言っても。

・php のコアな部分がバグってるからオレがどうにかしてやった。
・オレの便利機能がいいから取り入れてくれ。
というものではなく、普段サーバーを作っていてふと思いついたことの Pull Request でした。

ラブストーリーは突然に。

ある日いつもの様にサーバーの構築をしていました。CentOS なので yum で Apache, PHP, MySQL 入れて、php.ini をいじる・・・。いつもどおりで毎回のことでした。
それでは mbstring の設定しましょうねーっていうところで、
[mbstring]
;mbstring.language = Japanese
;mbstring.internal_encoding = EUC-JP
;mbstring.http_output = SJIS
ないわーー
EUC とかないわーー
とか思いながら UTF-8 と書き直す簡単なお仕事。


・・・「これ、毎回やるの?」
き・・・切れた
ぼくの体の中で なにかが切れた・・・決定的ななにかが・・・!


Pull Request

毎回書き換えるのめんどいし、いっちょやってみっかと思いまして、
  • php.ini-development
  • php.ini-production
2つの ini ファイルの mbstring を今どきの設定(UTF-8 ベース)にして、取り込んでもらいましょうと。設定自体は文字コードに起因する脆弱性を防ぐ「やや安全な」php.ini設定を参考にしました。そして、自分にとって謎が多い Pull Request のやり方をググり始める。
なにぶん初めての Pull Request。変なことをしてボロクソに叩かれたら(※叩かれない)ガラスのハートが粉砕されてしまう(違 あーいんたーねっつこわい。
で、参考(むしろ、そのまんま)にさせていただいたのは、
GitHubへpull requestする際のベストプラクティス
http://d.hatena.ne.jp/hnw/20110528
絶対にmasterブランチで作業してはいけません。
masterブランチからのpull requestが許されるのは小学生までです。 
    とあるので、一応オッサンなだけにそれだけは注意して、gkbrしながら慎重に作業しました。まあやったことといえば以下のこと。
    1. php-src を fork
      https://github.com/slumbers99/php-src
    2. ローカルに clone
    3. 作業用にブランチを作る(phpIniMbstringSpike という名前にした)
    4. ファイル編集 -> commit
    5. 作業用ブランチを push
      https://github.com/slumbers99/php-src/tree/phpIniMbstringSpike
    6. pull request用にcommitをまとめる (phpIniMbstring という名前にした)
    7. pull request用ブランチを push
      https://github.com/slumbers99/php-src/tree/phpIniMbstring
    あとはこれを Pull Request すればいいんですが・・・。



    「mbstring の設定”ホントーに”変えていいの?」
    図にのるんじゃあないッ!このアメ公がッ!
    と、ゴーストが囁いた。

    チキンっぷりを発揮

    昔から変わってないから「何か意図があるはずだ」「変えてしまっていいものか?」と思ってしまった僕は、ML で聞いてみることにした。
    http://ml.php.gr.jp/pipermail/php-users/2012-March/036218.html
    概ね良好ww
    Pull Request する気になった。単純。
    実はツイッターでもぼそっと呟いたんだけど。誰も反応してくれなかった。

    実際やってみた。

    もちろん英語です。google 翻訳先生大活躍。
    意見交換の場なんでしょうけど、最初と最後しか発言せず・・・・。ヘタレっぷりを露呈した感じ。

    そしてめでたくマージされ、
    https://github.com/php/php-src/blob/master/php.ini-development
    https://github.com/php/php-src/blob/master/php.ini-production
    の contributors に自分のアカウントが出るようになりました。

    顔がニヤけます。

    Pull Request やってみての感想など。

    この Pull Request は大したことない変更かと思いますが、もしかしたら、世の中のほんの一握りの人には役に立つかもしれない。っていうか、もちろん僕には役に立つクリティカルな変更だった。
    今回ちょっとした思いから起こした Pull Request でしたが、いろいろと試行錯誤していく中で、自らの経験への蓄積となったのが一番大きく、また、OSS への貢献も掠る程度ではありますができたんじゃないかと思っています。
    「誰も喜ばないし」とか「誰も使わないし」とか思って、いろんな事に躊躇しているのであれば、そんなこと気にしないで、とりあえずやってみるってものなんかいいかなーと思ったりもします。不安なのであれば、姑息に根回し(今回僕がMLで聞いたように)して、少しでもダメージ減らしとくとか?w やっぱり何かアクションを起こすのは諸刃の剣だとおもいますし、でも失敗しても得るものも大きいんじゃないかなーと。とはいえ、なんでも自分のスタイルがあると思うので、そこはそこで折り合いを付け無いといけないでしょうけど :)

    では、この Pull Request でぜひ来年も多少なりとも PHP が良い方向に向かうことができますようにという思いを込め、次の方にバトンを渡したいと思います。

    11日目 は K Holy さんです。
    よろしくお願いします。