LINEヤフー プロダクトストラテジ部の江口です。普段はバックエンドエンジニアとして業務に関わっていますが、今回はReact.jsについての記事を執筆します。この記事では私たちが開発する「UTS Portal」という社内向けプロダクトで発生していたReact.jsのパフォーマンス悪化問題について原因と改善内容をまとめたものです。
UTS Portalについて
まず私たちが開発するUTS Portalについて説明します。
UTS PortalとはUTS(Universal Tracking System)という内製ログトラッキングシステムを利用する際に「どのようなトラッキングログを取得したいか?」を事前に定義・管理しておくため のポータルサイトです。
ログ定義を管理しておくことで、取得するログがユーザーのプライバシー侵害とならないかを事前にレビューする際や実際にログの取得を開始した後のモニタリング業務の際に役立てることができます。
Reactコンポーネント構成
UTS PortalのReactコンポーネント構成について解説します。UTSには「Pageview」「Click」「Impression」といったユーザーの行動イベントの種類があります。画面上ではそれぞれのEventTypeごとにタブが分かれており、各タブの中で複数のセクションを定義する形です。
(1つのSection = 対象のアプリにおける1つのScreen のようなイメージです)
それぞれのEventTabの中には「Add Section」というボタンがあり、これをクリックすると空のSectionが1つ追加されます。またそれぞれのSectionはCopyとRemoveのボタンを保持しています。
Add Sectionの機能は各EventTabで共通の処理になっており、SectionのCopyとRemoveについては各EventTypeごとに独自の処理になるため、コンポーネント構成としては以下の図のように、onClick系の関数を親コンポーネントから子コンポーネントへpropsとして受け渡す構造になっています。