みなさん、こんにちは!
長く開発をやっていると、使用した技術がいつのまにか古くなっている、というのがよくあります。
言語のバージョンもそうですが、フレームワークも同じです。
今回は、フレームワークが古くなった時の体験談です。
背景
過去に、とあるショッピングカートの開発を担当してました。
当時Ethnaというフレームワークを利用していたのですが、入社して3年ほど経ったときに、フレームワークの開発がストップしているのが発覚。
PHPのバージョンはどんどん上がっていき、フレームワークのPHPバージョンはもうすぐEOL。
さあ、どうする??という場面に直面し、色々と調査することに。
調査内容
他のフレームワークを調査する
当時の状況から、候補となったのは、以下の3つでした。
・CakePHP
・FuelPHP
・Zend Framework
使いやすさから考えると、一旦、CakePHPがいいのではないか、という結論に。
開発工数を見積もる
当然ですが、作り直した場合に、どのくらいのコストがかかるのか、という調査をします。
担当は私一人の前提で、機能数や画面数から算出した工数とメリット、デメリットは
開発工数: 12ヶ月
メリット: 今後もフレームワーク側でPHPのバージョンアップへの対応を見込める
デメリット: コストがかかる
それなりの規模のサービスだったので、標準的な開発工数でした。
改修した場合の工数を見積もる
正直、あまりやりたくない対応内容ですね。
PHPで作られているので改修はできるのですが、中身をよく理解していない状態で手を出すと、どこにリスクが潜んでいるか分かりません。
以下の手順で調査しました。
- 最新のPHPバージョンとの差分をChangeLogからリストアップ
- 廃止や仕様変更になっている関数をgrepで抽出
- 2を利用している機能(影響範囲)を調査
- フレームワークの改修箇所と影響範囲から、工数を算出
その結果、算出した工数とメリット、デメリットは
開発工数: 3ヶ月
メリット: コストがかからない
デメリット: 今後もPHPのバージョンアップに合わせて同様の改修が必要になる
結論
上記2パターンを上司に提出し、出た結論。
「フレームワークを改修する」
なるほど、そうなりますよね。
ただし、これには、単純にコストだけではなく、それなりの理由があります。
理由
1. できるだけ低コストにしたい
これは、営利企業である以上、仕方がないです。
何をやるにも人件費がかかるので、費用対効果を考えると、コストがかからない方が望ましいです。
2. 今後伸ばしたいサービスではなかった
ユーザーもいて、黒字のサービス。
しかし、主力サービスではありませんでした。
競合も多く出てきた中で、このサービスにどのくらいの人件費を使うべきか、という判断が必要になります。
3. 費用対効果を考えると、フレームワークの改修がベター
エンジニア的には、作り直した方がやりがいもあり、充実感があります。
しかし、一つの企業として考えた場合、優先すべきは費用対効果です。
作り直しても利益の増大を見込めないため、フレームワークの改修、という結論に至ります。
(※ここは多くの企業で、エンジニアと経営陣との違いが出る部分です。)
改修で苦労した点
PHPのバージョンアップに伴い、どうしても仕様の変更内容が理解できない関数がありました。
その理解できなかった関数というのは、
pack()/unpack()関数
です。
ChangeLogだけでなく、PHPのソースコード(C言語)も確認したのですが、いまいち理解できず。
しかし、これを利用している機能があったため、どうにかしなければいけません。
どうやってカバーしたのか
方法としては、かなり単純です。
- この関数を通るリクエストを洗い出し、ログから全パターンテストを実施
テストパターンの抽出が大変でしたが、PHPのバージョンアップ前とバージョンアップ後で結果を比較し、全く差分が無いことを確認しました。
もし一つでも差分があればもっと踏み込んだ調査が必要だったので、助かりました。
このようにして、無事にPHPのバージョンアップを行うことができました
まとめ
割とレアなケースかと思いますが、いかがでしたでしょうか。
開発者といえど、ある程度の費用対効果は考える必要があります。
私自身、やってみたいことは色々とありますが、それらは全てプライベートでやってます
そこで力をつけて、チャンスがあれば仕事として取り組む、という意識でいた方が、色々とうまくいくのではないでしょうか。
技術は日々進歩していきますが、まずはしっかりと自己研鑽を行ない、チャンスが来たときに、いつでも掴める準備をしましょう!