Upgrade to Pro — share decks privately, control downloads, hide ads and more …

プロダクトの寿命を延ばすためにエンジニアが考えるべきこと 〜バージョンアップってなんのためにや...

プロダクトの寿命を延ばすためにエンジニアが考えるべきこと 〜バージョンアップってなんのためにやるのか〜 / Strategies for product longevity

2024年12月22日開催PHPカンファレンス2024のスポンサーセッションで登壇した際の発表資料です。
https://phpcon.php.gr.jp/2024/
https://fortee.jp/phpcon-2024/proposal/8ef1f689-efaf-4775-a6c6-86bc814f256f

株式会社カオナビ

December 24, 2024
Tweet

More Decks by 株式会社カオナビ

Other Decks in Technology

Transcript

  1. © kaonavi, inc. 3 自己紹介 牧 良摩 kazuma maki 所属

    株式会社カオナビ 2020年 入社 職種 バックエンドエンジニア & チームリーダー 趣味 飼い猫のお腹をほじること
  2. © kaonavi, inc. 事業概要 経営データを一元化し、 正しい経営判断を支援する 予実管理システム 経営管理 労務手続きをペーパーレスで完結し、 人事業務のDX化を推進する

    労務管理システム 労務管理 社員の個性・才能を発掘し、 戦略的人事を加速させる タレントマネジメントシステム ⼈材管理 パーパスやビジョンの実現に向け、マルチプロダクト戦略で展開。 6 会社紹介 6
  3. © kaonavi, inc. 11 https://www.php.net/supported-versions.php なんのためにバージョンを上げる? PHPのサポート ver リリース アクティブサポート

    セキュリティサポート 8.1 2021/11/25 2023/11/25 2025/12/31 8.2 2022/12/08 2024/12/31 2026/12/31 8.3 2023/11/23 2025/12/31 2027/12/31 8.4 2024/11/21 2026/12/31 2028/12/31
  4. © kaonavi, inc. セキュリティサポート 期間を過ぎる 個人情報の漏洩 や サービス停止 に 繋がってしまう

    12 なんのためにバージョンを上げる? セキュリティの危険が危ない セキュリティリスクが ある不具合が 見つかっても 対応されない
  5. © kaonavi, inc. バージョンが古い 競合に競争力で負け たり エンジニアの モチベーションが下がり 離職につながってしまう 13

    使える機能が少なく 独自実装や 車輪の再開発で 時間がかかる なんのためにバージョンを上げる? 開発効率が悪い
  6. © kaonavi, inc. 16 カオナビでのバージョンアップ やっていたこと PHPマニュアルの移行ガイドの確認 1 修正が必要な内容を把握する Composerパッケージの調査

    2 バージョン上げても使えるか、パッケージのバージョンも上げられるか ツールを使って互換性チェック 3 PHP-CS-FixerやPHPCompatibility 影響を受けるコードの修正 4 アプリケーションコードやテストコードの修正 1 へ戻る
  7. © kaonavi, inc. 納期で切羽詰まってるチームに お願いごとをする機会が多い コードフリーズや仕様確認や 手動テストのお願いしたり … 検証の範囲が広すぎる ため

    どれだけテストしても安全とは 言い切れない ツールで自動修正できなかったため バージョンアップに直接影響しない 箇所にも変更が入ってしまう バージョンアップの作業と プロダクト開発が並行しているため 毎日コードが増える 17 カオナビでのバージョンアップ やっていて大変だったこと
  8. © kaonavi, inc. 19 プロダクト開発のエンジニアが取り組むべきこと  何はともあれテストを書こう テストは正しく動作していることを担保できる重要な要素  必要のないコードは消す 使われていなくてもバージョンアップの調査対象になる  コードの影響範囲をわかりやすくする

    どこまでが影響範囲かわからないことで作業時間が倍増する  PHPマニュアルの移行ガイドを読む 非推奨な書き方を予め知っておけば修正する無駄な手間を省ける  修正できるところはタイミングを待たず修正する 修正対象を早めに減らすことで認知負荷を下げられる
  9. © kaonavi, inc. アプリケーションの 機能を幅広く知れる 開発環境の 成り立ちを知れる ツールの使い方が 学べる ★

    PHPCompatibilityや phpcsなどのツールの 使い方が学べる ★ grepやawkなどの テキスト処理を 頻繁に使用する 21 バージョンアップとプロダクト開発両方やってわかったこと ハードスキル ★ 機能だけでなく横断的 に知ることができる ★ Composerや拡張モ ジュールの設定の仕方 ★ 本番とローカルでの 設定の違い
  10. © kaonavi, inc. 説明能力が付く 調整能力がつく バージョンアップとプロダクト開発両方やってわかったこと ソフトスキル ★ チームごとにミッションが 存在しているため折衝が必要

    ★ コードフリーズや 他チームとのリリース調整など ★ バージョンアップの優先度は 機能リリースに押されがち ★ なぜ必要なのか納得できるよう に説明する必要がある