PHP7を導入するまでの話

 

はじめまして、エンジニアチームの倉橋です。

この度、恐れ多くもエンジニアブログの投稿を任されることとなりました。

 


なんの話するの?

今回の投稿では、

PHP7」導入までの話を書きたいと思います。

 


PHP7 で開発!

私は現在、既存システムの作り変えを行うチーム(通称:モダン化チーム)に所属しています。

※モダン化については、弊社和田がブログで触れております。

 

 

そのモダン化にて、 PHP7 を使って開発することに決めました。

 


PHP7 に決定するまで

PHP7 での開発ですが、

これは会社のオファーではなく、エンジニアの発信で決まりました。

 

リアズではエンジニア主導で技術スタックを決定出来る環境です。

すなわち、新しいことにチャレンジできる可能性

大いに秘めた環境であるということです。

新しいことをしたくても、中々出来ないエンジニアがいる中、

幸せなことだなと感じており、

チャレンジさせてくれる会社には感謝しております。

 

 

ただ、全てがチャレンジングかと言われると、

そうでない部分も勿論あります。

テストが1行も無く画面を叩いて挙動確認をするシステムがあったり、

デプロイをFTPでの手作業で行っていたり。。。

旧態依然な部分はまだまだあります。

今回のようなチャレンジが出来る時もあれば、

そのようなシステムと向き合う必要があるのも事実です。

 

 

 


PHP7 を学ぶ!そして共有!

 

PHP7 での開発を決めたわけですが、

社内にはまだまだ PHP7 に関する知見も実績も無い状態でした。

ですので、私は PHP7 について学習することを決めたのです。

 

そして、 PHP7 について学ぶわけなのですが、

「ちょ待てよ?」

自分だけ学んでアウトプットしないのは勿体無いんじゃないか?

ということで共有会を実施することとなりました。

自分の知識も熟成され かつ チームメンバーも PHP7 の情報を手に入れる事ができ、

一挙両得ですね!

 

かくして、その事を上長に伝えました所、

無事OKが出ましたので開催の運びとなりました!

 

ただ、いつもいつもこのような時間を貰えるかというと、

そういう訳ではないですね。

費用対効果を意識して成果が期待できる必要があります。

今回はその成果を期待していただけた、ということです。

 


いざ共有会

 

共有は2日間に分けて行い、計1時間30分程ほど行いました。

共有した内容としましては、

 

  • 構造改善
  • 速度改善
  • 新機能
  • 新しい関数
  • 新しいグローバル定数
  • 新しいクラスおよびインターフェース
  • 変更された関数
  • 下位互換のない変更点
  • 非推奨な機能
  • 削除された拡張モジュールおよびSAPI
  • その他の変更

 

です。

他エンジニアからは好意的な声を頂戴し、

共有会は成功でした。

 

 


PHP7 を使ってみて

 

 

まず、なにより素晴らしと感じるのが、

PHP5との互換性がかなり高いレベルで保たれている

ということ。

そして、その互換性の高い状態で、

処理速度向上されている

ということ。

 

実際、PHP5.6 で書かれているプロジェクトを、

PHP7 の上で動作させたところ、問題なく動作しました。

そのうえ、処理速度も向上しました!

(計測値が失われており詳細お伝えできず悔しいです・・・)

 

また、型宣言がより厳密に行えるようになったのもGood!

より型を意識したプログラミングを行えるようになりました。

 

こうやってみると、良いことばかりの PHP7 ですが、

やはり気をつける点もいくつかあります。

私的に目立ったものを2つご紹介。

 

1つ目は

変数やプロパティ、メソッドへの間接的なアクセスの扱いの変更

です。

これは、PHP5 と PHP7 で評価順が異なるという話です。

詳しくは公式ドキュメントをご覧頂くのがよいですが、

コードによっては PHP7 への移行時に思わぬ動作を起こすかもしれません。

 

2つ目は

DateTimeがインスタンス生成時にマイクロ秒を生成するようになった

です。

PHP7 ではDateTimeインスタンスを生成した時に、

マイクロ秒まで生成されるようになりました。

ですので、同じと思っていた2つのインスタンスが、

マイクロ秒によって異なった値と判断される可能性が高くなりました。

 

 

このように、一部 PHP5 の考えを刷新しないといけない箇所があります。

気をつけたいところです。

 


今後

リアズでは引き続き技術的なチャレンジを追い求めていきたいと思いますし、

チャレンジの過程で今回のような共有する文化も熟成させていきたいと考えています。

 

  • エンジニアとしてチャレンジしたい!!
  • 他のエンジニアと力を合わせて成長したい!!

 

という前向きなお考えをお持ちの方々、

是非とも一緒に働きましょう!!

 

お待ちしております!