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
310
PHPバージョンアップをプロダクト横断PJで進めた話
PHPのメジャーバージョンアップを、社内のPHP系サービスで協力して進めた件について共有させていただきました。
YS
September 25, 2020
Tweet
Share
More Decks by YS
See All by YS
サポートチャットサービスをローンチしてから5年間で発生した負債と対策
ysakai
0
1.1k
チャットボットシステムのスマートフォン対応について
ysakai
0
1.1k
Other Decks in Programming
See All in Programming
Effective Signals in Angular 19+: Rules and Helpers @ngbe2024
manfredsteyer
PRO
0
140
php-conference-japan-2024
tasuku43
0
320
MCP with Cloudflare Workers
yusukebe
2
220
CSC305 Lecture 26
javiergs
PRO
0
140
クリエイティブコーディングとRuby学習 / Creative Coding and Learning Ruby
chobishiba
0
3.9k
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
2
110
Recoilを剥がしている話
kirik
5
6.8k
快速入門可觀測性
blueswen
0
380
Exploring: Partial and Independent Composables
blackbracken
0
100
テストコード文化を0から作り、変化し続けた組織
kazatohiei
2
1.5k
CQRS+ES の力を使って効果を感じる / Feel the effects of using the power of CQRS+ES
seike460
PRO
0
140
今年のアップデートで振り返るCDKセキュリティのシフトレフト/2024-cdk-security-shift-left
tomoki10
0
210
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
A Tale of Four Properties
chriscoyier
157
23k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
We Have a Design System, Now What?
morganepeng
51
7.3k
Six Lessons from altMBA
skipperchong
27
3.5k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
The Pragmatic Product Professional
lauravandoore
32
6.3k
Gamification - CAS2011
davidbonilla
80
5.1k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Typedesign – Prime Four
hannesfritz
40
2.4k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
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. ご清聴ありがとうございました。