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
個人でデジタル庁の デザインシステムをVue.jsで 作っている話
Search
にしはら
October 25, 2025
Technology
3
5.8k
個人でデジタル庁の デザインシステムをVue.jsで 作っている話
デジタル庁が公開しているデザインシステムをVue.jsで実装した話です。デザインシステムを作っていく中で感じた強力なv-modelやcomputedの魅力などをお伝えします。
にしはら
October 25, 2025
Tweet
Share
More Decks by にしはら
See All by にしはら
速くて安いWebサイトを作る
nishiharatsubasa
20
18k
スーパーマリオRPGのリメイク版の変更点からみるUX
nishiharatsubasa
1
930
defineModelを使って気軽にコンポーネントのv-modelをやろう
nishiharatsubasa
3
1.5k
2023 CSS
nishiharatsubasa
7
4.8k
vue_component_from_composable
nishiharatsubasa
2
700
エルデンリングに学ぶ道に迷わないUIと世界観
nishiharatsubasa
0
1.4k
HTMLとCSSだけでつくるリアルな絵 / How to make a realistic picture only HTML and CSS
nishiharatsubasa
2
7.2k
Other Decks in Technology
See All in Technology
国井さんにPurview の話を聞く会
sophiakunii
1
250
Scrum Guide Expansion Pack が示す現代プロダクト開発への補完的視点
sonjin
0
230
2025年 山梨の技術コミュニティを振り返る
yuukis
0
140
AI with TiDD
shiraji
1
330
モダンデータスタックの理想と現実の間で~1.3億人Vポイントデータ基盤の現在地とこれから~
taromatsui_cccmkhd
2
300
Authlete で実装する MCP OAuth 認可サーバー #CIMD の実装を添えて
watahani
0
360
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
BidiAgent と Nova 2 Sonic から考える音声 AI について
yama3133
2
140
First-Principles-of-Scrum
hiranabe
1
440
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
_第4回__AIxIoTビジネス共創ラボ紹介資料_20251203.pdf
iotcomjpadmin
0
170
投資戦略を量産せよ 2 - マケデコセミナー(2025/12/26)
gamella
0
570
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
420
Six Lessons from altMBA
skipperchong
29
4.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
Docker and Python
trallard
47
3.7k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
0
34
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
530
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
42
Game over? The fight for quality and originality in the time of robots
wayneb77
1
73
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
Abbi's Birthday
coloredviolet
0
4.1k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
160
Transcript
ݸਓͰσδλϧிͷ σβΠϯγεςϜΛ7VFKTͰ ࡞͍ͬͯΔ ʙͦͯ͠ɺվΊͯײͨ͡7VFKTͷັྗʙ 7VF'FT+BQBO
ݪཌྷ גࣜձࣾ*$4 ϑϩϯτΤϯυΤϯδχΞ !DSBZpTIFS@[BSJ
*$4.&%*"ͰهࣄΛॻ͍͍ͯ·͢ ศརʁ ͦΕͱࠞཚʁ $44ͷJG ؔ IUUQTJDTNFEJBFOUSZ IUUQTJDTNFEJBFOUSZ Σϒͷ৽ػೳ͍ͭ·Ͱͯ ࣮ફೖͰ͖Δ͔
σδλϧிσβΠϯγεςϜͱʁ
σδλϧிσβΠϯγεςϜͱʁ ओʹߦػؔެڞػؔͰར༻͞ΕΔ͜ͱΛ೦಄ʹߏங͞Ε͍ͯΔ σβΠϯγεςϜͰ͢ɻಛͱͯ͠ɺ ΞΫηγϏϦςΟͷ֬อΛ༏ઌͨ͠ ͭ͘Γʹͳ͍ͬͯΔ͜ͱɺ ߦαʔϏεͷը໘Ͱར༻͍͢͠ϧʔϧΛ ͦΖ͍͑ͯΔ͜ͱͳͲ͕ڍ͛ΒΕ·͢ɻ ʢதུʣ σδλϧிσβΠϯγεςϜࣗମ͘ެ։͞Ε͍ͯΔͷͱͳΓ·͢ͷͰɺ ߦػؔެڞػؔͰ͋Δ͔Ͳ͏͔ΛΘͣɺ
ͲͳͨͰແྉͰར༻͢Δ͜ͱ͕Ͱ͖·͢ɻ ग़యɿIUUQTEFTJHOEJHJUBMHPKQJOUSPEVDUJPOBCPVU ڧௐҾ༻ऀ
σδλϧிσβΠϯγεςϜͱʁ ΞΫηγϒϧͰ͞·͟·ͳঢ়ଶͷίϯϙʔωϯτ͕༻ҙ͞Ε͍ͯΔ
σδλϧிσβΠϯγεςϜͱʁ ʢҰ෦ʣ ίϯϙʔωϯτʹ͍ͭͯ5BJMXJOE3FBDUͰͷίʔυ͕ ެ͔ࣜΒఏڙ͞Ε͍ͯΔ
σδλϧிσβΠϯγεςϜͱʁ Ͱɺ 7VFKT൛ͳ͍ʜ
σδλϧிσβΠϯγεςϜͱʁ ͕ࣗ࡞͍ͬͯ·͢ IUUQTHJUIVCDPN$SBZpTIFS[BSJEJHJUBMBHFODZEFTJHOTZTUFN ͪͳΈʹ࣮ͷ044ͱͯ͠ͷެ։ࣗͷํ͕ૣ͍
σδλϧிσβΠϯγεςϜͱʁ ެ։͞Ε͍ͯΔ'JHNBͷσβΠϯΛͱʹ7VFKTͰ࣮
σδλϧிσβΠϯγεςϜͱʁ Ͱ͖Δ͚ͩγϯϓϧʹखܰʹ͑ΔΑ͏ʹ͢Δͷ͕ίϯηϓτͰ͢
σδλϧிσβΠϯγεςϜͱʁ ఏڙ͞Ε͍ͯΔͷ͓͓Α࣮͍ͦͯ͠·͢ ਵ࣌Ճத
σδλϧிσβΠϯγεςϜͱʁ தظͷӡ༻Λߟ͑ͯɺ࣮ߦ࣌ͷґଘ7VFKTͷΈͰ͢
σδλϧிσβΠϯγεςϜͱʁ ͪͳΈʹຊϓϩδΣΫτ σδλϧிͱҰ͕ؔ͋Γ·ͤΜ σβΠϯɿ$$#: ίʔυεχϖοτɿ.*5ϥΠηϯε ͜ΕΒͷϥΠηϯεͷͱʹ։ൃ͍ͯ͠·͢
վΊͯײͨ͡7VFKTͷັྗ
WNPEFM
վΊͯײͨ͡7VFKTͷັྗ WNPEFMೖྗͱঢ়ଶͷಉظʹ͑Δ ͷΈʹ͢ΕΑ͘ɺ Πϕϯτॲཧʹؾʹ͔͚ͳͯ͘Α͍ ˣ͜͏ॻ͚Δ <input :value="text" @change="handleChange" /> <input
v-model="text" />
վΊͯײͨ͡7VFKTͷັྗ ίϯϙʔωϯτؒͷΛ͔ΜͨΜʹ࿈ܞͰ͖Δ ίϯϙʔωϯτʹWNPEFM͕͑Δ const labels = ["બࢶ1", "બࢶ2", "બࢶ3"]; const
checked = ref([]); <CheckboxGroup v-model="checked" :labels="labels" />
DPNQVUFE
const TAX_RATE = 1.1; const price = ref(100); const taxIncluded
= computed(() => price.value * TAX_RATE); <p>੫ࠐΈɿ{{ taxIncluded }}</p> վΊͯײͨ͡7VFKTͷັྗ DPNQVUFEґଘͷ͕ෆมͳݶΓΩϟογϡΛฦ͢ͷͰ ϋΠύϑΥʔϚϯε ࢉग़Ͱ͖ΔDPNQVUFEͰ࠷దԽͰ͖Δ
վΊͯײͨ͡7VFKTͷັྗ جຊతʹ໎Θͣ͑0,ɻ ڭՊॻͲ͓Γʹ͢Ε࠷దԽ͞ΕΔ
TMPU
վΊͯײͨ͡7VFKTͷັྗ ΞΠίϯͷཧϘλϯίϯϙʔωϯτͰߦ͍ͨ͘ͳ͍ ίϯϙʔωϯτͷதͷΛ͍ͨ͠
<button> <span class="frontIcon"> <slot name="frontIcon" /> </span> <slot name="label" />
<span class="backIcon"> <slot name="backIcon" /> </span> </button> <MyButton> <template #frontIcon> <Icon /> </template> <template #label> ϥϕϧ </template> </MyButton> վΊͯײͨ͡7VFKTͷັྗ ˝.Z#VUUPOWVFίϯϙʔωϯτ ˝ݺͼग़͢ଆ TMPUΛͬͯϨΠΞτ·ͰΛ࣋ͭ ίϯϙʔωϯτͷංେԽΛ͗ɺ ίϯϙʔωϯτͷ൚༻ੑΛߴΊΔ
σδλϧிσβΠϯγεςϜΛ ࣮ͯ͠ಘΒΕͨͷ
σδλϧிσβΠϯγεςϜΛ࣮ͯ͠ಘΒΕͨͷ ΞΫηγϒϧͳίϯϙʔωϯτͷ࡞Γํͷݟ ։ൃऀମݧΛҙࣝͨ͠ίϯϙʔωϯτཻɺ ͷ͚ํ 7VFύϫϑϧʂσβΠϯγεςϜͮ͘Γʹྑ͍ʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ גࣜձࣾ*$4ͰϑϩϯτΤϯυΤϯδχΞΛืूதʂ IUUQTJDTXFCKQSFDSVJU