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
680
SwiftUIっぽくした話
たまねぎ
February 16, 2022
Tweet
Share
More Decks by たまねぎ
See All by たまねぎ
AIのAIによるAIのための出力評価と改善
chocoyama
0
500
[FlutterKaigi2024] Effective Form 〜Flutterによる複雑なフォーム開発の実践〜
chocoyama
1
11k
iOSDC2023:聴いて話すiOS 現実世界の「音」との連携
chocoyama
1
350
ハードウェア対応のリアル.pdf
chocoyama
0
86
20分でわかる!速習resultBuilder(iOSDC 2022)
chocoyama
7
3.1k
SwiftUIとGraphQLでプロダクトの継続的な破壊に立ち向かう
chocoyama
6
2.6k
Other Decks in Programming
See All in Programming
Enterprise Web App. Development (2): Version Control Tool Training Ver. 5.1
knakagawa
1
120
実践ArchUnit ~実例による検証パターンの紹介~
ogiwarat
2
280
既存デザインを変更せずにタップ領域を広げる方法
tahia910
1
240
FormFlow - Build Stunning Multistep Forms
yceruto
1
190
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
2
620
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
0
120
GoのWebAssembly活用パターン紹介
syumai
3
10k
「ElixirでIoT!!」のこれまでとこれから
takasehideki
0
370
Go1.25からのGOMAXPROCS
kuro_kurorrr
1
780
業務自動化をJavaとSeleniumとAWS Lambdaで実現した方法
greenflagproject
1
120
DroidKnights 2025 - 다양한 스크롤 뷰에서의 영상 재생
gaeun5744
3
300
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
130
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Balancing Empowerment & Direction
lara
1
340
Code Review Best Practice
trishagee
68
18k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.3k
Designing for Performance
lara
609
69k
Building a Modern Day E-commerce SEO Strategy
aleyda
41
7.3k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Speed Design
sergeychernyshev
31
1k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
660
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͍ॴΛݟۃΊΔͱ͏·͘ػೳ͢Δ •
ʢཚ༻͗͢͠ΔͱٯʹΘ͔ΓͮΒ͘ͳΔҙʣ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ ͖ͯ͢ͳϨγʔτҹϥΠϑΛʂ