$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
フロントエンドチームでリアーキテクチャを行っています!
Search
Maple
July 22, 2024
Programming
0
280
フロントエンドチームでリアーキテクチャを行っています!
Maple
July 22, 2024
Tweet
Share
More Decks by Maple
See All by Maple
モダンJSフレームワークのビルドプロセス 〜なぜReactは503行、Svelteは12行なのか〜
fuuki12
0
230
検索機能リプレイスを4ヶ月→2ヶ月に! AI Agentで実現した2倍速リプレイス
fuuki12
4
1.1k
Other Decks in Programming
See All in Programming
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
130
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
110
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
150
chocoZAPサービス予約システムをNuxtで内製化した話
rizap_tech
0
150
俺流レスポンシブコーディング 2025
tak_dcxi
14
8.9k
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
510
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
270
TestingOsaka6_Ozono
o3
0
160
認証・認可の基本を学ぼう前編
kouyuume
0
250
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
140
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
720
React Native New Architecture 移行実践報告
taminif
1
160
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
4.9k
Thoughts on Productivity
jonyablonski
73
5k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Side Projects
sachag
455
43k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Rails Girls Zürich Keynote
gr2m
95
14k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
The Invisible Side of Design
smashingmag
302
51k
GraphQLとの向き合い方2022年版
quramy
50
14k
Transcript
フロントエンドリアーキテクチャを⾏お うとしています! SODA Dev Talk #2 #SODADev
株式会社SODA • 2024年02月~ Webフロントエンドエンジニア • 入社後は、Webの抽選機能やLPの開発を行っていました。 伊藤
楓基
None
Agenda • 現状のフロントエンドの構成 • リアーキテクチャの目的 • リアーキテクチャの背景と必要性 • 具体的に何をするの? •
新しいアーキテクチャの理想 • feature構造 • まとめ
現状のフロントエンドの構成
現状のフロントエンドの構成 Request Go Router Go Template Vue
現状のフロントエンドの構成 Request Go Router Go Template Vue
• ブラウザ • スニダンアプリ
現状のフロントエンドの構成 Request Go Router Go Template Vue
• GoでRoutingを行っている
現状のフロントエンドの構成 Request Go Router Go Template Vue
• TemplateもGoが持っている • Templateが担っている役割 ◦ metaデータの挿入 ◦ DBにアクセスしたデータを templateに渡す ◦ Vueファイルのimportおよびマウント ◦ 部分的にコンポーネントを使用している場合もある
現状のフロントエンドの構成 • webpackでビルド ◦ SFC ◦ 1エントリーポイント1ファイル吐き出す
• TypeScript • CSS Request Go Router Go Template Vue
リアーキテクチャの⽬的
• 複数チームでうまく分担して開発できるシステムアーキテクチャにする • それぞれの開発チームがそれぞれ同じくらいの認知負荷で開発が回っていくように したい • 全体としてユーザーへの価値提供を最速で行えるようにする リアーキテクチャの目的
リアーキテクチャの背景と必要性
• マウントされているコンポーネントを見つけるのが大変 • in-DOMのRoot Component Templateがつらい(Go Template) • アーキテクチャが採用されていないため現状正しい書き方の参考がない •
OptionsAPIとCompositionAPIの書き方が混在している • 影響範囲を特定するのが難しい etc… リアーキテクチャの背景と必要性
具体的に何をするの?
具体的に何をするの? • フロントエンドとバックエンドのリポジトリを分ける ◦ CIに現状時間がかかりすぎている、 BackendのCIも同時に回ってしまう
• Vueをやめる • Routerをフロントエンドで持つ ◦ SP/PC/APPでtemplateを切り替えてる(コンポーネントで切り替えたい) • Reactのアーキテクチャを決める
新しいアーキテクチャの理想
新しいアーキテクチャの理想 • FEとBEを分離する • SSR & ISR • 全部Reactに置き換える
• Reactのアーキテクチャ ◦ GitHub - fuuki12/Frontend-Framework-Architecture: 新しいフロントエンドアーキテクチャ ◦ FEチームでReactのリアーキテクチャを行おうとしています!
リアーキテクチャ図 Request Next Server React Component App Router
API Request feature構造
feature構造
featuresアーキテクチャ Layer型 Feature型
featuresアーキテクチャの特徴 • 機能ごとに疎結合が実現 領域毎の認知負荷を合わせる • 機能単位での改善が多いため、不要なリグレッションを避けることが可能 •
機能を削除する際には、ディレクトリごと削除するだけ • featuresディレクトリを見ることで、プロダクトにどのような機能があるのか一目でわかる • 複数でうまく分担できるようにする この下に機能毎にディ レクトリを切る
featuresアーキテクチャのデメリット • 機能の少ないプロダクトやリリース初期のプロダクトはfeature構造を使用しないよう ほうが良い ここになんの機能毎にき るのか迷ってしまう&肥 大化してしまう
まとめ • まだ机上段階ではあるが、FEエンジニアの全員で熟考を行っているので、失敗しな いものを作れると考えている • 多角的視点で見ることを行う • 導入絶対行います!
質問は Xに #SODADev のハッシュタグをつけてポストをお願いします 質疑応答
ご清聴ありがとうございました