卸売業及び石油関連企業向け基幹業務パッケージ 再構築
期間: 2012年4月1日 - 2012年10月31日 (7ヶ月)
チーム規模: 20人
役割: プログラマ , フルスタックエンジニア
工程: 実装・検証 , 結合テスト , 総合テスト
概要
一般卸売業及び石油卸関連企業向けの既存パッケージソフト2本(VB6.0、VBA)を統合し、最新のWeb技術(ASP.NET)で完全再構築するレガシーモダナイゼーションプロジェクト。人員不足により急遽参画要請を受け、20名体制のコア開発期間に従事。
ビジネス側の低い見積もりと実際の開発難易度の高さとのギャップに苦しみながらも、スパゲティコードからMVCアーキテクチャへの刷新を実現。
プロジェクトの背景
技術的負債の解消とビジネス要求への対応:
- VB6.0/VBAという保守困難な旧技術スタックからの脱却
- Webベース化によるアクセシビリティ向上とマルチテナント対応
- IBM i/RPG中心のキャリアから、Web技術への技術領域拡大の意図的な選択
担当業務
レガシーコード解析・リバースエンジニアリング
最大の課題: ドキュメント不足とスパゲティコード:
- 既存システム調査: 2つのパッケージ(各数十画面規模)の全機能を解析
- リバースエンジニアリング: 低レベルで難読なソースコードを読み解き、ビジネスロジックを抽出
- 設計書再構築: 旧プログラムを唯一の「仕様書」として、新システムの設計書を新規作成
- 動作確認: 既存システムの挙動を詳細に記録し、互換性を確保
フルスタック開発
約10画面の設計・実装を担当(フロントエンド・バックエンド両方):
- フロントエンド: ASP.NET Webフォーム、JavaScriptによるUI実装
- バックエンド: Visual Basic.NET、ストアドプロシージャ(SQL Server)によるビジネスロジック実装
- アーキテクチャ刷新: スパゲティコードからMVCパターンへの移行
品質保証
- 単体テスト・結合テスト・総合テストの実施
- 旧システムとの機能互換性検証
技術的挑戦
レガシーからモダンへの刷新
- Before: VB6.0/VBAのスパゲティコード、グローバル変数多用、責務不明瞭
- After: ASP.NET MVC、責任分離、保守性・拡張性の向上
BtoBパッケージ特有の課題
- 多様な顧客ニーズ: 卸売業と石油業では業務フローが異なる
- マルチテナント設計: 各企業の独自要件を吸い上げつつ、共通基盤として提供
- データ分離: テナント間のデータ隔離とセキュリティ確保
プロジェクト制約との戦い
- 低い見積もりvs高い難易度: ビジネス側の楽観的な見積もりと、実際のレガシー刷新の複雑さとのギャップ
- 短期間での大規模刷新: 7ヶ月で2つのシステムを統合・Web化
成果・学んだこと
- レガシーモダナイゼーションの実践力: ドキュメントがない状態から、コードを唯一の情報源として新システムを構築する能力
- Web技術への転換: IBM i/RPG中心からASP.NET/JavaScript/SQLへの技術スタック拡大
- BtoBパッケージビジネスの理解: 多様な顧客ニーズを一つのプラットフォームで満たす設計思想
- パフォーマンスと保守性の改善: スパゲティコードから構造化されたアーキテクチャへの移行による、長期的な価値向上
- プロジェクト制約下での成果創出: 理想と現実のギャップの中で、優先順位をつけて最大の価値を生み出す力
IBM iという堅牢なエンタープライズ基盤から、Webという広大な技術領域へ。意図的なキャリア拡張の第一歩として、レガシー刷新という困難な課題に挑戦しました。