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
実務における Vue.js と Atomic Design
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Norito Uehara
May 27, 2020
Programming
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
実務における Vue.js と Atomic Design
Norito Uehara
May 27, 2020
Other Decks in Programming
See All in Programming
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
380
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
490
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.9k
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
190
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.2k
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
290
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
260
iOSDC2026登壇資料.pdf
riofujimon
0
170
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
840
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
130
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
150
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
370
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
How to Think Like a Performance Engineer
csswizardry
28
2.8k
30 Presentation Tips
portentint
PRO
1
400
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
エンジニアに許された特別な時間の終わり
watany
109
250k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
How to Talk to Developers About Accessibility
jct
2
550
Marketing to machines
jonoalderson
1
5.8k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Transcript
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design May 27, 2020 ࣮ʹ͓͚Δ Vue.js
ͱ Atomic Design
ࣗݾհ ໊લ ্ݪ ಙਓ ॴଐ Crevo גࣜձࣾ ৬ ϦʔυΤϯδχΞ ܦྺ
ԭೄͰ 7 ɺ౦ژͰ Crevo Ͱ 3 ։ൃऀͱͯ͠׆ ಈத ͖ͳΤσΟλ Emacs ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
Crevo ͱ ʮಈը৽࣌ͷΫϦΤΠλʔܦࡁݍΛͭ͘Δɻ ʯͱ͍͏ϛογϣϯ Λܝ͛ͯ׆ಈ͍ͯ͠ΔελʔτΞοϓاۀͰ͢ɻ Crevo https://corp.crevo.jp ࣮ʹ͓͚Δ Vue.js ͱ
Atomic Design
Crevo ͷ֤छαʔϏε Crevo Pro ༧ࢉ༻్ʹ߹Θͤͨ࠷దͳಈըΛاըʙ੍࡞·ͰҰ؏͢Δಈը ੍࡞αʔϏεಈը੍࡞αʔϏε https://crevo.jp ࣮ʹ͓͚Δ Vue.js ͱ
Atomic Design
Crevo ͷ֤छαʔϏε Crevo Jobs ࠃ֎ 7,000 ໊Λӽ͑ΔϓϩಈըΫϦΤΠλʔͱͷϚονϯά αʔϏε https://jobs.crevo.jp ࣮ʹ͓͚Δ
Vue.js ͱ Atomic Design
Crevo ͷ֤छαʔϏε Crevo Base ΫϦΤΠςΟϒ੍࡞ʹಛԽ੍ͨ͠࡞ཧπʔϧ https://base.crevo.jp ࣮ʹ͓͚Δ Vue.js ͱ Atomic
Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design Crevo ͷγεςϜʹ Vue.js ͱ Atomic
Design Λಋೖͯ͠ಘΒΕͨ ݟΛڞ༗͠·͢ ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design લఏ 2014 ͔Β։ൃ͞Εଓ͚ͯΔͦΕͳΓͷྺ࢙͕͋Δ Web Ξ
ϓϦέʔγϣϯ جຊతʹαʔόαΠυΤϯδχΞ͕ϝϯς͖ͯͨ͠ ͦͷͨΊ jQuery ͕׆༂ͯͨ͠Γ CSS पΓ͕ࠞಱͷۃΈͩͬ ͨΓ͢Δ Ember.js ೖͬͯΔ͚ͲॏྔڃͰѻ͍ͮΒͯͭ͘Β͍ ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design ͦ͏͍͏ͱ͜ΖͰ Vue.js Λಋೖ͢Δͱ Developer Experience
͕ ্͠·͢! ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design Vue.js ͱ Atomic Design ͷ؆୯ͳઆ໌
Vue.js ίϯϙʔωϯτࢦͷ JS ϑϨʔϜϫʔΫ Atomic Design ը໘ͷߏཁૉΛ 5 ֊ʹ͚ɺ࠷ऴతͳ UI ͱ UI ͷجૅͱͳΔσβΠϯγεςϜΛಉ࣌ʹ࡞͢Δઃ ܭํ๏ Vue.js ͷίϯϙʔωϯτࢦͱ Atomic Design ͷઃܭࢥ ૬ੑ͕ྑ͍ Atomic Design ͷߏཁૉͱίϯϙʔωϯτΛ 1 ର 1 ରԠ͞ ͤΒΕΔ ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design ಋೖͯ͠࠷ऴతʹͲ͏ͳ͔ͬͨ Atomic Design Λڞ௨ݴޠͱͯ͠ઃܭͷ͕ٞͰ͖ΔΑ͏ʹ ͳͬͨ
CSS ઃܭҰ৽͞Εͯ࠶ར༻ੑ͕૿ͨ͠ BEM ࠾༻ͨ͠ͷͰطଘͷը໘ͷ͍ճ͠༰қ ݹ͍ΞϓϦݹ͍ը໘͕͖ʜʜ Storybook ͰίϯϙʔωϯτΛΧλϩάԽͨ͠ͷͰͦ͜Ͱڍ ಈ֬ೝͰ͖ͯศར ͞Βʹ CircleCI ͰӾཡՄೳʹ͍ͯ͠Δͱ֤ϒϥϯνͷ࠷৽ί ϯϙʔωϯτ͕͍ͭͰݟΕΔΑ͏ʹͨ͠ ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design CSS ه๏ͱͯ͠ BEM Λઌʹಋೖͨ͠ BEM
ಋೖલͷ CSS Scoped CSS ͔ͩΒͱ .title, .description Έ͍ͨͳΫϥ εΛྔ࢈͍ͯ͠Δͱ Slot Λͬͨ࣌ʹόοςΟϯάͯͭ͠Β ͍͜ͱʹͳΓ͕ͪ ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design όοςΟϯάྫ ίϯϙʔωϯτ <template lang='pug'> div
.title hoge child .title fuga </template> <style lang='scss' scoped> .title { font-size: 2em; } </style> ࢠίϯϙʔωϯτ <template lang='pug'> div // ͕͜͜ҙਤͤͣ 2em ʹ .title foo .content slot </template> <style lang='scss' scoped> .title { color: #00f; } </style> ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design BEM ಋೖޙͷ CSS BEM Ͱॻ͍ͯΕ
slot ΛͬͯΔ߹ʹόοςΟϯά ͕ى͖ʹ͍͘ ͜ͷ࣌ Block ίϯϙʔωϯτ໊ʹ͢Δͷ͕ϙΠϯτ ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design ίϯϙʔωϯτ <template lang='pug'> .o-parent .o-parent__title
hoge child .o-child-title fuga </template> <style lang='scss' scoped> .o-parent-title { font-size: 2em; } </style> ࢠίϯϙʔωϯτ <template lang='pug'> .o-child // Өڹड͚ͳ͍ .o-child__title foo .o-child__content slot </template> <style lang='scss' scoped> .o-child-title { color: #00f; } </style> ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design ίϯϙʔωϯτͷઃܭ Atomic Design ಋೖલ ໌֬ͳࢦ͕ͳͯ͘ɺ࠶ར༻ੑͷͳ͍ίϯϙʔωϯτ͕࡞ΒΕ͕
ͪͩͬͨ A ʮίϯϙʔωϯτͰ͖·ͨ͠! ʯ B ( Θ͋ɺશ෦ೖΓͰ࠶ར༻Ͱ͖ͳ͍ʙ) B ʮ͜ͷ··ͩͱ࠶ར༻ੑ͕͍͔Βׂ͍ͯ͜͠͏͔ʯ A ʮͲ͏ׂ͠·͔͢? ʯ B ( ຖׂͷ૬ஊʹͳΔͳ͋ʜʜ) ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design Atomic Design ಋೖޙ Atomic Design
Λࢦʹ͢Δͱڞ௨ͷݴ༿Ͱઃܭͷ͕Ͱ͖ΔΑ ͏ʹͳͬͨ A ʮMolecule ίϯϙʔωϯτͰ͖·ͨ͠! ͜͜طଘͷ Atom Λ͍·ͨ͠ʯ B ʮ͓ɺ͍͍Ͷ! ͜͜ Organism ʹׂ͍ͯ͠ΔͶɻ͔͠ ͯ͠ Molecule Ͱ͍͍ͷͰʯ A ʮ୯ମͰཱ͍ࣗͯ͠ΔͷͰ Organism ͕ద͔ͱ! ʯ B ʮͳΔ΄Ͳʙʯ ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design CSS ͷϝϯςφϯεੑ Atomic Design ಋೖલͷ
CSS ࡶʹ HTML, CSS Λॻ͍ͯΔͱ BEM Λͬͯ B__E__E__E_M Έ͍ͨͳ͜ͱʹͳΓ͕ͪ Α͋͘ΔΞϯνύλʔϯ 3 ֊Ҏ্ਂ͘ͳΔͱϝϯςφϯεͱͯͭΒ͍ ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design ྫ (Pug) .form label.form__row input.form__row__input.form__row__input--disabled
ྫ (SASS) .form &__row &__input &--disabled ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design Atomic Design ಋೖޙͷ CSS Atomic
Design ϕʔεͰίϯϙʔωϯτׂ͢Ε֊Խ͞Εͨ ֤ίϯϙʔωϯτͰ CSS ͕ॻ͔ΕΔͷͰ BEM ͷ֊ਂ͘ͳΓ ʹ͍͘ ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design ྫ (Pug) .o-form label.m-form-row input.a-input.a-input--disabled
ྫ (SASS) .o-form .m-form-row .a-input &--disabled ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design طଘͷը໘ͷ CSS ͷ͍ճ͠ ଉͷ͍γεςϜͰ Vue
Λಋೖͯͯ͠ੲͷը໘ Vue Ͱͳ͍͜ͱ͕ଟʑ͋Δ ίϯϙʔωϯτͷ CSS Λͦ͏͍͏ը໘ʹద༻ͨ͘͠ͳΔ ˠ ͜ͷ߹ BEM Ͱॻ͍ͯΕطଘͷ CSS ͱͷόοςΟ ϯά͕ى͖ʹ͍͘ ͜͜ྫΛग़͠ʹ͍͘ͷͰׂѪʜʜ ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design CircleCI Ͱ storybook Λ build
͢Δͱศར खݩͷϚγϯͰ storybook Λಈ͔ͯ͠σβΠφʔʹݟ͑ ͳ͍ ֤ϒϥϯνͰίϯϙʔωϯτΛ૿ͨ͠ࡍʹ֬ೝͯ͠Β ͍͍ͨ ˠ CircleCI ͰͦΕΛ୭ͰݟΕΔͱ֬ೝ࡞ۀ͕ḿΔ ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design CircleCI ͷઃఆྫ build_storybook: executor: ruby
steps: - restore_workspace: reload: false - run: command: | yarn run build-storybook -c .storybook \ -o /tmp/storybook-static - store_artifacts: path: /tmp/storybook-static destination: storybook ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design Cirlce CI ͷ Artifacts ࣮ʹ͓͚Δ
Vue.js ͱ Atomic Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design ࣮ࡍͷը໘ ࣮ʹ͓͚Δ Vue.js ͱ Atomic
Design
࣮ʹ͓͚Δ Vue.js ͱ Atomic Design Vue.js ͱ Atomic Design Λಋೖͨ݁͠Ռ
Atomic Design Λڞ௨ݴޠͱͯ͠ઃܭͷ͕ٞͰ͖ΔΑ͏ʹ ͳͬͨ CSS ઃܭҰ৽͞Εͯ࠶ར༻ੑ͕૿ͨ͠ BEM ಉ࣌࠾༻ͨ͠ͷͰطଘͷը໘ͷ͍ճ͠༰қ ݹ͍ΞϓϦݹ͍ը໘͕͖ʜʜ Storybook ͰίϯϙʔωϯτΛΧλϩάԽͨ͠ͷͰͦ͜Ͱڍ ಈ֬ೝͰ͖ͯศར ͞Βʹ CircleCI ͰӾཡՄೳʹ͍ͯ͠Δͱ֤ϒϥϯνͷ࠷৽ί ϯϙʔωϯτ͕͍ͭͰݟΕΔΑ͏ʹͨ͠ ࣮ʹ͓͚Δ Vue.js ͱ Atomic Design
࠷ޙʹ ಈըࢢͷࣗࣾ SaaS αʔϏε։ൃΛ͍ͨ͠ΤϯδχΞΛืूத Ͱ͢! https://corp.crevo.jp/recruit/engineer ࣮ʹ͓͚Δ Vue.js ͱ Atomic
Design