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
たまねぎ
February 16, 2022
Programming
1
700
SwiftUIっぽくした話
たまねぎ
February 16, 2022
Tweet
Share
More Decks by たまねぎ
See All by たまねぎ
AIのAIによるAIのための出力評価と改善
chocoyama
3
800
[FlutterKaigi2024] Effective Form 〜Flutterによる複雑なフォーム開発の実践〜
chocoyama
1
12k
iOSDC2023:聴いて話すiOS 現実世界の「音」との連携
chocoyama
1
370
ハードウェア対応のリアル.pdf
chocoyama
0
100
20分でわかる!速習resultBuilder(iOSDC 2022)
chocoyama
7
3.4k
SwiftUIとGraphQLでプロダクトの継続的な破壊に立ち向かう
chocoyama
6
2.6k
Other Decks in Programming
See All in Programming
pnpm に provenance のダウングレード を検出する PR を出してみた
ryo_manba
1
160
Introduce Hono CLI
yusukebe
6
3.1k
Reactive Thinking with Signals and the Resource API
manfredsteyer
PRO
0
110
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
360
開発組織の戦略的な役割と 設計スキル向上の効果
masuda220
PRO
10
1.7k
オープンソースソフトウェアへの解像度🔬
utam0k
17
3.2k
Webサーバーサイド言語としてのRustについて
kouyuume
1
4.9k
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
4
910
AI時代に必須!状況言語化スキル / ai-context-verbalization
minodriven
2
110
Catch Up: Go Style Guide Update
andpad
0
260
Vueのバリデーション、結局どれを選べばいい? ― 自作バリデーションの限界と、脱却までの道のり ― / Which Vue Validation Library Should We Really Use? The Limits of Self-Made Validation and How I Finally Moved On
neginasu
2
1.6k
Claude Agent SDK を使ってみよう
hyshu
0
1.4k
Featured
See All Featured
Navigating Team Friction
lara
190
15k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Into the Great Unknown - MozCon
thekraken
40
2.1k
The Cult of Friendly URLs
andyhume
79
6.6k
Scaling GitHub
holman
463
140k
Raft: Consensus for Rubyists
vanstee
140
7.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
How to Think Like a Performance Engineer
csswizardry
27
2.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
640
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1k
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͍ॴΛݟۃΊΔͱ͏·͘ػೳ͢Δ •
ʢཚ༻͗͢͠ΔͱٯʹΘ͔ΓͮΒ͘ͳΔҙʣ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ ͖ͯ͢ͳϨγʔτҹϥΠϑΛʂ