株式会社ルトラ / 技術推進部
中古車販売システムのAPI開発
## 概要 現在アサインされている案件。 6名体制のチームにメンバとして最初期(開発基盤のみ整備済み)から参画。 中古車販売ECサイトやアプリから使われる API の開発。 あらゆる変更に多大なコストがかかってしまう既存のシステムのリプレイスが目的。 ## 技術など - GitHub - Java17 - SpringBoot - MySQL - GraphQL ## 業務内容 ### 設計 画面デザインと顧客の要望に基づいたAPI仕様の設計。 開発の方針はスキーマファースト。GraphQLファイルからドキュメントが生成される仕組みがあり、GraphQLのスキーマ定義+コメントによるドキュメンテーションを「設計」と呼称していた。 ### 実装 GraphQLのスキーマ定義に基づき実装。 ### テスト 単体テスト:JUnit5 で実装 結合テスト:専用の QA チームが実施 ### リファクタリング チーム全員で必要に応じてissueを起票→リーダが優先度を決定→各人が適宜対応していくという仕組みで実施。 ## 開発内容A ### 概要 Spring が Web モードの時だけ、キャッシュレイヤを挿入できるような仕組みを実装。 ### 背景・課題・問題点 あるAPIが一回のリクエストで何度も外部に問い合わせする状態になっていた。メイン機能の参照 API でもあることから、パフォーマンスへの悪影響を避けるために改修が必要だった。 ただし、このプロジェクトにはAPI(Web・メイン機能)とバッチ(Not Web)がある。この場合、バッチからも Service や Repository を使えてしまうため、単純に「キャッシュをリクエストスコープにする」という実装にはできなかった。 -> Spring の @Chacheable を拡張して、アノテーションベースでキャッシュレイヤを挿入する仕組みを実装することで解決。 ## 開発内容B ### 概要 業務効率化のためのツール作成 ### 背景・課題・問題点 以下の作業を効率化する必要性を感じ、自動化ツールを作成 - GraphQLクエリを Java の StringBuilder に変換 - GraphQL に定義された Enum を Java の Enum に変換 - AWS Cognito のトークン更新