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
SwiftUIっぽくした話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
たまねぎ
February 16, 2022
Programming
1
720
SwiftUIっぽくした話
たまねぎ
February 16, 2022
Tweet
Share
More Decks by たまねぎ
See All by たまねぎ
AIのAIによるAIのための出力評価と改善
chocoyama
3
890
[FlutterKaigi2024] Effective Form 〜Flutterによる複雑なフォーム開発の実践〜
chocoyama
1
13k
iOSDC2023:聴いて話すiOS 現実世界の「音」との連携
chocoyama
1
390
ハードウェア対応のリアル.pdf
chocoyama
0
120
20分でわかる!速習resultBuilder(iOSDC 2022)
chocoyama
7
3.7k
SwiftUIとGraphQLでプロダクトの継続的な破壊に立ち向かう
chocoyama
6
2.7k
Other Decks in Programming
See All in Programming
Claude Code、ちょっとした工夫で開発体験が変わる
tigertora7571
0
200
今、アーキテクトとして 品質保証にどう関わるか
nealle
0
210
RubyとGoでゼロから作る証券システム: 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル
free_world21
0
230
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
170
AI時代でも変わらない技術コミュニティの力~10年続く“ゆるい”つながりが生み出す価値
n_takehata
2
670
エージェント開発初心者の僕がエージェントを作った話と今後やりたいこと
thasu0123
0
240
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
410
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
510
PJのドキュメントを全部Git管理にしたら、一番喜んだのはAIだった
nanaism
0
240
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
110
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
360
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
0
200
Featured
See All Featured
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
120
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
150
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Raft: Consensus for Rubyists
vanstee
141
7.3k
The Limits of Empathy - UXLibs8
cassininazir
1
250
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
89
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Building Adaptive Systems
keathley
44
2.9k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
130
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Balancing Empowerment & Direction
lara
5
930
Transcript
SwiftUIͬΆͨ͘͠ ϥΫϚ x STORES LTΠϕϯτ ~ iOS։ൃͷཪଆ ~ @_chocoyama
ࣗݾհ • ͨ·Ͷ͗ʢ@_chocoyamaʣ • 201912݄~ ϔΠגࣜձࣾ • STORES ϨδͷiOSΞϓϦ։ൃ
ΞδΣϯμ 1. STORES Ϩδͱ 2. ϨγʔτͱҹͷྲྀΕ 3. ϨγʔτϨΠΞτ࣮ͷมભ 4. ;Γ͔͑Γ
STORES Ϩδͱ • 2021.06ʹϦϦʔε • ࣮ళฮۀΛαϙʔτ͢ΔPOSΞϓϦ • ϑϧSwiftUI • ձܭɾཧɾϨγʔτҹ
etc…
ϑϧSwiftUIʹͨ͠ SwiftUIͬΆͨ͘͠
ϨγʔτͱҹͷྲྀΕ ձܭϨγʔτ ਫ਼ࢉϨγʔτ
ϨγʔτͱҹͷྲྀΕ XML CALayer CGImage ϓϦϯλʔ ϨΠΞτΛಈతʹఆٛ XMLΛύʔεͯ͠CALayerʹม CALayerΛը૾σʔλԽ ը૾ͷόΠφϦσʔλΛBluetoothͰૹ৴
ϨγʔτͱҹͷྲྀΕ XML CALayer CGImage ϓϦϯλʔ ϨΠΞτΛಈతʹఆٛ XMLΛύʔεͯ͠CALayerʹม CALayerΛը૾σʔλԽ ը૾ͷόΠφϦσʔλΛBluetoothͰૹ৴ ॳظஈ֊
Ͳ͏SwiftUIͬΆ͘վળ͖͔ͯͨ͠
ϨγʔτϨΠΞτ࣮ͷมભ • ͬΆ͞Lv1ɿXMLϕλॻ͖Ͱͷ࣮ • ͬΆ͞Lv2ɿFlutterͬΆ͍IFͷϑϨʔϜϫʔΫ࡞ • ͬΆ͞Lv3ɿresultBuilderʹΑΔSwiftUIͬΆ͍IFͷఏڙ
ಠࣗϧʔϧʹج͍ͮͨλά+ଐੑ ↓ Stringͷ݁߹ ↓ XMLจࣈྻΛ࡞ ͬΆ͘ͳ͍ʙʙʙ ͬΆ͞Lv1 : XMLϕλॻ͖Ͱͷ࣮ 9.-
• ܕ҆શͰͳ͘ɺఆ֎ͷจࣈ͕͋ΔͱऴΘΔ • ίʔυͱΞτϓοτͷߏ͕ඇରԠͰɺશମ૾͕ಡΈऔΓͮΒ͍ • Ͱॏෳͨ͠هड़ଟ͍ • มߋʹऑ͍ XMLจࣈྻΛੜ͢Δ͜ͱͷ
XMLએݴత ↓ એݴతUI ↓ SwiftUI ↓ ϨγʔτUISwiftUIͬΆ͘࡞ΕΔͷͰʁ ͰͲ͏͢Δ͔ʁ
• SwiftUIͷΑ͏ʹγϯϓϧͰએݴతͳϨΠΞτఆٛ • ܕͰݎ࿚ͯ͠ɺ͖์͔͚Δهड़Λഉআ • ΤσΟλͷิʹΑΓࣄલࣝͳ͠Ͱॻ͚ΔIF • ࠓޙͷཁૉ֦ுΛݟਾ͑ͯɺՃɾมߋ͍͢͠ → ܕ҆શͰXMLੜΛநԽͨ͠IFΛఏڙ͢Δ
վળํ
·͋·͋ ͬΆ͍ʙʙʙ ֤ཁૉ͝ͱʹΫϥεΛఆٛ ↓ ΠϯελϯεΛReceiptΫϥεʹ͢ ↓ ෦తʹXMLจࣈྻΛ࡞ ʢXMLΛॻ͔ͳͯ͘ྑ͍ʣ ͬΆ͞Lv2 :
FlutterͬΆ͍IFͷϑϨʔϜϫʔΫ࡞ 9.-
Textͷ߹ • ߏΛଊ͑͘͢ • ࢦఆՄೳύϥϝʔλΛܕͰݫ֨ʹ੍ޚ • ࣄલࣝͳ͠ͰɺิʹΑΓબՄೳͳΛѲ
۩ମతͳ࣮ ʮXMLλά1ͭʹ૬͢ΔจࣈྻΛੜʯ͢ΔIFΛఆٛ ଐੑΛؚΊͯλάจࣈྻΛੜ
۩ମతͳ࣮ ͯ͢ͷจࣈྻΛ1ͭͷXMLʹ·ͱΊ্͛Δ
՝ ཁૉΛྻʹͯ͢͠ ↓ ੍ࣜޚߏจΛॻ͚ͳ͍ ↓ ผΫϥεΛ࡞۪ͯ͠ʹରԠ
• resultBuilderͰߋʹSwiftUIͬΆ͘ • ذ܁Γฦ͠هड़Մೳʹ ͔ͳΓ ͬΆ͍ʙʙʙ ͬΆ͞Lv3 : resultBuilderʹΑΔSwiftUIͬΆ͍IFͷఏڙ 9.-
resultBuilder • Swift5.4ͰՃ͞ΕͨAttributeͰɺ෦DSLੜʹ׆༻Ͱ͖Δ ʢSwiftUIͷViewBuilderʹΘΕ͍ͯΔʣ • ؔͳͲʹద༻͢ΔͱɺྻڍΛऩूͯ͠࠷ऴతͳܕʹ·ͱΊΒΕΔ • ͷྻڍʹΧϯϚ͕ඞཁͳ͘ɺ੍ࣜޚߏจهड़Ͱ͖Δ •
ϓϩτλΠϓͷ@_functionBuilderͰɺػೳ੍͕ݶ͞Ε͍ͯͨ ྻڍͨ͠ SFTVMU#VJMEFS ࠷ऴతͳ
୯७ͳͷྻڍ < > CVJME#MPDL
ذ͕͋Δ߹ <><><><> CVJME&YQSFTTJPO <<> <>> < > CVJME#MPDL <
> < > CVJME&JUIFS fi STU <<> <> < >> < > CVJME#MPDL
elseઅͷͳ͍ذ͕͋Δ߹ <> CVJME0QUJPOBM
ϧʔϓ͕͋Δ߹ <<> <> <> <>> < > CVJME"SSBZ
ʂ ड͚͞ΕΔͷύλʔϯʹԠͯ͡ɺରԠ͢ΔbuildؔΛ࣮ → ݁Ռͷܕʹม͍ͯ͘͠
ϨγʔτϨΠΞτ༻ͷ࣮ [ReceiptElement] ྻڍͨ͠ SFTVMU#VJMEFS ࠷ऴతͳ
࠷ऴܗ ͬΆ͘ͳͬͨʂ
࠷ऴܗ
;Γ͔͑Γ • ཧܗ͔Βߟ͑ͨͷ͕ྑ͔ͬͨ • ࣮ݱͷͨΊɺΒͳ͍ࣝͷΠϯϓοτػձ͕ੜ·ΕΔ • ܗ͕ελʔτ࣌Ͱݟ͍͑ͯΔͨΊɺઃܭʹϒϨ͕ੜ·Εͳ͍ • ಠࣗSDK͍ॴΛݟۃΊΔͱ͏·͘ػೳ͢Δ •
ʢཚ༻͗͢͠ΔͱٯʹΘ͔ΓͮΒ͘ͳΔҙʣ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ ͖ͯ͢ͳϨγʔτҹϥΠϑΛʂ