PHPのスクラッチ開発で構築されていた会員管理システムを、LaravelとMySQLを用いて全面的に再構築しました。
既存システムは古い設計・実装が残っており、保守性が低く、機能追加のたびに多くの調査・開発工数が必要な状態でした。
既存ソースコードと業務仕様を解析し、データベース設計を含めてシステムを根本から見直し、複雑な承認ワークフローを備えた会員管理システムを約3カ月で設計・開発・テストし、納品まで対応しています。
※契約上の都合により、エンドクライアント名およびシステム画面は非公開としています。
プロジェクト概要
- クライアント:システム開発会社様
- 開発種別:会員管理システムのリプレイス
- 目的:保守性の改善、追加開発が可能なシステムへの刷新
- 当社担当範囲:既存コード解析、要件整理、アプリケーション設計、データベース設計、バックエンド開発、テスト、サーバー初期構築
- 協力会社担当範囲:デザイン、インフラ全体設計
- バックエンド:PHP、Laravel
- データベース:MySQL
- 開発環境:Docker
- インフラ:国内クラウドサービス
- 開発期間:約3カ月
- 開発年:2021年
- 現在の状況:継続運用・追加開発中
機能追加が困難になったPHPシステム
既存の会員管理システムは長期間にわたって運用されていましたが、古い記述方法や複雑な処理が残されており、機能同士の依存関係を把握することが困難な状態でした。小さな変更でも既存機能への影響調査が必要となり、追加開発のたびに多くの工数が発生していました。
新機能の追加についても従来の構成を維持したままでは難しいと判断されていたため、部分的な改修ではなくシステム全体を再構築することになりました。
既存コードから業務仕様を解析
システム再構築には現在の業務仕様を正確に把握することが必要です。長期間運用されたシステムでは、仕様書と実際の動作が一致していないことや、ソースコードにしか残されていない処理が存在することもあります。
当社では既存のPHPコードを解析し、会員情報の管理方法、各機能の処理、承認状態の変化などを整理しました。既存システムの動作をそのまま再現するだけでなく、今後の機能追加が容易になるよう処理の責任範囲やデータの持ち方を見直しています。
Laravel・MySQLによるシステム再構築
新しいシステムのバックエンドにはLaravel、データベースにはMySQLを採用しました。Laravelの基本構成に沿ってプログラムを整理し、業務処理、データ操作、画面からのリクエスト処理などの役割を分離して、機能の追加や修正時に影響範囲を把握しやすい構成としています。
データベースも既存システムの構造をそのまま引き継ぐのではなく、会員情報と承認状態を適切に管理できるよう再設計しました。特定の担当者しか理解できないシステムから、複数の開発者が継続して保守・改修できるシステムへの刷新を目指しています。
多段階の承認ワークフローを設計
本システムで特に難易度が高かったのが、複数の承認者と承認段階を持つワークフローの設計です。申請が一方向に進むだけではなく、確認、承認、差し戻し、再申請などによって複数の状態を行き来する可能性がありました。
承認状態と実際のデータに食い違いが生じると、申請が進められなくなったり、本来とは異なる承認者に処理が渡ったりするおそれがあります。そこで各段階で実行できる操作と遷移先を整理し、承認フロー全体の整合性を保てるデータ構造を設計しました。複雑な業務ルールをプログラムに直接書き連ねるのではなく、今後の変更や段階追加にも対応しやすい構成としています。
Dockerで開発環境を標準化
開発環境にはDockerを採用し、各開発者が同じ条件でシステムを動かせる環境を構築しました。PHPやMySQLなどのバージョン、必要な設定、依存するソフトウェアを統一することで、担当者のパソコンによって動作が異なる問題を抑えています。新しい開発者が参加する場合も環境構築にかかる時間を短縮しやすく、継続的な保守・追加開発に適した体制となっています。
国内クラウド環境のサーバー初期構築
インフラ全体の設計は協力会社が担当し、当社では指定された国内クラウド環境におけるサーバーの初期構築を担当しました。アプリケーションが正常に動作するために必要なミドルウェアや設定を整え、開発したLaravelシステムを稼働環境へ接続しています。複数社で担当領域を分けるプロジェクトにおいても、インフラ担当会社と連携しながら、アプリケーションの開発から稼働確認まで対応しました。
約3カ月で設計から納品まで対応
既存コードの解析、仕様整理、データベース設計、Laravelによる再構築、テストを含め、約3カ月で納品まで対応しました。短期間での開発だったため、既存システムのすべてを無条件に再現するのではなく、業務上必要な機能と改善すべき構造を整理し、優先順位を明確にして開発を進めています。
決済連携・CSV出力などを継続開発
システムの納品後も、当社が継続して運用と追加開発を担当しています。これまでに外部決済サービスとの連携や、管理データをCSV形式で出力する機能などを追加しました。当初予定されていた機能だけでなく、実際の運用を通して生まれた要望にも随時対応しています。全面刷新によって機能追加が困難だった状態を解消し、業務の変化に合わせて継続的に改善できるシステムとなりました。