## プロジェクト概要
中小企業の情報システム部の問い合わせ工数削減を目的とした自社ポータルサイトの設計から運用まで一貫対応。
## 役割・体制
### 自身のポジションと役割
- フルスタックエンジニアとして、フロントエンド(Next.js, TypeScript)とバックエンド(Golang)の概要設計、DB設計、API設計、コーディング、テスト、リリースまで幅広く担当。
- AWSのEKS環境におけるKubernetes運用やTerraformを活用したインフラをDevOps的に実装・運用
- GitLab CIを利用して自動リリースや停止運用のパイプライン構築を行い、DevOps的な運用改善を推進。
- 現在はユースケースに基づく要求定義から携わっており、品質とスピードを両立した開発を実現のための施策に取り組んでいる。
### チーム規模と構成
- エンジニア3名とリーダー1名の小規模チームにて、1要件1名の体制で役割分担しながら開発。
- 領域ごとに管理メンバーを置いており、フロントエンド領域の管理を担当している。
- フレームワークの脆弱性対応などに迅速に対応したり、企画チーム・デザインチームと密にコミュニケーションを図ったり、安全で使いやすいアプリケーションの開発をした。
## 背景・課題
- 中小企業の情報システム部門の問い合わせ対応に多大な工数がかかっており、これを削減するためのポータルサイト開発が急務であった。
- お客様の課題を探りながらの開発だったため要件や仕様が頻繁に変動し、迅速に要件に対応する開発スピードと使いやすく安全と言う品質の両立が必要だった。
## 実際の取り組み
### 開発環境
- フロントエンドはTypeScriptおよびNext.jsを使用し、ユーザー体験向上のため最新フレームワークを活用。
- バックエンドはGolangで構築し、軽量かつ拡張性の高いAPI設計を実施。
- サーバーのメモリ、cpuのパフォーマンスの問題から、LaravelからGolangに移行した経緯がある
- クラウドサービスは主にAmazonWebService(以降AWSと呼ぶ)とGoogle Cloud Platform(以降GCPと呼ぶ)を採用している
- フロントエンドサーバーとバックエンドサーバーはPlatform engineeringチームが作成した、EKS基盤にhelmを使ってdeployしている
- AIを使った機能にはGCPのVertex AIを利用している
- その他のサーバーレスコンピューティングやオブジェクトストレージにはAWSのリソースを利用しており、Terraformにより管理している
- Gitを用いたソースコード管理とPlaywrightによる自動テスト、CI/CDパイプラインで品質とデリバリー速度の向上を実現。
### 設計
- バックエンドはClean Architecture、フロントエンドはContainer/Presentational構成とfeature構成を採用しており、保守性の高いコードを構築。
- DB設計やAPI設計では追加機能を実装する際に耐えられることを意識しており、Architecture Decision RecordやDesign Docなどを記載してチーム全体でレビューを行なっている。
- クラウドサービスを多く利用する機能ではボトルネックが発生することが予想できるため、Architectureの構成を記載してパフォーマンスチューニングで使えるようにしている。
### 改善内容
※ 業務外での自主的な改善内容の一部を記載
- EKS上のpodの停止・起動運用を工夫し、リソース利用の最適化と開発工数削減を実現。
- GitLab CIのパイプラインのパフォーマンスチューニングを進めることで、ビルドやテストの実行時間を短縮。
- Figma MCPやStorybook MCP, AWS MCP をチームや会社に普及して、AI利用の推進。
- 現在は、アラート通知やログの監視基盤の整え、運用を安定化させることやリリースした機能が利用されていることを可視化することに力を入れている。
### その他アピールポイント
- DevOps的な考え方を取り入れ、開発から運用・保守まで一貫して担当し、継続的な品質改善に取り組んだ。
- 現在はユースケースごとに要求を整理し、プロダクトの価値やミッションに貢献できる機能の実装に力を入れている。
## 成果・価値
- 自動リリースの仕組みとCIパイプラインの最適化により、リリース資材作成の時間を『約20%短縮』し、開発の迅速化に大きく貢献。
- 与えられた業務以外に、チームメンバーがより働きやすい環境の改善に自主的に取り組んできた。
- フルスタックエンジニアとして幅広い分野の開発・運用ができるため、少人数体制ながらも高い生産性を実現。