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
良いユニットテストを書こう
mototakatsu
11
3.6k
為你自己學 Python
eddie
0
520
PicoRubyと暮らす、シェアハウスハック
ryosk7
0
220
Androidアプリの One Experience リリース
nein37
0
1.2k
20年もののレガシープロダクトに 0からPHPStanを入れるまで / phpcon2024
hirobe1999
0
1k
2025.01.17_Sansan × DMM.swift
riofujimon
2
560
盆栽転じて家具となる / Bonsai and Furnitures
aereal
0
1.9k
traP の部内 ISUCON とそれを支えるポータル / PISCON Portal
ikura_hamu
0
180
ErdMap: Thinking about a map for Rails applications
makicamel
1
660
Simple組み合わせ村から大都会Railsにやってきた俺は / Coming to Rails from the Simple
moznion
3
2.2k
DevFest - Serverless 101 with Google Cloud Functions
tunmise
0
140
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
630
Featured
See All Featured
Become a Pro
speakerdeck
PRO
26
5.1k
The World Runs on Bad Software
bkeepers
PRO
66
11k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.2k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Scaling GitHub
holman
459
140k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Building an army of robots
kneath
302
45k
GraphQLの誤解/rethinking-graphql
sonatard
68
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. ご清聴ありがとうございました。