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
300
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
CSC509 Lecture 09
javiergs
PRO
0
140
카카오페이는 어떻게 수천만 결제를 처리할까? 우아한 결제 분산락 노하우
kakao
PRO
0
110
What’s New in Compose Multiplatform - A Live Tour (droidcon London 2024)
zsmb
1
480
Laravel や Symfony で手っ取り早く OpenAPI のドキュメントを作成する
azuki
2
120
EMになってからチームの成果を最大化するために取り組んだこと/ Maximize team performance as EM
nashiusagi
0
100
アジャイルを支えるテストアーキテクチャ設計/Test Architecting for Agile
goyoki
9
3.3k
AWS Lambdaから始まった Serverlessの「熱」とキャリアパス / It started with AWS Lambda Serverless “fever” and career path
seike460
PRO
1
260
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
100
Tauriでネイティブアプリを作りたい
tsucchinoko
0
370
Click-free releases & the making of a CLI app
oheyadam
2
120
Ethereum_.pdf
nekomatu
0
470
ECS Service Connectのこれまでのアップデートと今後のRoadmapを見てみる
tkikuc
2
250
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Designing the Hi-DPI Web
ddemaree
280
34k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Facilitating Awesome Meetings
lara
50
6.1k
GitHub's CSS Performance
jonrohan
1030
460k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
The Language of Interfaces
destraynor
154
24k
A Philosophy of Restraint
colly
203
16k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
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. ご清聴ありがとうございました。