Upgrade to Pro — share decks privately, control downloads, hide ads and more …

複雑すぎる経費精算のフロントを1から作り直してみた freee技術の日

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for katapi (e-moha) katapi (e-moha)
December 03, 2025
120

複雑すぎる経費精算のフロントを1から作り直してみた freee技術の日

freee 技術の日 https://freee-tech-day.freee.co.jp/2025/ の発表スライドです。
YouTube のアーカイブもあります https://www.youtube.com/live/uc-gj78YYHY?t=4870s

一緒に Hack Everything して経費精算と戦いたい方は
https://jobs.freee.co.jp/ からエントリーするか、 https://x.com/ktpi2000 まで DM お願いします💪

Avatar for katapi (e-moha)

katapi (e-moha)

December 03, 2025

Transcript

  1.   useEffect とは? コンポーネントを外部システムと同期させるための React フック • API からのデータ取得 •

    DOM の操作 • タイマー (setTimeout, setInterval) • イベントリスナーの登録‧解除 React のレンダリングとは直接関係ない処理を実⾏
  2.   複雑な処理をしている例 領収書アップロード→解析→⾃動補完→重複チェック useEffect 1 • 領収書が添付されたときに polling useEffect 2

    • ⾦額、⽇付、取引先を⾃動補完 useEffect 3 • 同じ領収書が使われていないかのチェック 互いに依存関係にあるものがたくさんある
  3.   複雑な処理をしている例 領収書アップロード→解析→⾃動補完→重複チェック useEffect 1 • 領収書が添付されたときに polling useEffect 2

    • ⾦額、⽇付、取引先を⾃動補完 useEffect 3 • 同じ領収書が使われていないかのチェック 互いに依存関係にあるものがたくさんある 一歩間違えれば
 大きな事故(バグ)につながる

  4.   AI を⽤いたロジックの⽂章化 • 背景 ◦ 95箇所の useEffect でどんな処理をしているのかが不明瞭 •

    実際にしたこと ◦ AI を⽤いた調査を実施 ◦ UI コンポーネントごとにどんな機能があるかをまとめている • ⽂章化して分かったこと ◦ 似たような処理が複数箇所にある ◦ 状態管理が⼆重化、データフロー不透明 ◦ 巨⼤な依存配列(最⼤11個)
  5.   useEffect を増やさない取り組み • 実際にしたこと ◦ API 通信は TanStack Query

    を使⽤ ▪ loading, polling 管理の簡略化 ◦ store は zustand で⼀元管理 ▪ action 関数はユースケースごとに書いている ▪ どのようにデータが変わったかが分かるようにしている ◦ なるべく純粋な関数にしてテストを書くことを徹底
  6.   useEffect を増やさない取り組み • 実際にしたこと ◦ API 通信は TanStack Query

    を使⽤ ▪ loading, polling 管理の簡略化 ◦ store は zustand で⼀元管理 ▪ action 関数はユースケースごとに書いている ▪ どのようにデータが変わったかが分かるようにしている ◦ なるべく純粋な関数にしてテストを書くことを徹底 95 → 9個まで useEffect を減らすことに成功💪
  7.   まとめ • プロダクトの「便利」を追求していくためには ◦ 開発者の便利も意識することが重要 • 便利の裏側には複雑はつきもの、⻑期的に便利な機能を提供するには改 善が必要 •

    今あるベストな構成が数年後には複雑を⽣み出しているかもしれない。 だからこそ、⼈の⼿でより新しくシンプルにしていく必要がある きっとまだまだ未知の課題があるはず💡 ⼀緒にHack Everything☆してくれる⼈を募集中です!