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
320
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
フロントエンドチームでリアーキテクチャを行っています!
Maple
July 22, 2024
More Decks by Maple
See All by Maple
モダンJSフレームワークのビルドプロセス 〜なぜReactは503行、Svelteは12行なのか〜
fuuki12
0
450
検索機能リプレイスを4ヶ月→2ヶ月に! AI Agentで実現した2倍速リプレイス
fuuki12
4
1.4k
Other Decks in Programming
See All in Programming
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.3k
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
6
1.4k
Performance Engineering for Everyone
elenatanasoiu
0
190
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.3k
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.7k
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.7k
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
720
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
360
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
270
AIで効率化できた業務・日常
ochtum
0
140
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
120
Vite+ Unified Toolchain for the Web
naokihaba
0
320
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
290
Game over? The fight for quality and originality in the time of robots
wayneb77
1
200
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
240
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
300
Building AI with AI
inesmontani
PRO
1
1.1k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
How to make the Groovebox
asonas
2
2.2k
エンジニアに許された特別な時間の終わり
watany
107
250k
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 のハッシュタグをつけてポストをお願いします 質疑応答
ご清聴ありがとうございました