RevComm Tech Blog

コミュニケーションを再発明し 人が人を想う社会を創る

フロントエンドエンジニアがバックエンドに挑戦してみた

はじめに

RevComm のフロントエンドエンジニアの上川です。MiiTel Call Centerというプロダクトの開発を担当しています。

これまで、ロードマップ機能の開発では、バックエンドとフロントエンドの担当者が完全に分かれていました。

今回は、フロントエンドを担当してきた自分が、バックエンド開発に挑戦してみた経験と、そこから得た学びについて共有したいと思います。

バックエンド開発に挑戦した背景

バックエンドチームが他のタスクに注力している状況を受け、コールセンターの「ロードマップ機能」をフロントエンドチームだけで実装する提案がありました。

以前からバックエンド開発に興味があったため、この機会に挑戦することを決めました。

実装内容

コールセンターに表示する新しい項目の実装を担当しました。

具体的には、新しい項目の値をバックエンドで計算・取得し、フロントエンド側のテーブルに表示するまでの一連の実装を行いました。

この経験により、これまでのフロントエンド中心の視点から、データ取得からUI表示までの全体的なフローを把握できるようになりました。

開発の進め方

PMの主導のもと、以下のように段階的に進めていきました。余裕を持った計画のおかげで、不安なく円滑に進行することができました。

  1. 最初の1ヶ月は、Design Docsを活用しながら週1回の短いミーティングで要件を詰めていきました。
    1. Design Docsには以下の内容を記載していきました。
      1. 項目の値の計算式
      2. 既存の類似項目の実装調査と修正箇所の特定
      3. Redashを活用したSQL文の作成
  2. 次に、他のフロントエンドメンバーとペアで1つの機能を実装し、それぞれの担当部分をミーティングで共有しました。
  3. 最後に、1つの機能を単独で実装しました。

チームサポートのありがたさ

ENUMを扱うマイグレーションやAWS Athenaでのテーブル再構成など、初めて触れる領域で苦労することもありました。

ただし、バックエンドチームのメンバーにSlackやMeetで気軽に質問できたおかげで、エラーや不明点をスムーズに解決できました。

バックエンドとフロントエンドが同じスクラムチームで活動していることや、チームオフサイトで直接交流する機会があったことで、質問しやすい環境が自然とできていたと感じています。

新たな学び

Python

以前は基礎的な経験しかなかったPythonですが、今回文法を体系的に学び直し、Pydanticなどのライブラリの役割についても深く理解することができました。

GraphQL

QueryやSubscriptionの仕組みについて、データベースからデータを取得し、レスポンスとして返すまでの一連の流れを理解することができました。

DB

データベースマイグレーションの実践的な手法と重要な注意点について学びました。

AWS

AthenaのテーブルとECSのAuto Scalingの基本的な操作を経験しました。

エラー対応

バックエンドの仕組みを理解したことで、Datadogから通知されるエラーの内容や影響範囲を正確に把握できるようになりました。

レポートのバッチ処理でエラーが発生した際も、どのデータが欠損する可能性があるのか、そしてそれがフロントエンドの表示にどう影響するのかを的確に判断できるようになりました。

ロードマップ機能を一人で実装できるようになった

今回の最大の成果は、フロントエンドからバックエンドまで、ロードマップ機能を一人で実装できるようになった点です。

これまで他のメンバーに頼っていた領域も自力で対応できるようになり、開発の効率性と柔軟性が大幅に向上しました。

この経験を糧に、今後はより大規模な機能開発にも挑戦していきたいです。

技術的な視野が広がったことで、複雑な課題にも自信を持って取り組めるようになりました。

おわりに

今回、バックエンド開発に挑戦したことで、新たなスキルを身につけることができました。これまでブラックボックスだった部分が明確になり、フロントエンドとバックエンドの仕組みを深く理解できるようになりました。

バックエンドメンバーやチームのサポートのおかげで、未知の領域や初歩的な課題を着実に乗り越え、自走できる範囲が広がりました。その結果、ロードマップ機能をフロントエンドからバックエンドまで一人で実装できるようになり、開発の効率性と柔軟性が向上し、自身の成長も実感できました。

今後は、この経験で得た知見とスキルを活かし、より大規模で複雑な機能開発にも積極的に挑戦していきます。さらなる学びを重ね、チームとプロダクトに貢献できるエンジニアとして成長を続けていきたいと思います。