プロジェクト概要
オンラインラーニングシステムおよびライブセミナー配信クラウドサービスのバックエンド開発・運用保守
AWS上で稼働する自社SaaSプロダクトにおいて、Goを用いたバックエンドAPIの設計・実装、既存機能の改善、運用保守を担当。
ユーザー管理・ファイル管理などのマイクロサービス開発を中心に、ユーザーストーリーに基づく要件整理、受入基準の作成、ADRによる設計方針の検討、実装、テスト、リリース、運用保守まで一貫して対応。
また、GitHub Copilotを活用し、要件定義・設計・実装・コードレビューの各工程に生成AIを取り入れることで、開発効率と品質の向上に取り組んだ。
担当
* ユーザーストーリーに基づく要件整理および受入基準の作成
* ADRを用いた技術選定・アーキテクチャおよび設計方針の検討
* Goを用いたバックエンドREST APIの設計・実装
* ユーザー管理・ファイル管理などのマイクロサービス開発
* 未ログインユーザーを対象としたパスワード設定メール再送APIの開発
* ユーザー一覧画面とCSV出力におけるソート順の不整合修正
* MySQL・DynamoDBを利用したデータ取得・更新処理の実装
* Terraformで構成管理されたAWS環境でのバックエンド開発・運用
* GitLab CI/CDを用いたテスト・デプロイ
* 単体・結合テスト、コードレビュー、リファクタリング、障害調査・改修
* GitHub Copilotを活用した既存コード解析、要件・設計検討、実装支援
* 現場のアーキテクチャに合わせたAIセルフコードレビュー用プロンプトの作成
使用技術
* Go / JavaScript / Node.js
* MySQL / DynamoDB
* AWS(ECS、ECR、RDS、S3、DynamoDB)
* Terraform / Ansible
* Docker / Linux
* GitLab / GitLab CI/CD
* Backlog
* GitHub Copilot(生成AI・複数モデルの使い分け)
課題
自社SaaSプロダクトの継続的な機能追加・改善において、ユーザーストーリーから業務要件を整理し、仕様の曖昧さや考慮漏れを解消したうえで、短い開発サイクルの中で品質を確保する必要があった。
また、ユーザー管理機能では、パスワード設定が完了していないユーザーへのメール再送が手作業となっており、運用負荷の軽減が求められていた。加えて、ユーザー一覧画面とCSV出力結果の並び順に差異があり、データ確認や照合作業の効率に課題があった。
さらに、複数のマイクロサービスで構成されるシステムにおいて、既存アーキテクチャとの整合性を維持しながら機能追加を進める必要があり、コードベースの理解や改修時の影響範囲調査、コードレビューの効率化が求められていた。
取り組み
1. 要件定義・設計から実装までの一貫した対応
ユーザーストーリーをもとに受入基準を作成し、仕様の曖昧な点や考慮事項を整理したうえで、関係者との認識合わせを実施した。
設計工程では、ADRを用いて技術選定やアーキテクチャの選択肢を比較し、採用理由やトレードオフを整理。
GoによるREST API開発では、既存のクリーンアーキテクチャに沿った責務分離や依存関係を意識し、保守性・拡張性を考慮した設計・実装を行った。
また、1機能ごとに要件整理から設計、実装、テスト、リリース、運用保守まで一貫して担当し、継続的な機能改善に対応した。
2. ユーザー管理機能の追加・改善
運用担当者が手作業で対応していたパスワード設定メールの再送業務について、検索条件に合致する未ログインユーザーを抽出し、対象ユーザーにメールを再送信するAPIを新規開発した。
既存のユーザー管理機能との整合性を考慮し、要件整理からAPI設計、Goによる実装、テストまで対応した。
また、ユーザー一覧画面とCSV出力結果で並び順が一致しない不具合について、データ取得処理やソート条件、出力時のデータ整形ロジックを調査。
バックエンド側の処理を修正することで、画面表示とCSV出力の順序を統一し、データ確認時の利便性を改善した。
3. 生成AIを活用した要件定義・設計・開発の効率化
GitHub Copilotを開発工程に取り入れ、要件定義・設計・実装・コードレビューの各工程で、用途に応じたAIモデルの使い分けを実施した。
参画初期には、生成AIを用いて既存コードベースやアーキテクチャを解析し、システム全体の構成や処理の依存関係を効率的に把握することで、Go案件へのキャッチアップを加速させた。
要件定義工程では、推論力の高いモデルを活用し、ユーザーストーリーから受入基準を作成する際の考慮漏れやエッジケースを洗い出し、仕様の精度向上に取り組んだ。
設計工程では、ADR作成時に生成AIを活用して技術選定の候補やメリット・デメリットを比較・整理し、設計判断を支援する情報として活用した。
実装工程では、既存コードの解析や改修影響範囲の調査、GoによるAPI実装に生成AIを活用。生成されたコードは、現場のクリーンアーキテクチャや設計方針との整合性を自身で確認し、必要な修正・検証を行った。
さらに、現場のアーキテクチャやコーディング規約を反映したセルフコードレビュー用プロンプトを作成し、レビュー前に設計方針との整合性や潜在的な問題点を確認する仕組みを取り入れた。
4. AWS環境での開発・運用保守
Terraformで構成管理されたAWS環境において、ECS・RDS・DynamoDB・S3などを利用するバックエンドサービスの開発・運用に対応した。
GitLab CI/CDを利用した自動テスト・デプロイの開発フローに従い、コードレビュー、単体・結合テスト、リリース対応を実施。
また、既存機能の不具合調査や改修、リファクタリングを行い、マイクロサービスの安定稼働と継続的な品質改善に取り組んだ。
成果
* 要件定義から運用までの一貫した開発: ユーザーストーリーに基づく受入基準作成、ADRによる設計検討、GoによるAPI実装、テスト、リリース、運用保守まで担当し、継続的な機能開発に貢献した。
* 運用業務の効率化: パスワード設定メールの再送APIを新規開発し、従来手作業で行われていた対応の効率化と運用負荷の軽減に貢献した。
* データ整合性・利便性の向上: ユーザー一覧画面とCSV出力結果のソート順を統一し、データ照合時の確認負担や誤認リスクを軽減した。
* 開発効率の向上: GitHub Copilotによるコードベース解析、影響範囲調査、実装支援を取り入れ、既存システムの理解や機能改修を効率化した。
* 設計・品質管理の強化: 生成AIを活用した受入基準の考慮漏れ確認やADRの比較検討、独自のセルフレビュー用プロンプトにより、設計品質の向上とレビュー指摘の削減に取り組んだ。
* AI駆動開発の実践: 要件定義から実装・レビューまで、各工程の特性に応じてAIモデルを使い分け、開発スピードと品質の両立を図った。