ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

Labels:  CakePHP, PHP 投稿者:shin

ランサーズ開発ランチ(Lunchers#3) ~ねこもり高橋さん PHPバージョンアップ編~

エンジニアの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

ランサーズ開発ランチは、始めたばかりの取り組みですが、一緒に会話してランチをして頂けるゲストの方を募集しております。ご興味がある方はお気軽にご連絡ください。

 

ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。

PHPエンジニア
Rubyエンジニア
サーバーサイドエンジニア
SREエンジニア
フロントエンドエンジニア
その他採用情報

関連記事

CakePHP3.5における各種実装例 ~ LancersTop 開発現場より ~

こんにちは エンジニアの上野 です。本日「CakePHP3.5における各種実装例」という題目で登壇するので、発表資料をアップロードします。資料として使えるようにコード例などを厚めに盛り込んだスライドですので役に立てると嬉しいです。 CakePHP3.x での各 …

PHP, CakePHPバージョンアップに向けてCIで品質を担保・向上していく

こんにちは、エンジニアの上野です。 今回はソース例や実際のサンプルソースを交えながら 「PHPバージョンアップに向けてCIで品質を担保・向上していく」と題してlancers.jp本体に導入しているCircleCIでの取り組みについてご紹介します。 導入背景 P …

Vagrant上で PHP7 & CakePHP3の開発環境構築

こんにちは!2017年新卒のnumaheです。 現在インターン期間中なのですが、cakephpを勉強する!ためにvagrantで開発環境を構築しました。「どうせだったら最新のphpとcakephpで作ろうか」という上司の一声もあり、今回はPHP7とCakeph …

S