採択 Long Session (60mins)

20年ものの巨大レガシープロダクトをPHP 8.0にアップデートした際の対策と得られた知見 PHP Conference Japan 2022

Test & Debug Service Operation 🔰はじめての登壇
22
赤間 仁志

サイボウズのGaroon(ガルーン)は今年で20周年を迎えるグループウェアです。
このセッションでは、20年にわたって開発が続いている巨大なレガシープロダクトのPHPバージョンを7.4から8.0にアップデートした際に得られた知見についてお話しします。

Garoonはさまざまな組織を支えるグループウェアであり、お客様の業務にまつわるデータをお預かりする性質上、セキュリティの確保が重要な課題です。
そのため毎年欠かさずにPHPのメジャー/マイナーアップデートを行い、常に最新のセキュリティ更新を取り込める状態を保っています。

しかしGaroonはPHP4系の時代から脈々と開発が続いているため、コードベースは巨大でありレガシーなコードが多分に含まれています。
さらにPHP本体にパッチを当てて自前でビルドしていることもあり、PHPのバージョンに対する依存度も高いです。
今年はPHP7.4からPHP8.0という影響の大きいアップデートを計画したため、約一年かけて準備を行なってきました。

その中で、比較演算子の問題をはじめとする、特に対処が困難であった以下のトピックについて詳しくお話しします。

  • 厳密でない比較演算子の挙動変化を検出する仕組みの作成
  • シリアライズされたデータに対する比較演算結果の保証
  • 標準ライブラリ関数の見落としやすい変更点

結果的に、紆余曲折ありつつもPHP8.0へのアップデートが完了できました。
GaroonのPHPをアップデートするために具体的にどのように準備をおこなったのか、またその中で得られた知見を共有することで、
これからPHP8系へのアップデートを行う方々の助けになれたら幸いです。