2025/02/18

Share

  • Share on Facebook
  • Share on Twitter

顧客管理システムSymphonizerのシステム改修 顧客管理システムSymphonizerのシステム改修

案件概要

Java 1.4.2で稼働していた旧システムをJava 21へアップグレードし、同時にモノリシック構造からクライアントとサーバーの役割を分離したモダンなアーキテクチャへと移行するプロジェクトを実施しました。この刷新により、サポート終了技術の解消、保守性の向上、そして将来的なAPI公開も見据えた拡張性の高いシステム基盤を実現しました。

利用した技術スタック及び開発ツール

  • プログラミング言語:Java 21
  • フロントエンドフレームワーク:JavaFX
  • バックエンドフレームワーク:Spring Boot
  • データベース:Oracle
  • タスク管理ツール:Backlog
  • コニュニケーションツール:Slack
  • AIツール:GitHub Copilot
  • その他ツール:JasperReports v7.x

クライアントの課題

  • 旧式Javaバージョン(1.4.2_07)のサポート終了に伴う保守リスク
    クライアントの既存システムはJava 1.4.2_07というサポートが終了したバージョンで稼働していました。これにより、セキュリティリスクやバグ修正の困難さが生じており、安定的な運用と保守が難しい状況でした。
  • モノリシック構造による開発・拡張の複雑化
    システム全体がモノリシック構造で構築されていたため、機能の追加や修正が他の部分に影響を与えやすく、開発の複雑性が増大していました。また、将来的なシステムの拡張や変更に対する柔軟性が著しく低いことが大きな課題となっていました。
  • 旧式フレームワークによる機能開発の停滞
    フレームワークとしてStruts、UIにSWTが使用されていましたが、これらは現在の技術水準やビジネスニーズを満たすには古くなっていました。特に新しいインターフェースや機能の開発が難しく、ビジネスの変化に対応するスピードが遅れる原因となっていました。
  • 64bit環境非対応のレポートツール問題
    レポート作成に使用していたCoReports v8.5は、64ビット版のJava環境で動作しないという重大な制約がありました。これにより、システムの実行環境が制限されるだけでなく、より現代的で使いやすく、コスト効率の良いレポートソリューションへの移行が急務となっていました。

クライアントの要望

  • Java 21への最新化による互換性と効率の確保
    最大の要望は、サポートが終了したJava 1.4.2_07から最新のLTS(長期サポート)版であるJava 21へシステム全体をアップグレードすることでした。これにより、セキュリティの脆弱性を解消し、最新の技術によるパフォーマンス向上と長期的な互換性を確保することが求められました。
  • クライアント・サーバー分離による将来的なAPI公開への布石
    システムアーキテクチャを根本から見直し、モノリシック構造を廃止してクライアントとサーバーの役割を明確に分離することが要望されました。これは、保守性の向上だけでなく、将来的には外部システムと連携するためのサーバーAPI機能を公開することも視野に入れた、拡張性の高い構造への移行を意図したものでした。
  • Spring BootとJavaFXによるモダンな技術スタックへの移行
    旧式のStrutsフレームワークを廃止し、現代のJava開発で主流となっているSpring Bootへ移行することが求められました。また、UIもSWTからJavaFXへ刷新し、よりリッチなユーザーエクスペリエンスとGUI開発の効率化を目指しました。これに伴い、通信方式も従来のServlet直利用からSpring Webへ移行し、セキュリティ面もSpring Securityで強化することが要望されました。
  • 実績あるJasperReportsへの移行と迅速な開発スケジュール
    64bit環境で動作しないCoReports v8.5から、Java環境でのレポート作成に実績があり効率的なJasperReports v7.xへの移行が指定されました。ビジネスへの影響を最小限に抑えるため、これら全ての移行作業を迅速に進め、予定されたスケジュール通りに新システムを稼働させることが強く求められました。

当社の提案・アプローチ

  • 旧ソースとWiki分析に基づく新システム開発
    クライアントから提供された旧システムのソースコードと仕様が記載されたWikiを徹底的に分析することから着手しました。旧システムのロジックと業務フローを正確に把握した上で、Java 21およびSpring Bootをベースとした新システムのソースコード開発を行いました。このアプローチにより、旧システムの機能を忠実に再現しつつ、最新のアーキテクチャへの移行を確実に実現しました。
  • 移行作業の効率化を実現する社内自動化ツールの開発
    変換対象となるソースコードが膨大であったため、手作業による移行では膨大な時間とコスト、さらにヒューマンエラーのリスクが懸念されました。そこで自社は、このプロジェクト専用のコード変換支援ツールを独自に開発・導入しました。このツールにより、旧コードから新コードへの変換プロセスを大部分自動化し、作業の正確性を担保しつつ、開発効率の大幅な向上と期間の短縮を実現しました。
  • AI活用とTestプロセス最適化による品質担保と納期短縮
    開発効率をさらに高めるため、GitHub CopilotなどのAIツールを積極的に活用しました。また、開発完了後にクライアント側で専門のテストチームが編成されることを踏まえ、自社はユニットテストとチェック仕様の策定に注力しました。開発者、レビュー担当者、テスト担当者間の重複作業を排除する効率的なテストプロセスを提案・実行することで、品質を確保しながらも開発全体のスピードアップに貢献しました。
  • 旧システムの実行による業務ロジックの完全な再現
    仕様書やソースコードだけでは把握しきれない細かな業務ロジックや暗黙の仕様を理解するため、自社は旧システムを実際に動作させて検証しました。これにより、新システムが旧システムの機能と動作を抜け漏れなく完全に再現することを保証し、移行後の業務継続性を担保しました。また、開発中に発生した予期せぬ問題に対しても、迅速に調査・研究を行い、具体的な修正案をクライアントへ積極的に提案することで、プロジェクトを円滑に推進しました。