## プロジェクトの目的
古くから運用されてきた動画配信サービスだが、内部構造が複雑化しており新規機能追加や改善などの要求に対して対応・調査が難しく (工期の長期化やバグの危険性増加) なってきている。これを改善するために全く新しいシステムとして作り直すプロジェクトである。
## チーム構成・役割
Web フロントエンドチーム発足時からリードエンジニアとして以下のような仕事をしている。
- 技術選定
- 開発環境の構築および整備
- 初期コードの実装
- Web フロントエンドチームの進捗管理
- 他チームとの技術的な窓口
- PM と連携して仕様整理・実装方針の検討
- 開発ポリシーや意思決定プロセスの整備
PM やバックエンド、運用、インフラチームなどプロジェクト全体では 50 名以上が関わっており、Web フロントエンドチームは約 10 名で開発を行っている。
## 使用技術・開発環境
PHP から Web フロントエンドを剥がすために、Next.js App Router を使って全く別のアプリケーションを構築している。SEO を強く意識しつつ運用費用を抑える必要があるため、Bot に対しては SSR を行い、ユーザーに対しては CSR のアプリケーションを提供している。2 つのアプリケーションを同時に開発するために Monorepo 構成をとっており、共通で利用できるコードはワークスペースへ切り出すことで開発・運用の手間を減らす狙いがある。また、SSR は GKE に CSR は GCS へ配置し、アプリケーション前段に置いた Nginx で Bot 判定を行い、 Bot の場合は GKE にルーティングさせるような構成をとっている。この Nginx も Web フロントエンドチームが管理している。Web API との通信は GraphQL を利用しており、データ取得ライブラリは urql を採用した。その他には Jest, Zustand, zod などを使っている。
## 取り組み
### 開発基盤・技術選定
チームメンバー全員が業務で Next.js App Router を利用するのが初めてだったため、App Router 勉強会の開催、初期コードの実装、開発ルールの整備、モブプログラミングの実施などを行い、チームがスムーズに開発を開始できる状態を作った。また、技術選定や設計方針の背景が後から追えるように ADR を導入した。2026/06 現在、リプレース前の現行アプリケーションを運用してきたメンバーが段階的に新しいアプリケーションの開発へ加わっているが、ADR として残した意思決定は「納得して開発に加われている」「背景を理解することで技術的な提案がやりやすい」との評価をもらっている。
### プロジェクト推進・チーム間連携
Web フロントエンドチームの進捗管理に加え、PM、バックエンド、運用、インフラチームとの窓口を担当した。仕様や実装方針に不明点がある場合は、関係者と認識を揃えながら仕様調整・リリースまでの進め方を整理した。また、既存機能をそのままリプレースするだけではなく、現在のユーザー価値や運用コストを踏まえて、機能を残すべきかを検討することを意識した。PM と連携し、「本当にこの機能が必要か」「リプレース・メンテナンスコストに見合うユーザー価値があるか」といった観点で仕様を整理し、ユーザーにとって価値が薄い機能については、実装しない判断や簡素化する判断も行なった。
### パフォーマンス・コスト最適化
Next.js が自動生成する .txt ファイルが高頻度でリクエストされていたことに着目し、ブラウザキャッシュを活用する仕組みを実装した。これにより不要なリクエストを削減し、年間約 2,000 万円弱の運用費用削減に貢献した。技術的な改善が、アプリケーションの性能や開発効率だけでなく、運用費用や事業上のコストにも影響することを意識し、ユーザー体験と事業成果の両方に貢献することができた。
## 所属会社
合同会社DMM.com