株式会社LASSIC / IT事業部・マネージャー
官公庁業務改善システムの開発
◾️システム ・インフラ:Windows Server 2022(オンプレミス) ・ミドルウェア:SQL Server 2022, Apache, Apache Tomcat ・開発環境:Windows11, Hyper-v ・バックエンド:Java 17(Spring boot, Spring Batch) ・フロントエンド:HTML/CSS(Bootstrap) ・バージョン管理:Git (Gitlab) ◾️チーム規模 ・5名(自分,PM1名, SE2名, 技術サポート1名) ◾️業務 ・基本設計 ・DB設計 ・アプリケーションアーキテクチャ設計 ・システムアーキテクチャ設計 ・詳細設計 ・実装(実装、コードレビュー) ・アプリケーション構築 ・ミドルウェアキッティング ・本番環境サーバーにミドルウェアをインストールする作業を実施 ・単体テスト(試験仕様書レビュー、試験実施、試験結果レビュー) ・結合テスト(試験仕様書作成・レビュー、試験結果レビュー) ・顧客折衝 ◾️実績 ・某大手メーカーがクライアントでエンドユーザーが行政機関の案件 ・エンドユーザーの業務改善システムをスクラッチで開発 ⚫︎開発環境の構築 ・セキュリティの制約により、開発環境はスタンドアローンで行う必要があり、下記のことを調べながら実施し、オンライン環境と大差ない開発環境を構築した ・Gitlabの導入:ソースコードを集約管理するためにセルフマネージド版のGitlabをWSL上に構築 ・検証環境の構築:Windows Server 2022をHyper-Vを用いて構築し、結合試験環境を構築。 ・検証環境の構築自体が当初計画になく急遽実施したものであったが、この環境構築により、アプリケーションの品質担保はもちろん、リリース手順の確立などに貢献した ・ネットワーク整備:上記Gitlabと検証環境にLAN上からアクセスできるようにポートフォワーディングの設定や、リモートデスクトップの許可などを行った ⚫︎DBの設計 ・初めて1からDBを作成するにあたり、データ要件に照らして照合順序の設計を行なった ・DBに入ってくる値は多くが日本語で、また検索機能が重要なシステムであったためそれらを考慮して最適な照合順序をDB、カラムにそれぞれセッティングをした ・また、データ型、サイズ、キー制約なども仕様に従って設計をおこなった ⚫︎ミドルウェアの選定とDBのキッティング ・システムはバッチシステムと、DBを管理するWEBシステムで構成されており、このうちWEBシステム側のミドルウェア選定で貢献ができた ・引き継ぎ前のチームから引き継いだミドルウェア構成にはApacheが含まれておらず、アプリケーションサーバのみの構成だった ・今後の運用や耐障害性を考慮し参画後にApache、Apache Tomcatの構成に変更した ・本番環境に導入するサーバにDBをキッティングする作業について、当初作業担当だと思われていたクライアント側のチームが認識しておらず急遽弊社側で対応することになった ・キッティング手順を確立するために急ピッチで検証環境を構築し、その手順を持って本番環境サーバにDBのキッティングを行なった ・急な依頼であったが、手順を確立していたことにより予定よりも1日早く作業を完了させることができた ⚫︎Java、Springのキャッチアップ ・本案件で初めて触ることになったJavaとSpringのキャッチアップのため、自宅でも開発を行った ・結果としてプロジェクト中盤にはプロジェクト内で一番JavaとSpringについて詳しくなり、自身のタスクはもちろん他メンバーのコーディングのサポートも行い、進行に大きく貢献した ⚫︎性能の改善 ・自身が作成したバッチアプリケーションの処理速度向上をクライアントから依頼され対応した ・対応は以下のように進めた ・検証環境の準備:バッチ処理の途中で外部のAPIをコールする仕組みがあるためApacheを使ったstubを用意した ・処理速度の計測:デバッグログを仕込んで、どの部分で処理に時間がかかっているかを可視化させた ・仮説を立てる:処理時間が負荷によって指数関数的に増加していることから、不要になったオブジェクトが正しく破棄されていないのではないかという仮説を立てる ・ヒープ領域の確認:jstatコマンドやjmapコマンドを駆使して各領域の逼迫状況とオブジェクトが正常に破棄されているかを調査 ・プログラムの修正:検証の結果オブジェクトが正常に破棄されていないことがわかったので、適切にオブジェクトが破棄されるようにプログラムを修正 ・上記の対応の結果同じ負荷の下で処理時間を42分から5秒まで短縮することができた ⚫︎将来を見越したドキュメント整備 ・本案件は3ヶ年計画で、少なくとも今後2年はシステムが拡張される ・開発を優先したため整備しきれなかったドキュメントや、情報が多々あったためチーム内で棚卸しを行い、後続のチームが困らないようにドキュメント整備を進めている ・クライアントやエンドユーザーに関係のある、システムの中身に関することだけでなく、開発に関することも丁寧に棚卸しを行い情報の整理を行なっている