Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PHPバージョンアップをプロダクト横断PJで進めた話
Search
YS
September 25, 2020
Programming
2
320
PHPバージョンアップをプロダクト横断PJで進めた話
PHPのメジャーバージョンアップを、社内のPHP系サービスで協力して進めた件について共有させていただきました。
YS
September 25, 2020
Tweet
Share
More Decks by YS
See All by YS
サポートチャットサービスをローンチしてから5年間で発生した負債と対策
ysakai
0
1.2k
チャットボットシステムのスマートフォン対応について
ysakai
0
1.3k
Other Decks in Programming
See All in Programming
AI OCR API on Lambdaを Datadogで可視化してみた
nealle
0
210
The state patternの実践 個人開発で培ったpractice集
miyanokomiya
0
150
兎に角、コードレビュー
mitohato14
0
160
Flutter로 Gemini와 MCP를 활용한 Agentic App 만들기 - 박제창 2025 I/O Extended Seoul
itsmedreamwalker
0
160
令和最新版手のひらコンピュータ
koba789
14
8.1k
もうちょっといいRubyプロファイラを作りたい (2025)
osyoyu
0
170
KessokuでDIでもgoroutineを活用する / Go Connect #6
mazrean
0
120
オープンセミナー2025@広島「君はどこで動かすか?」アンケート結果
satoshi256kbyte
0
220
ライブ配信サービスの インフラのジレンマ -マルチクラウドに至ったワケ-
mirrativ
2
270
go test -json そして testing.T.Attr / Kyoto.go #63
utgwkk
1
140
開発チーム・開発組織の設計改善スキルの向上
masuda220
PRO
17
9.2k
Jakarta EE Core Profile and Helidon - Speed, Simplicity, and AI Integration
ivargrimstad
0
240
Featured
See All Featured
Designing Experiences People Love
moore
142
24k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
6k
Music & Morning Musume
bryan
46
6.8k
The Art of Programming - Codeland 2020
erikaheidi
55
13k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
185
54k
Embracing the Ebb and Flow
colly
87
4.8k
Making the Leap to Tech Lead
cromwellryan
134
9.5k
Agile that works and the tools we love
rasmusluckow
330
21k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Transcript
©2020 RAKUS Co., Ltd. ©2020 RAKUS Co., Ltd. PHPバージョンアップを プロダクト横断PJで進めた話
酒井 幸教
©2020 RAKUS Co., Ltd. 自己紹介 名前 酒井 幸教 所属 株式会社ラクス
チャットディーラーの開発を担当しています。
©2020 RAKUS Co., Ltd. 今回の内容 PHPのメジャーバージョンアップを 社内のPHP系サービスで協力して 進めた件について話させていただきます。
©2020 RAKUS Co., Ltd. 経緯 社内にはPHPベースのサービスが複数あり 今までは個別でPHPバージョンアップ作業を進めていました。 このやり方だと重複した作業について無駄があったり 品質を担保する水準が決まっていないという 課題がありました。
©2020 RAKUS Co., Ltd. 経緯 今回、品質と効率を向上させるために 全PHPプロダクト横断PJを組織して PHPのメジャーバージョンアップを 進めていくことになりました。 ・備考
PHP7.1→7.3へのバージョンアップ作業
©2020 RAKUS Co., Ltd. PHPバージョンアップPJのメンバ • PHP系サービスは下記の5サービス メールディーラー チャットディーラー 配配メール
クルメル 楽楽販売 • 各サービスに対し1名が担当 ※一部2名のサービスもあり
©2020 RAKUS Co., Ltd. PHPバージョンアップの作業フロー 1. PHPの仕様変更についての調査(情報収集) ※全サービスで共通の作業なので、今回のPJで作業分担して効率化しています。 2. 各サービスに特化した影響調査(情報収集)
- 各サービスに特化したライブラリ、フレームワーク等に関する影響調査 3. 新しいPHPを開発環境に適用(開発準備) - php.iniの作成 - PHPのインストール
©2020 RAKUS Co., Ltd. PHPバージョンアップの作業フロー 4. アプリへの影響調査(設計) - 影響のある箇所を抽出し、修正箇所を選定する 5.
実装・単体テスト 6. 全機能テスト 今回は、共通の作業である「1. PHPの仕様変更についての調査」と 品質担保に関する「6. 全機能テスト」について話させていただきます。
©2020 RAKUS Co., Ltd. 「1. PHPの仕様変更についての調査」について PHPの仕様変更の内容を調査し、 アプリに影響を与えうる変更点を洗い出します。
©2020 RAKUS Co., Ltd. 「1. PHPの仕様変更についての調査」について ▪進め方 ①調査・レビューの担当割り振り ②調査の実施 調査結果は共有資料にまとめていく
③レビューの実施 ※今後の作業に影響する重要な調査なので 調査結果のレビューも行っています。
©2020 RAKUS Co., Ltd. 「1. PHPの仕様変更についての調査」について ▪調査する対象 ・PHPマニュアルのPHPX.X.XからPHPX.X.Xへの移行( https://www.php.net/manual/ja/migration73.php 等
) ・チェンジログ( http://php.net/ChangeLog-7.php ) ※情報が多いので、ステータスがRemoved/Deprecatedについて調査する。 ・php.iniディレクティブ( http://php.net/manual/ja/ini.list.php ) ・セッション関連 Sessions インストール/設定( http://php.net/manual/ja/session.configuration.php ) ※以前セッション関連でバージョンアップ時の差異の検知漏れがあったので調査対象に含めています。
©2020 RAKUS Co., Ltd. 「1. PHPの仕様変更についての調査」について ▪調査を行う観点について ・下位互換の無い変更点 変更点に関する内容がコードに含まれていると不具合に発展する可能性があります。 ・デフォルト値の変更
PHPの設定や関数呼び出し等でデフォルト値を利用している箇所に影響します。 ・新しい定数・変数・関数 アプリ内の変数・定数・関数と重複する可能性があります。
©2020 RAKUS Co., Ltd. 「1. PHPの仕様変更についての調査」について ▪調査を行う観点について ・推奨されなくなる機能 非推奨の機能は使用しないほうが良いです。 また、今後のバージョンで廃止になる可能性が高くなります。
・新機能 既存システムに影響を与えそうなものをピックアップします。
©2020 RAKUS Co., Ltd. 「1. PHPの仕様変更についての調査」について ▪アウトプット ・PHP変更内容の把握 メインの調査です。 こちらの内容にしたがって、アプリの影響調査を進めます。
・php.ini 新バージョンのphp.iniを作成するために使用します。 ・PHPのコンパイルオプション(configure) 新しいバージョンのPHPをインストールする際に使用します。
©2020 RAKUS Co., Ltd. 「6. 全機能テスト」について PHPバージョンアップによる修正は影響範囲が広く アプリの品質担保のため、全機能テストを実施します。 また重要機能については、全機能テストでの カバレッジを100%にします。
全機能テスト:アプリ内の全機能を網羅したテスト
©2020 RAKUS Co., Ltd. 「6. 全機能テスト」について 実際に進めてみるとカバレッジ100%は 現実的ではないことがわかりました。 ・エラーケース等を通すためには無理やり エラーを発生させる必要がある。
・重要機能の中にも、重要度の低いコードが含まれている。 ・負の遺産で、現在通す事ができないケースがある。
©2020 RAKUS Co., Ltd. 「6. 全機能テスト」について カバレッジの達成度を下記に変更 ・見直し後の達成度 ファイルベースでのカバレッジ100%は厳しいため 重要なロジック部分のカバレッジが100%
になっていればOKとする。
©2020 RAKUS Co., Ltd. まとめ ・サービスに依存しない共通部分の調査を効率化 情報収集ステップの一部を集約して実施することによる工数削減(約1.5人月削減) ・品質を担保するため水準を統一 テスト内容、達成度等を統一し品質担保の既定値を設けられた。 ・情報共有による効率化・品質担保
- 作業する中で見つかった問題点の共有 - 各サービスで行った調査手順・ツールの共有 →こちらは共有資料とし今後のバージョンアップでも利用する。
©2020 RAKUS Co., Ltd. ご清聴ありがとうございました。