エンジニアのshinです。
ランサーズでは4月から、ゲストを招いてランチを食べながら話をするランサーズ開発ランチ(Lunchers)という取り組みを実施しています。
5/16に実施した第3回の内容をご紹介します。
第3回のゲスト紹介
合同会社ねこもりの高橋邦彦(@kunit)さんをゲストに迎えて、PHPのバージョンアップの話をして頂きました。
きっかけ
昨年のPHPカンファレンス福岡で弊社の金澤が登壇することになり、事前にPHPバージョンアップの意気込みをブログにアップしました。
その際に多くの有識者の方々からありがたいコメントを頂いたのですが、その中で一番するどいコメントだったのが高橋さんでした。それがきっかけで弊社主催のCakePHP勉強会に参加頂いたりして情報交換するようになりました。
そして今回、ランサーズ開発ランチのゲストとしてお声がけしたところ快く引き受けてくださったという経緯です。
バージョンアップの話
ここからがお話し頂いた内容になり、そのときのスライドがこちらです。
バージョンアップの盛り上がり
- PHP5.3のサポート期間が長かったこともあり、以前はバージョンアップのメリデメを考えたときにコストで断念することが多かった。
- しかし、PHP7の登場で状況が変わった。言語の内部構造の見直しで効率化が行れ、大幅なパフォーマンスアップが実現。
- サーバの台数を減らせるなどコスト的なメリットが見込めることがわかってバージョンアップに踏み切るところが増えてきた。
大幅なパフォーマンス改善
具体的なお話として、PHPバージョンアップを進めているBASE株式会社さんの発表スライドを使って、パフォーマンスがどの程度改善したかのグラフを紹介していただきました。
(高橋さんはBASE株式会社さんのPHPバージョンアップ作業に関われています)
こちらに記載がありますが、PHP5.3→5.6に上げた際のパフォーマンス改善が顕著に表れたそうです(P38)。
PHP5.5以上ではOPcacheというキャッシュ機構の恩恵を受けることができたことが大きく、その他の施策も含めると、処理時間が約4割減になったそうです!驚異的。
PHP7に上げたときもさらにパフォーマンスが改善して、サポートメンバーからも体感的にも速くなったと言われたそうです。
つらみ・注意点
実は自分たちが書いたコードは意外に素直なので、それほど書き換えは多くなく、フレームワークやライブラリの影響で書き換える方が多かったそうです。
注意点としては、PHPマニュアルの付録にあるバージョンごとの変更点は熟読しておくべきとのこと。
使っているエクステンションがどのバージョンまで対応しているかも確認しておく。memcacheとmemcachedのように移行が必要になるものもあるそうです。
ノウハウ
PHPのバージョン間の互換性は想像以上に高いことがわかったが、それで一気にあげようとすると対処する項目が積み重なってくるので、日々追従していくほうがおすすめ。
php7ccやPHP Compatibilityのような互換性チェックツールをかけて動く状態を作っておく。
さいごに
最後におっしゃっていた、「自分たちの都合に合わせてフレームワークを持っていく」という名言が印象的でした。
最新のバージョンに上げることで、エンジニアがPHPやフレームワークに対してPRを送るようになり、モチベーションが上がるという良いサイクルができそうです。
開発ランチ後に社内の参加メンバーにアンケートを取ってみたところかなり好評でした。
BASEさんのPHPバージョンアップについては、開発チームブログの方もご参照ください。
http://devblog.thebase.in/entry/2018/03/20/170050
ランサーズ開発ランチは、始めたばかりの取り組みですが、一緒に会話してランチをして頂けるゲストの方を募集しております。ご興味がある方はお気軽にご連絡ください。