澤口楓斗

← 実績一覧

見積管理システムの引き継ぎと改善

稼働中

社内ツールのため画面は出せない。書けるのは、業務の中身に踏み込まずに語れる部分だけになる。

依頼

社内で長年動いてきたシステムを引き継ぐ、という話から始まった。作成したのは外部の会社で、引き渡されてから一度も直されていなかった。引き継ぎについて相談できる相手がいなかった。

コードと動いている環境を自分で読んで、どうなっているのかを確かめるところから始めた。

開発環境を作るところから

引き継いだ時点で、動作を確かめる手段が本番サーバーを直接編集することしかなかった。ここを作り直すことは、自分から提案した。

  • ローカルで動く開発環境を構築した
  • ハードコーディングされていた絶対パスを環境に依存しない実装へ置き換え、同じコードがローカルでも本番でも動くようにした
  • 本番を止めずに移行できるよう、別のデータベースを用意して並行環境を作成した

全員が同じアカウントを使っていた

1人1アカウントに分けたい、という話は会社から出た。利用者全員が1つのアカウントを共有していた運用を変更した。

見積の作成者欄には、サーバーが保持する認証ユーザー名を PHP から取得して自動で入れる。認証をサーバー側に任せているので、退職者のアカウントを削除するだけで利用を止められる。

特定の案件だけPDFが壊れる

一部の案件で、PDFが .php ファイルとして保存されてしまう不具合があった。

原因は文字コードだった。工事名に含まれる漢字が Shift_JIS へ変換される際に 0x5C を生成し、HTTPヘッダーのファイル名指定を壊していた。UTF-8 のまま RFC 5987 形式で送出する実装に変えて解消した。

セキュリティ修正が出ないPHPで動いていた

このシステムは PHP 5.5 で動いていた。緊急のセキュリティ修正が公開されたが、5.5 に修正版は出なかった。バージョン自体も古くなっていたため、PHP を上げて対応することにした。

ただし、いまのコードのままでは動かない箇所が複数あった。ローカルに PHP 8 を入れ、動かしながら洗い出して直した。新旧2つのPHPで同じ見積を印刷して出力をバイト単位で突き合わせ、保存や検索など基本機能も同様に動くことを確かめてから、PHP 8.4 へ切り替えた。

引き継げる状態にする

担当者が替わっても保守を続けられるように、環境構成・作業手順・変更履歴をドキュメント化した。


現在も機能追加と保守を続けている。