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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Maple
July 22, 2024
Programming
310
0
Share
フロントエンドチームでリアーキテクチャを行っています!
Maple
July 22, 2024
More Decks by Maple
See All by Maple
モダンJSフレームワークのビルドプロセス 〜なぜReactは503行、Svelteは12行なのか〜
fuuki12
0
430
検索機能リプレイスを4ヶ月→2ヶ月に! AI Agentで実現した2倍速リプレイス
fuuki12
4
1.3k
Other Decks in Programming
See All in Programming
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.4k
Migrations : C'est une question d'hygiène !
vinceamstoutz
0
2.7k
AIとRubyの静的型付け
ukin0k0
0
490
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
180
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
420
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
520
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
syumai
2
1k
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
6
2.7k
新規プロダクトを高速で生み出すハーネスエンジニアリング
seanchas116
19
7.7k
さぁV100、メモリをお食べ・・・
nilpe
0
120
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
160
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
250
Featured
See All Featured
The Curse of the Amulet
leimatthew05
1
13k
Mobile First: as difficult as doing things right
swwweet
225
10k
So, you think you're a good person
axbom
PRO
2
2k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Site-Speed That Sticks
csswizardry
13
1.2k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
230
Into the Great Unknown - MozCon
thekraken
41
2.5k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
370
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 のハッシュタグをつけてポストをお願いします 質疑応答
ご清聴ありがとうございました