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
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
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
180
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
3.9k
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
Jetpack Compose Mechanisms
skydoves
3
820
Railsバージョンを4倍にした話
optim
0
440
Next.js: The final boss of Web Performance
guaca
0
280
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.2k
Simple Storage Service(S3) is not simple
iwatsukayura
0
290
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
130
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
600
From π to Pie charts
rasagy
1
400
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
500
Building Adaptive Systems
keathley
44
3.3k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Making the Leap to Tech Lead
cromwellryan
135
10k
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