### 概要
株式会社D2CとNTTドコモの約7345万人の顧客情報を活用した広告配信サービスです。
弊社の主な開発・運用領域は、代理店の入稿システム、ユーザー属性蓄積のセグメントサーバー、計測サーバー、広告配信サーバーです。
### 私の貢献
#### 代理店の入稿システムについて
使用技術は、React, TypeScript / Scala, PlayFramework です。
アーキテクチャとして、フロントはSPAで内部のデータフローはFluxを、バックエンドとはRESTでやりとりし、PlayFrameworkを採用しています。
私はフロントのユニットテストを充実させ、ドメインロジックに関わるモデル周りのカバレッジを90%以上に押し上げました。
また、位置情報に基づいた広告配信の開発時に、Google Maps Platform を用いた位置情報セグメントの登録フォームを独自で構築し、先方からの修正要求なく実装されました。(今まで1, 2回の修正は当たり前でした。)
1年間はフロントエンドの開発に従事し、2年目以降はバックエンドの開発が主でした。
#### 広告配信サーバーについて
使用技術は、Scala, PlayFramework です。
アーキテクチャとして、DDDの部分的な適用(Repositoryなど)と、クリーンアーキテクチャを採用しています。
私は配信サーバーが配信時に利用するクリエイティブのジャンルに関わる設定値が、起動時にしか読み込まれないために変更の都度、サーバーを再起動しなければいけない問題に対して、RDBから定期的にキャッシュする機構に切り替える改修をしました。これにより年85万分の工数費用が削減されました。
また、オークション時に単価が高いクリエイティブが勝ち続けることによるCTR低下を防ぐための機能の改修と、それによるパフォーマンス劣化がないかのテストを行いました。結果的に大きな劣化がなかったため、導入することに。
#### 開発以外の貢献について
プロジェクト毎に暗黙のルールや、ソースコードレビューの指摘に開発経験の浅い方に共通点があることなどに気付き、チームのボトムアップを図るためにオンボーディング資料を用意し、コーディングのポリシーや、レビュワーに優しいガイドラインの策定を行った。
単体テストを行う際に、テスティングのノウハウに個人差があり、バグ発見の精度に違いが見られたので、テストツールの統一と、ノウハウが蓄積されるようチームのポリシーを設定した。
開発環境にAWSを採用していたため、インフラ費用を見える化するために前日との差分と毎週金曜日の終わりにその月の費用をサマリでSlackへ出力するボットを開発した。結果的に開発者が自主的にリソースを停止したり不要ならすぐ削除するようになり、節約意識を高めることに成功した。