PHPフレームワークのバージョンを上げるための取り組み

サグーワークス開発チーム PMの横道です。

前回はチーム目標に対する取り組みのお話しをさせていただきましたが、
今回はその取り組みの1つであるPHPフレームワーク(以下フレームワーク)載せ替えの取り組みの内容をお話していきます。

tech.willgate.co.jp

フレームワーク載せ替えの取り組みの背景

1年ほど前に実施したサービス全面リニューアルでフレームワークをCake1系から3系に載せ替えを行いました。

※その時の記事はこちら tech.willgate.co.jp

リニューアル完了時に載せ替えられたのはシステム全体の半分ほどでした。
フレームワークを載せ替えた箇所の新規開発や追加改修については整備されているので開発しやすい状態になっていますが、載せ替えが終わっていない箇所については開発しづらい為、開発工数がかかってしまうということが起きていました。
開発しやすい環境作りのために、フレームワークの載せ替え作業をチーム全員で協力して行っていくことにしました。

フレームワーク載せ替えするにあたって

サービスを成長させるための機能開発がある中で、意気込みだけでは並行してフレームワーク載せ替え作業を進めることはできません。
継続的にフレームワーク載せ替え作業を進めていくためにどうすればいいか考えた結果

  • 載せ替えない対象を明確化
  • 載せ替える対象を種別分けと優先度付け

上記の2点を決めてから取り組むことにしました。

継続的に進めるために決めたこと

載せ替えない対象を明確化

システム全体の半分を載せ替えるとなると開発工数がかなりかかってしまうので、載せ替え対象と載せ替えない対象の仕分けを行い、特に載せ替えない対象を明確にしました。

  1. 今後使われなくなる機能は対象外とする

    • 現在運用で使用していない機能は対象外
    • 使用頻度が低い機能は対象外(使用頻度を事業部にヒアリングして確認)
    • 別画面で代替え可能な場合は載せ替え対象外
  2. 上記の以外の機能の中で載せ替え対象の仕分けを行う

    • セキュリティの観点で重要な機能は載せ替え対象
      • ログイン機能やポイント換金機能など
    • サービスの主軸になる機能は載せ替え対象
      • サービス成長の過程で改修する可能性があるため
    • 上記以外は載せ替え対象外
      • (小さい機能に関しては、載せ替え作業を研修期間に課題として有効活用することもあり)

載せ替える対象を種別分けと優先度付け

載せ替え対象が明確になったので次は優先度決めと開発計画を立てていきます。
優先度は「開発」と「保守」の2種類に分類

開発:機能改修するときに対象の機能ごと作り直す
保守:現行の機能をほぼそのまま作り直す

「開発」に分類された機能

機能改修自体に事業部が考えている優先度があるため、その優先度に合わせて載せ替えを実施していきます。
載せ替えを行わない開発と比べ開発コストはかかってしまいますが、システム保守コストと追加改修があった際のコストを考えると投資するメリットがあることを事業部に説明し承諾してもらっています。

「保守」に分類された機能

開発側で順に対応していくので下記の内容で優先度決め、順次対応することにしていきました。

  1. セキュリティの観点で重要な機能
    • サポートが切れた状態で使用し続けることはリスクなので優先度を高くする
  2. 運営が不便に感じている機能
    • 作り直すついでに修正することで運営工数が下げる狙い
  3. 使用頻度の高い順
    • 使用頻度が高ければ追加改修が来る可能性が高くなるので早めに対処

事業部サイドでは開発予定していない内容ですが、事業部に必要性やメリットをしっかり説明することで理解してもらうことができたので、載せ替え作業を行う時間を確保することができました。

現在の進捗状況

開発に絡めて載せ替えを継続的に行っている為、この1年間で載せ替え作業をかなり進めることができていて、最近では古いフレームワークでの追加改修は全く行っていないので、主要どころの機能は一通り載せ替えることができたと実感しています。
あと半年ほどで載せ替え作業が終了する見込みが立っているので、引き続きチームで協力して載せ替えを進めていければと思います。