Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

© kaonavi, inc. 2 自己紹介

Slide 3

Slide 3 text

© kaonavi, inc. 3 自己紹介 牧 良摩 kazuma maki 所属 株式会社カオナビ 2020年 入社 職種 バックエンドエンジニア & チームリーダー 趣味 飼い猫のお腹をほじること

Slide 4

Slide 4 text

© kaonavi, inc. 4 自己紹介

Slide 5

Slide 5 text

© kaonavi, inc. 5 タレントマネジメントシステム 会社紹介 社員の顔や名前、経験、評価、スキルなどの人材情報を一元管理し可視化。 最適な人材配置や抜擢といった戦略人事を加速させるシステムです。

Slide 6

Slide 6 text

© kaonavi, inc. 事業概要 経営データを一元化し、 正しい経営判断を支援する 予実管理システム 経営管理 労務手続きをペーパーレスで完結し、 人事業務のDX化を推進する 労務管理システム 労務管理 社員の個性・才能を発掘し、 戦略的人事を加速させる タレントマネジメントシステム ⼈材管理 パーパスやビジョンの実現に向け、マルチプロダクト戦略で展開。 6 会社紹介 6

Slide 7

Slide 7 text

© kaonavi, inc. 7 会社紹介 一緒に働く仲間を募集しています! https://corp.kaonavi.jp/recruit/list/ 選考を希望する方 https://hrmos.co/pages/kaonavi/jobs/casual21 まずは話を聞いてみたいという方 7

Slide 8

Slide 8 text

© kaonavi, inc. 8 このセッションで 持ち帰って欲しいこと

Slide 9

Slide 9 text

© kaonavi, inc. 9 このセッションで持ち帰って欲しいこと バージョンアップは誰のためにやるのか 2 バージョンアップはなんのためにやるのか 1

Slide 10

Slide 10 text

© kaonavi, inc. 10 なんのためにバージョンを上げる?

Slide 11

Slide 11 text

© 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

Slide 12

Slide 12 text

© kaonavi, inc. セキュリティサポート 期間を過ぎる 攻撃される要因となり 個人情報の漏洩や サービス停止に 繋がってしまう 12 なんのためにバージョンを上げる? セキュリティの危険が危ない セキュリティリスクが ある不具合が 見つかっても 対応されない

Slide 13

Slide 13 text

© kaonavi, inc. バージョンが古い 競合に競争力で負けたり エンジニアの モチベーションが低下 離職につながってしまう 13 使える機能が少なく 独自実装や 車輪の再開発で 時間がかかる なんのためにバージョンを上げる? 開発効率が悪い

Slide 14

Slide 14 text

© kaonavi, inc. 14 カオナビでのバージョンアップ

Slide 15

Slide 15 text

© kaonavi, inc. 15 カオナビでのバージョンアップ カオナビの開発体制

Slide 16

Slide 16 text

© kaonavi, inc. 16 カオナビでのバージョンアップ やっていたこと PHPマニュアルの移行ガイドの確認 1 修正が必要な内容を把握する Composerパッケージの調査 2 バージョン上げても使えるか、パッケージのバージョンも上げられるか ツールを使って互換性チェック 3 PHP-CS-FixerやPHPCompatibility 影響を受けるコードの修正 4 アプリケーションコードやテストコードの修正 1 へ戻る

Slide 17

Slide 17 text

© kaonavi, inc. 納期で切羽詰まってるチームに お願いごとをする機会が多い コードフリーズや仕様確認や 手動テストのお願いしたり… 検証の範囲が広すぎるため どれだけテストしても安全とは 言い切れない ツールの自動修正を使うと バージョンアップに直接影響しない 箇所にも変更が入ってしまう バージョンアップの作業と プロダクト開発が並行しているため 毎日コードが増える 17 カオナビでのバージョンアップ やっていて大変だったこと

Slide 18

Slide 18 text

© kaonavi, inc. 18 プロダクト開発のエンジニアが 取り組むべきこと

Slide 19

Slide 19 text

© kaonavi, inc. 19 プロダクト開発のエンジニアが取り組むべきこと  何はともあれテストを書こう テストは正しく動作していることを担保できる重要な要素  必要のないコードは消す 使われていなくてもバージョンアップの調査対象になる  コードの影響範囲をわかりやすくする どこまでが影響範囲かわからないことで作業時間が倍増する  PHPマニュアルの移行ガイドを読む 非推奨な書き方を予め知っておけば修正する無駄な手間を省ける  修正できるところはタイミングを待たず修正する 修正対象を早めに減らすことで認知負荷を下げられる

Slide 20

Slide 20 text

© kaonavi, inc. 20 バージョンアップとプロダクト開発の 両方をやってわかったこと

Slide 21

Slide 21 text

© kaonavi, inc. アプリケーションの 機能を幅広く知れる 開発環境の 成り立ちを知れる ツールの使い方が 学べる ★ PHPCompatibilityや phpcsなどのツールの 使い方が学べる ★ grepやawkなどの テキスト処理を 頻繁に使用する 21 バージョンアップとプロダクト開発両方やってわかったこと ハードスキル ★ 自分が開発に関わる 機能以外についても 横断的に知れる ★ トラブルシューティン グに駆け付けることが できる ★ Composerや拡張モ ジュールの設定の仕方 ★ 本番とローカルでの 設定の違い

Slide 22

Slide 22 text

© kaonavi, inc. 説明能力が身に付く 調整能力が身に付く バージョンアップとプロダクト開発両方やってわかったこと ソフトスキル ★ チームごとにミッションが 存在しているため折衝が必要 ★ コードフリーズや 他チームとのリリース調整など ★ バージョンアップの優先度は 機能リリースに押されがち ★ なぜ必要なのか納得できるよう に説明する必要がある

Slide 23

Slide 23 text

© kaonavi, inc. 23 バージョンアップ作業で身に付いたスキルは 普段の開発で活かせることばかり!! バージョンアップとプロダクト開発両方やってわかったこと わかったこと

Slide 24

Slide 24 text

© kaonavi, inc. 24 まとめ

Slide 25

Slide 25 text

© kaonavi, inc. バージョンを上げた先にある利益はみんなのもの! ユーザーは安心なサービスで嬉しい! エンジニアは新しい機能が使えて嬉しい!開発も楽ちん!! 25 まとめ バージョンアップを個人,1チームで行うのは無理! みんなで協力してやることです!!

Slide 26

Slide 26 text

© kaonavi, inc. 26 まとめ 誰のために? サービスに関わる全ての人のため! なんのために? 快適に開発し安全なサービスを作るため!

Slide 27

Slide 27 text

© kaonavi, inc. 27 やろう!バージョンアップ!