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
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
560
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
380
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
7.9k
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
210
WebAssembly in Android Apps 〜 WASMはJNIの夢を見るか
keiji
1
110
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
新卒PdEのリアル
ryu1013
1
510
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
5
3.7k
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
2.4k
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
840
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
330
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
500
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
GitHub's CSS Performance
jonrohan
1033
470k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Raft: Consensus for Rubyists
vanstee
142
7.7k
Music & Morning Musume
bryan
48
7.4k
RailsConf 2023
tenderlove
30
1.6k
Agile that works and the tools we love
rasmusluckow
331
22k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
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