2ヶ月でバージョンアップを行いました。2名で行いましたが、両者ともに他案件にアサインされていたので、思うように動けず。。苦しい戦いとなりました。

反省点や行ったことなど、振り返りを行います。

リソースと優先順位

今回の案件は、初のマルチタスクだったのでいろいろ勉強になりました。

マルチタスクの場合はリソースと優先順位が大切です。作業者はリソースや優先順位がどのように振られているか確認して積極的に意見を出しましょう。時間がなくて出来なかったは有り得ないです。

例えば、月のリソースがA案件に120hでB案件に60h振られているとしたら、それぞれ120hと60hの時間内で何機能を作るか取捨選択し、優先順位を決める必要がありますよね。これが当たり前かと思っていたのですが、私のいた零細企業はあまり行われてませんでした。。

請負契約時、設計書・仕様書・テスト項目書や作業内容の粒度のすり合わせがしっかり行われていなく、「これもやってくれるはずじゃないんですか?」と追加追加で要望を受けて、やって欲しいと言われたことは全部引き受けてました。

引き受けるのは別に問題ではないのですが、そこで優先順位をしっかりお客様と打ち合わせ出来ないと、単純に「当初の作業予定」+「割り込みタスク」でリソースが足りなくてどこかにしわ寄せがきます。

フロントに立つエンジニアは、「今怒られるか、後で沢山怒られるか」を意識して、お客様との優先順位のすり合わせをしっかり行うべきだと、上司を見て思いました。。お客様に怒られないようにするために全部引き受けてるのでは、品質も納期も担保できないので結果的に沢山怒られます。割り込んだタスク分、他のタスクの切り捨てをしないと。。

ではでは本題。

スポンサードサーチ

作業概要

バージョンアップ内容

  • php5.6 -> php7.2
  • cakephp2.6 -> 2.10.13

ウェブサーバはnginxでDBはMariaDBを使ってました。こちらはバージョンアップ対象外です。

Cakephp 2.6→2.10.13

フレームワーク内独自ソースの確認

まず初めにフレームワークに独自ソースが混ざってないか確認しました。

$ diff -r 2_6ver 2_10_13ver

現在のソース(2.6Verのもの)を頂き、gitにある2.10.13Verのものとの差分を全て確認しました。。そして独自ソースがあれば、2.10.13Verへ移します。

コンパティビリティチェック

cake2.10.13はphp7系でも動くと公式に記載があったのですが、念のためphp7との互換性チェックを行いました。使ったツールは、php7cc [git] です。導入後、下記コマンドで打つだけでチェックしてくれます。

$ php7cc FILEorDIR

ワーニング・エラーを確認して、修正前と修正後の一覧表を作成しました。

FWバージョンアップ

cake2系のディレクトリ構成はこのようになっています。

./app
./lib
./vendors
./plugins
./.htaccess
./index.php
./README

既存の./libに対して、独自ソースを盛り込んだcake2.10.13Verのlibディレクトリで上書きます。後はひたすらテストです。

スポンサードサーチ

php5.6→php7.2

ライブラリのバージョンアップを行った後、./app配下に対してphp7ccを実行します。後はひたすらソース(サービス/API/Batch)の修正です。こちらも、ワーニング・エラーを確認し、修正前後の一覧表を作成しました。

詰まった点

セッションの保存先をデータベースに設定していると怒られる。php7.2のbugの模様。。?https://github.com/cakephp/cakephp/issues/11628

Warning (4096): ini_set(): Cannot set 'user' savehandlerby ini_set() or session_module_name() [CORE\src\Network\Session.php, line 313]

CakePHPのSessionコンポーネントを使用しないようにして回避しました。。ログイン認証の時だけしか使われてなかったので。

スポンサードサーチ