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
Swift5.1 SwiftUI
Search
ry-itto
July 13, 2019
Technology
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Swift5.1 SwiftUI
会津大学 x 日大 LTでの登壇資料です。
ry-itto
July 13, 2019
More Decks by ry-itto
See All by ry-itto
決定版!?OSSアプリプロジェクトでのBeta版アプリ配布の方法「Xcode Cloud + TestFlight」
ryitto
0
420
CA.swift#14
ryitto
3
5.9k
swift-argument-parserで 簡単 CLI ツール作り
ryitto
1
180
Data Essentials in SwiftUI
ryitto
1
550
Composable Architecture
ryitto
0
820
CollectionViewの 新しいレイアウトの作り方
ryitto
0
88
Other Decks in Technology
See All in Technology
AI秘書と毎日働くのはもう当たり前。開発以外の業務に足りない機能をどう埋める?
minorun365
PRO
4
1.9k
自律的なチームを作るためにTechPMがやらないこと
ny7760
0
110
ポケモン対戦を自動で記録して振り返ろう
fufufukakaka
0
420
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
600
DevelopersIO 2026 Tokyo 現時点の衛星通信サービスの現状を整理してみる
maroon1st
0
340
Technical Project Manager の役割とやりがい、少しだけ AI
yoshiiryo1
0
220
Claude Code をローカルとサーバー上で利用した際の Bedrock 利用料をユーザー単位で一本化してみる
ohorig
0
190
AWS DevOps Agentはどこまで任せられるか 〜機能の現在地と、機能拡張の実践〜
nyankotaro
0
290
"AWSはちょっと苦手"でも大丈夫。AWS Blocks で手軽に作る Flutter のバックエンド #FlutterKaigi
tacck
PRO
0
100
スクラム祭り2026福井トラック_閉じたループから価値のスパイラルへ
kc_nakanishi
0
190
AIに任せられるFlutterコードベースを作る 〜仕様をコードで表し、ハーネスで守る〜
myohei
1
400
[re:Invent2026事前勉強会(有志開催)]続きは、ラスベガスの廊下で / continue-in-the-vegas-hallway
sh_fk2
0
390
Featured
See All Featured
Being A Developer After 40
akosma
PRO
92
590k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Ruling the World: When Life Gets Gamed
codingconduct
0
420
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
950
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
47k
Technical Leadership for Architectural Decision Making
baasie
3
620
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
740
Fantastic passwords and where to find them - at NoRuKo
philnash
53
4k
How to make the Groovebox
asonas
2
2.5k
Statistics for Hackers
jakevdp
799
230k
Color Theory Basics | Prateek | Gurzu
gurzu
1
500
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Transcript
4XJGUͷ৽ػೳͱ 4XJGU6* ձେֶίϯϐϡʔλཧֶ෦ ҏ౻྇
ࣗݾհ ҏ౻྇ ձେֶ J04 Χϐόϥ
ͦͦͳͥ4XJGU w ϝδϟʔόʔδϣϯ͡Όͳ͍͡ΌΜɻ w ͦΕΑΓ4XJGU6*Αɻ w 4XJGUͱ͔ڵຯͳ͍Θɻ
ճ w 4XJGUΛ͔͚Δਓ͕νϥοͱݟͯʮ͑ʁʯͬͯͳΔΑ͏ ͳจ๏͕૿͑ͨ w 4XJGU6*ʹେ͖͘औΓࠐ·Εɺ෦Ͱͨ͘͞Μ৽จ๏͕ ༻͞Ε͍ͯΔ w ॳݟͰਖ਼Θ͚Θ͔ΒΜɻ
4XJGUͷ৽ػೳ
Կݸ͔ฒͯΈͨ struct SwiftUIView : View { var body: some View
{ Text("Hello World!”) Text("Hello World!") } } @ObjectBinding var viewModel: HogeViewModel func add(x: Int, y: Int) -> Int { x + y }
͑ʁී௨͡ΌͶʁ
͖ͬ͞ͷίʔυͷதͷ৽ػೳ w !1SPQFSUZ%FMFHBUF w !@GVODUJPO#VJMEFS w 0QBRVF3FTVMU5ZQF w ؔͷฦΓͰҰߦͰࡁΉ߹ʹASFUVSOAΛॻ͔ͳͯ͘ Α͘ͳͬͨ
!1SPQFSUZ%FMFHBUF @ObjectBinding ← ͜Εͱ͔ @State ← ͜Ε KotlinͷҠৡϓϩύςΟʁΛݩʹͯ͠ΔͱͷهࣄΛͪΒͬͱΈͨΓ
!1SPQFSUZ%FMFHBUF ͍ํɿ @State var profile = Profile.default Ͳ͏ͳͬͯΔͷ͔ɿ @Stateͷ߹ɺprofileʹೖͬͨΛBinding<Profile>ͱ͍ͬͨ෩ʹϥο ϓ͢Δɻ
औΓग़͢ࡍʹ `profile`ͰΞΫηε͢ΔͱೖΕͨ, `$profile`ͱΞΫηε͢Δͱϥοϓͨ͠Λར༻Ͱ͖Δ
!@GVODUJPO#VJMEFS var body: some View { Text("Hello World!”) // ͜͜
Text("Hello World!”) // ͜͜ } 1SPQPTBM https://github.com/apple/swift-evolution/blob/ 9992cf3c11c2d5e0ea20bee98657d93902d5b174/proposals/XXXX- function-builders.md
!@GVODUJPO#VJMEFS ಠࣗͷ֦ு࡞ΕΔ(ྫɿ୯ޠΛݸผʹͯ͠ӳจ࡞) @_functionBuilder struct SentenceBuilder { static func buildBlock(_ strs:
String...) -> String { return strs.reduce(“”) { (res, str) -> String in return res + " " + str } } } func build(@SentenceBuilder block: () -> String) -> String { block() } print(build { "I";"am";"Ryoya Ito";"Nice";"to";"meet";"you!!" }) => I am Ryoya Ito Nice to meet you!!
!@GVODUJPO#VJMEFS w print(build { let name = "Ryoya Ito"
"I" “am" name "Nice" "to" "meet" "you!!" }) ɾΫϩʔδϟͰมఆ͕ٛͰ͖ͳ͍ ɾΫϩʔδϟͰifจͳͲ͕ॻ͚ͳ͍
0QBRVF3FTVMU5ZQF ͜ͷίʔυதͷ`some` var body: some View { Text("Hello World!") }
؆୯ʹදݱ͢ΔͱɺฦΓͰ૯শܕΛ͍͍ͨ࣌͏ͷɻ શͯ͜ͷهࣄʹ͋Δɾɾɾ Swift 5.1 ʹಋೖ͞ΕΔ Opaque Result Type ͱԿ͔
0QBRVF3FTVMU5ZQF ຊདྷͰ͋Ε func hoge() -> <H:AnyObject> H { } ͜͏ॻ͘ඞཁ͕͋ΔͷΛ
func hoge() -> some AnyObject { } ͱॻ͚ΔΑ͏ʹͨ͠ͷɻ γϯλοΫεγϡΨʔͰ͢ɻ
0QBRVF3FTVMU5ZQF func hoge() -> AnyObject { } ↑͜ΕͰΑ͘Ͷʁ ͍͍͑ɻ func
hoge() -> some AnyObject { } ͬͪ͜Ͱ͢ɻ
0QBRVF3FTVMU5ZQF ͳͥμϝͳͷ͔ʁ ઌ΄Ͳࡌ͍ͤͯͨهࣄʹ͑͋Δ
0QBRVF3FTVMU5ZQF w ύϑΥʔϚϯε্ͷϩε͕ൃੜ͢Δɻ 1SPUPDPMͰͷฦΓʹ͢Δͱ༧ظ͞ΕΔશͯͷܕʹ ରԠՄೳͳΑ͏ʹϝϞϦྖҬ͕֬อ͞ΕΔ
ؔͷฦΓͰҰߦͰࡁΉ߹ʹ ASFUVSOAΛॻ͔ͳͯ͘Α͘ͳͬͨ func add(x: Int, y: Int) -> Int {
x + y } ͦͷ·Μ·Ͱ͢ɻ ࠓ·ͰΫϩʔδϟͰͰ͖ͨͷ͕ͦͷ··ؔͰͰ͖ΔΑ͏ ʹͳΓ·ͨ͠ɻ
ͦͷଞؾʹͳΔΞοϓσʔτ w $PSF/'$Ͱ4VJDBͳͲͷಡΈऔΓ͕Մೳʹͳͬͨ ˠJ1IPOFʹ4VJDBOBOBDPΛ͚ۙͮΔ͚ͩͰߴͷ֬ೝ ͕Ͱ͖Δʂʂ w EZOBNJD.FNCFS-PPLVQͷ,FZ1BUIରԠ
͓·͚ IUUQTHJUIVCDPNSZJUUPFWFSZUIJOH@DPVOUFS
͋Γ͕ͱ͏͍͟͝·͠ ͨʂʂ