Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
初めてのディレクトリ設計 コンポーネント設計の前に考えること
Search
ミカイ
January 22, 2024
190
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
初めてのディレクトリ設計 コンポーネント設計の前に考えること
https://metaps.connpass.com/event/302330/
ミカイ
January 22, 2024
More Decks by ミカイ
See All by ミカイ
今からフロントエンドを0から勉強するならSvelteもありかも
junmikai
0
99
tsoaはいいぞ!APIドキュメントを自動生成!
junmikai
0
76
生成AI活用はHOWが大事な理由
junmikai
0
220
2025年の抱負: フリーランスから 正社員に戻るので 組織に貢献します!
junmikai
0
130
Chakra UI v3にバージョンアップしてほぼ別物になった件
junmikai
0
1.3k
LTのテーマ決めは「多数派」を意識しよう ~ LT年40回登壇した件~
junmikai
0
64
成長するには「重要 VS 緊急」を意識しよう
junmikai
0
29
LTのテーマ決めは「多数派」を意識しよう ~ LT年40回登壇した件~
junmikai
0
65
目標は「めいそう」が大事。漢字はどう書く?
junmikai
2
74
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
320
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Making Projects Easy
brettharned
120
6.8k
The browser strikes back
jonoalderson
0
1.7k
sira's awesome portfolio website redesign presentation
elsirapls
0
420
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
How to train your dragon (web standard)
notwaldorf
97
6.8k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Transcript
初めてのディレクトリ設 計 コンポーネント設計の前に考えること 三海 純
自己紹介 • 三海純(ミカイ ジュン) • 現在フリーランスエンジニア ◦ Next.jsの設計とバックエンド実装 • 趣味
◦ アニメ(BanG Dream!・ぼざろ 等) ◦ ネット麻雀(雀魂)
キャリア • 2020/06 - 2022/02: 正社員(受託企業) ◦ Vue.js/Nuxt.jsをメイン • 2022/03
- 2023/09: 正社員(自社開発) ◦ バックエンドはPython / Nest.js(Node.js) ◦ フロントエンドはReact.jsとNext.js • 2023/10 - : フリーランス(自社開発) ◦ Next.jsの設計とバックエンド実装を担当
• Atomic Design • Container/Presentational パターン • featuresの採用
フロントエンドのディレクトリ設計は 色々あると思います
• Atomic Design • Container/Presentational パターン • featuresの採用
今回はこちらではなく・・・
設計の軸となる ディレクトリの分け方に ついて紹介
去年にNext.js 0→1の構築を行った のでしくじりを発表 きっかけ
しくじり1 ひとつのファイルにまと めすぎた
例
呼びやすさを優先した場合 <Table list={list} />
記述量が少なくて使いやすくて
• 特定の箇所で文字色を変えたい • テーブル内にボタンを設置したい • テーブル内にアイコンを設置したい 将来のことを考えると・・・
結果、 コンポーネント側で大 量のif文が発生
結果、こうなりました
こんな感じで定義すればマシになりそう <table> f <tbody> g <tr> d {list.map((item) => {
d // TODO g })} f </tr> f </tbody> f </table> f
しくじり2 ディレクトリを不要に分 けすぎた
とあるUtilsディレクトリ ├── schema.ts ├── dateFormat.tsx ├── format.ts ├── interface.ts ├──
type.ts ├── util.ts └── helper.ts
None
• dataFormatはformatでよさそう • typeとinterfaceが被っている • util/util.tsとは? •
utilとhelperが被っている 色々ツッコミところがありそう
対策としては 1ファイルにまとめるのが よさそう
どちらも問題が発生しても リファクタする時に 修正するいう考え
リファクタはいつ?
None
ご清聴ありがとうござ います!