Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
フロントエンドチームでリアーキテクチャを行っています!
Search
Maple
July 22, 2024
Programming
0
290
フロントエンドチームでリアーキテクチャを行っています!
Maple
July 22, 2024
Tweet
Share
More Decks by Maple
See All by Maple
モダンJSフレームワークのビルドプロセス 〜なぜReactは503行、Svelteは12行なのか〜
fuuki12
0
360
検索機能リプレイスを4ヶ月→2ヶ月に! AI Agentで実現した2倍速リプレイス
fuuki12
4
1.3k
Other Decks in Programming
See All in Programming
Go1.26 go fixをプロダクトに適用して困ったこと
kurakura0916
0
330
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
410
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
210
米国のサイバーセキュリティタイムラインと見る Goの暗号パッケージの進化
tomtwinkle
2
460
LangChain4jとは一味違うLangChain4j-CDI
kazumura
1
150
ふつうの Rubyist、ちいさなデバイス、大きな一年
bash0c7
0
700
Python’s True Superpower
hynek
0
200
Claude Code、ちょっとした工夫で開発体験が変わる
tigertora7571
0
200
CSC307 Lecture 12
javiergs
PRO
0
460
Railsの気持ちを考えながらコントローラとビューを整頓する/tidying-rails-controllers-and-views-as-rails-think
moro
4
380
ふつうのRubyist、ちいさなデバイス、大きな一年 / Ordinary Rubyists, Tiny Devices, Big Year
chobishiba
1
400
受け入れテスト駆動開発(ATDD)×AI駆動開発 AI時代のATDDの取り組み方を考える
kztakasaki
2
540
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
110
Docker and Python
trallard
47
3.8k
Designing for Timeless Needs
cassininazir
0
150
Documentation Writing (for coders)
carmenintech
77
5.3k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
GraphQLとの向き合い方2022年版
quramy
50
14k
Code Reviewing Like a Champion
maltzj
528
40k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
220
Are puppies a ranking factor?
jonoalderson
1
3.1k
Test your architecture with Archunit
thirion
1
2.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
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 のハッシュタグをつけてポストをお願いします 質疑応答
ご清聴ありがとうございました