ログと監視は大事ですよね~。いうことで、こんにちは。毎度のことですが時間の流れが速く、気づけばもう年の瀬ですね。1年を振り返ると今年も業務システムをガッツリやってました。今年は弊社の基幹システムのバージョンアップをした話を書こうと思います。マスタ等々を持ったシステムです。これは工数入力画面これらCakePHP3の出た当初に作成しました。(4年くらい前)PHPのバージョンも古く5.6JSもjqueryで。上げ始めたらキリがないですCakePHP3が出たはじめの頃でEntityとは何ぞや?右も左も良く分からないまま実装したためカオスなコードを書いています。テストコードもホボ無いという状況です。一念発起してやったその前に何から手を付けようかと考えました。思いつきベースでやりたいことを貯めていたのですが、全部は無理。社内から遅いと声が上がっていたので、まずは最低限のPHPとCakePHPを上げようということで社内各方面で相談しながら何をやるかを決めました。最終的には、PHPとCakePHPのバージョンを上げる。3.8系へPHPはサポートも切れてますし、速度面でもPHP7には劣ります。CakePHP4を見据えて最新化することを目指しましょうという感じですね。いうことで次にどういう手順でやるかを考えました。順番1.開発環境をPHP7.3系で構築(本番環境も併せて検討)2.システムを設置しとりあえず動くところまで持っていく3.非推奨関数の置換4.リファクタ5.テスト6.本番リリースやってきます1.ローカルにPHP7.3系の環境を構築(本番環境も併せて検討)対象のシステムはdocker環境で運用されています。私のローカルはvagrant、本番では基幹システム用のimageを作ることが必須となるのでこれを期に開発環境もdockerにしました。(docker難しい。install!が動きません。composerで入るプラグインが入りませんwPHPのバージョンが新しくプラグインのバージョンを上げてくださいと言われました。上げてプラグインをインストール。画面はホワイトアウトです。感の良い方は分かると思いますがCakePHP3.3からMiddlewareが導入されています。ディレクトリやファイルの中身が若干変わっています。Cake3.8系をcloneしWinMergeを使いながら3.1と比較しながら書き直していきました。修正してはdumpを吐いてどこまで来ているかのチェックの繰り返しです。3.非推奨関数の置換CakePHP3.8に上げたことでScrutinizerがあらぶり始めました。↑のIssueは殆どがDeprecatedでした動作としては非推奨を無視するように設定していたのでブラウザからのアクセスには問題は無いのですがはやりここはきっちりと対応しておくべきでしょう。いうことで以下を変更しエラーを全て出すようにしました。],これでエラーが見れるようになります。殆どgetter/setter(笑)画面をポチポチしながら出てきたもの片っ端から対応します。4.リファクタ3をしながら思うわけです。俺、なんでこんな残念なコード書いてたんだろう。複雑な部分は一旦さておき、パッと見で修正できるレベルのものを書き換えていきます。typehintも入れていきます。完全に作業の世界です。併せてコードはcommit時にphp-cs-fixer/phpcbf/phpmdが走るようにしたので静的解析チェックをしていきます。Scrutinizerがあったのも良かったですね。併せてチェックができて良かったです。template(ctp)以外の全てのコードに対して修正を行えたので凄く綺麗になりました。数を消すのがとても楽しくなりますね♪5.テスト最後にテストコードを書きたい!!と思ってましたがこの時点では出来ませんでした。そこまでモチベーションが続かなかったです。画面ポチポチで確認していきます。そんなに複雑ではないから大丈夫だろうと思ってたけど、やっぱり漏れはありますね。本番リリース後にやはり動かないんだけど。テストコードで100%安心できるわけでは無いですが、これにより気づける事もあります。安心できる状況を作るのが大事ですね。6.本番リリースインフラ担当者と日時、手順を相談してえいっとやりました。事前に手順を相談し認識を合わせたのが良かったと思います。まとめ協力者を得つつ、やりたいこと・やるべきこと・やらないことを整理することが大事。コードのリファクタはちょっと踏み込み過ぎてどこまでやるか悩む。テストは大事バグは出ます。弊社基幹システムでこのシステムがバグってしまうと仕事が出来なくなります(特にバックオフィス)軽微なバグで直ぐ対応出来たもののやはりお客様のシステムだとNGですよね。動かないところが多すぎて心が折れそうになる。業務の合間や盆休みを使用して行っているため数か月掛かった。2019社内からも速くなったねーとお言葉をいただけましたし、勉強にもなりました。requestStockLike7@tsukaboFollow株式会社Fusic受託開発・自社サービスの2本柱で「日本を代表する福岡の企業」を目指している企業です。upLoginユーザーは見つかりませんでした。