公益法人向け申請情報管理システム
実務
プロジェクト概要
- 公益法人向けの申請情報管理システム(行政連携を伴う直受け受託開発)
担当フェーズ
- 要件定義、基本設計、詳細設計、実装、単体テスト、結合テスト、運用保守
技術スタック
OS
- Linux系(Google Cloud Platform マネージド環境)
言語
- PHP
- JavaScript
- HTML
- CSS
フレームワーク
- jQuery
- Symfony
DB
- MySQL
その他ミドルウェア、サーバー等
- GCP(App Engine, Cloud Tasks, Cloud Scheduler, Cloud Storage)
役割・規模
- 役割: リードエンジニア
- プロジェクト規模: 要員1名(全体5名)
業務内容
- 前任者の退職により、引継ぎ資料なしで既存システムのコードベース解析と仕様把握を実施
- PHP/Symfony 未経験の状態から 1 ヶ月で実運用レベルまで習得し、第二次開発に着手
- 行政連携を伴う複雑な申請業務フロー(抹消申請、取り戻し等のステータス管理)の理解と実装
- Symfony フレームワークを使用した画面開発
- システム不具合の調査・修正および機能追加・改修対応
- 顧客との直接的な要件定義・仕様調整、進捗報告・技術説明
実績・取り組み等
工夫したこと、そのような工夫をした理由
- 動画学習で基本的なアプリを作成してフレームワークの基礎を習得し、その後は実践でキャッチアップした。集中的に学習時間を確保して 1 ヶ月で実運用レベルに到達した
- まず全体構造を把握した後、事前に共有されていた追加開発部分に合わせて簡易的な要件定義を作成して提案。その機能周辺のコードを重点的に理解し、必要に応じて周辺コードを広げていく方式で効率化した。開発環境で動作確認しながらコードと設計資料を読み込んだ
- 全体的な業務フローをチームメンバー(営業・社長)や顧客先に直接確認し、細かい仕様はコードを読んで補足する形で理解を深め、複雑なステータス管理を正確に把握した
- 第二次・第三次開発時には新規機能のドキュメントを作成して今後の保守性を向上させた
- これらの工夫を行った理由は、引継ぎ資料なしで新規言語を習得しなければならず頼れる技術者が社内にいない状況で短期間で実運用レベルに到達する必要があったため、第二次開発が 1 ヶ月後に迫っており限られた時間で効率的にシステムを理解する必要があったため、複雑な業務フローを正確に理解しないと正しい実装ができないため
直面した問題
- 前任者の退職により、引継ぎ期間なし・引継ぎ資料なしで即日対応が必要になった。第二次開発が迫っており、1 ヶ月の猶予をもらったもののその間にシステム全体を理解する必要があった
- PHP/Symfony の経験がなく、1 ヶ月で実運用レベルまで習得する必要があった。頼れる技術者が社内におらず、単独で学習・開発を進めなければならなかった
- 既存のコードが高度に抽象化されており構造を理解するのに時間を要した。コードスタイルに慣れるまで意図を読み取ることが難しかった
- 行政連携を伴う申請システムで、抹消申請や取り戻しなどステータス管理が複雑だった。業務フローを正確に理解しないと正しい実装ができない状況だった
問題を解決するために行った施策、解決策
- 動画学習で基本的なアプリを作成してフレームワークの基礎を習得し、その後は実践でキャッチアップした。集中的に学習時間を確保して 1 ヶ月で実運用レベルに到達した
- まず全体構造を把握した後、事前に共有されていた追加開発部分に合わせて簡易的な要件定義を作成して提案。その機能周辺のコードを重点的に理解し、必要に応じて周辺コードを広げていく方式で効率化した。開発環境で動作確認しながらコードと設計資料を読み込んだ
- 全体的な業務フローをチームメンバー(営業・社長)や顧客先に直接確認し、細かい仕様はコードを読んで補足する形で理解を深め、複雑なステータス管理を正確に把握した
- 第二次・第三次開発時には新規機能のドキュメントを作成して今後の保守性を向上させた
その解決策を行った理由
- 引継ぎ資料なしで新規言語を習得しなければならず、頼れる技術者が社内にいない状況だったため、短期間で実運用レベルに到達する必要があった。第二次開発が 1 ヶ月後に迫っており、限られた時間で効率的にシステムを理解して開発に入る必要があった
- システム全体を完全に理解する時間的余裕がなかったため、追加開発に必要な部分を優先的に理解する戦略が必要だった。MVC モデルの基礎知識があったため、フレームワークの全体像を把握してから必要な部分を深掘りする方が効率的だった
- 複雑な業務フローを正確に理解しないと正しい実装ができず顧客に迷惑をかけるリスクがあったため。コードだけでは業務の背景や意図が分からない部分があり、関係者からのヒアリングが不可欠だった
- 引継ぎ資料がない状況を経験したため、今後同じ問題が起きないよう、追加開発時にはドキュメントを残す必要があった
成果(工夫や解決策を実施した後の成果)
- PHP/Symfony 未経験の状態から 1 ヶ月で実運用レベルに到達し、第二次開発・第三次開発を各 1 ヶ月で完了した(他プロジェクトと並行しながら 7 ヶ月間対応)。権限による編集内容の制御機能など、顧客要望に応える機能追加を実現した
- 緊急対応にもかかわらず安定した開発・保守を提供し、顧客から感謝の言葉をいただいた。追加開発の依頼を受けるなど、継続的な信頼関係を構築した
- 行政連携を伴う申請システムの複雑な業務フローを短期間でキャッチアップし、正確な実装を実現。単独対応で安定運用を継続的に支援した
- 急な環境変化に対しても一つずつ課題を整理して対応する力を身につけ、顧客と直接コミュニケーションを取りながら要件調整や進捗報告を行う経験を積んだ