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の紹介/2019-11-06-llt12
Search
Satoshi SAKAO
November 06, 2019
Programming
0
64
SwiftUIの紹介/2019-11-06-llt12
社内のLTイベント「えるLT Vol.12」で発表した資料です
Satoshi SAKAO
November 06, 2019
Tweet
Share
More Decks by Satoshi SAKAO
See All by Satoshi SAKAO
JavaScriptのデバッグ/2023-09-04-llt30
ottijp
0
71
CDK for TerraformでAzureリソースをデプロイする/2023-05-15-llt29
ottijp
0
39
TWELITEへの誘い/2022-12-27-llt28
ottijp
0
100
ビルドツールBazelを触ってみた/2022-09-28-llt27
ottijp
0
77
HashiCorp Vaultを使ったシークレットのセキュアな一元管理 〜Ansibleを添えて〜/2022-07-12-llt26
ottijp
0
100
AWSインフラのデプロイをCDKでカイゼンする/2022-03-23-llt25
ottijp
0
47
Amazon Timestreamでデータ補間/2021-12-27-llt24
ottijp
0
55
ncurses/2021-05-12-llt21
ottijp
0
140
ghqでソースコードを管理しよう/2021-03-23-llt20
ottijp
0
270
Other Decks in Programming
See All in Programming
オブジェクト指向コードレビューの新しいアプローチ
akkie76
3
1.5k
実践!RDRAを活用した既存システムの仕様変更 / Specification Changes in Existing Systems Utilizing RDRA
imamotohikaru
0
2.5k
LPIXEL×CADDi_kaerururu
kaerururu
3
300
自動テスト実行結果の目的を整理する / Organizing objectives of automated test results
twada
PRO
10
2.1k
オブジェクトしこう
okuramasafumi
2
130
Compiling Python to WebAssembly with py2wasm
syrusakbary
0
130
導入から5年が経って見えた Datadog APM 運用の課題
bgpat
2
540
Enhancing Applications with Accessibility API
kishikawakatsumi
3
890
Understanding Ast By Looking
inouehi
0
120
Parallel Socket Communication in Swift
s_shimotori
0
220
Go1.22からの疑似乱数生成器について/go-122-pseudo-random-generator
convto
1
160
Kotlinを用いたDSL的な設計手法と使用上の注意
kohii00
3
530
Featured
See All Featured
Design by the Numbers
sachag
274
18k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
111
35k
Fashionably flexible responsive web design (full day workshop)
malarkey
397
65k
Principles of Awesome APIs and How to Build Them.
keavy
119
16k
Building Better People: How to give real-time feedback that sticks.
wjessup
350
18k
How to train your dragon (web standard)
notwaldorf
71
5.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
6
950
Typedesign – Prime Four
hannesfritz
36
2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
242
20k
Fireside Chat
paigeccino
19
2.6k
Testing 201, or: Great Expectations
jmmastey
27
6.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Transcript
SwiftUIの紹介 Satoshi SAKAO えるLT Vol.12 2019/11/06 (Wed) 1
話すひと 2 インフォコム株式会社 品質マネジメント推進室 " ソフトウェアエンジニア JS (ES6) / Node.js
/ GCP / IoT / iOS (Swift) 猫,自作キーボード,シュタゲ Satoshi SAKAO @ottijp
3 「SwiftUI」を聞いたことがある? &
SwiftUIってなんぞ • WWDC2019で発表されたAppleプラットフォーム向けの 新しいUIフレームワーク • Xcodeの機能の一部 • iOS, iPadOS, macOS,
watchOS, tvOS • Storyboardやリアクティブフレームワークを置き換える存在 • 宣言的シンタックスとデータ駆動が肝 ☝ 4
5 https://developer.apple.com/jp/xcode/swiftui/
6 SwiftUIの特長
宣言的シンタックス • Swiftの文法でUI構造を宣言的に記述できる 7
プレビュー • 画面サイズ,ダークモード,多言語,フォント設定などを 変えた複数の同時プレビューが可能 • ライブプレビューで動的な表現を確認 8
データの同期機構 • View間で同一データの参照 • データ駆動のリアクティブなUI定義 • 方法 • @Stateと@Binding •
Observableプロトコルと@ObservedObject • environmentObject()と@EnvironmentObject • environment()と@Environment 9 View @State var hoge = 42 View @Binding var hoge: Int bind
10 課題
Xcode11とCatalinaが不安定すぎる • Xcode11 • すぐクラッシュ,フリーズする,起動しなくなる • プレビュー,コード補完が効かなくなる • エラーメッセージが全くあてにならない •
Catalina • OS再起動中にフリーズしてハングアップする 11
SwiftUIのViewがまだ少ない • まだ基本的なViewしかない • 対応していないUIKitのViewクラスや機能は自前で実装が必要 • 自前実装することで宣言的UI,データ駆動に対応できる • SwiftUIに組み込む仕組みは提供されている 12
13 まとめ
まとめ • まだ安定性が低く,対応Viewも少ないが, AppleプラットフォームのUI開発が革新したのを感じた • jQueryからReact/Vueになったくらいの変革 • 再利用性の向上,複雑性の低下が期待できる 14
15 時間が余ればdemo マシンスペックが低いので遅いけど
16 Appendix
必要な環境 • macOS Catalina (10.15) • Mojaveでもビルドできるが,SwiftUIキャンバスは使えない • Xcode11 •
iOS13 17
利点 • View単位でテストデータをもとに表示やアクションや アニメーションなどを確認しながら開発できる • Viewのコンポーネント化がすごい簡単になった • UIの共同編集とdiffがしやすい (Storyboardは共同編集ができない) 18
Single Source of Truth (SSOT) • SwiftUIはSingle Source of Truthを実現する
• 正となる単一の情報源(ソースコード,データ)を持つ • 重複しない,コピーしない,同期処理が必要ない • SwiftUIにおいては • ソースコードが正(UIデザインツールとソースが一致している) • データが正(リアクティブなView更新) • イベント駆動実装に存在していた複雑性を大きく軽減できる 19
参考 • Xcode - SwiftUI - Apple Developer https://developer.apple.com/jp/xcode/swiftui/ •
SwiftUI Tutorials — Tutorials | Apple Developer Documentation https://developer.apple.com/tutorials/swiftui/tutorials • Data in SwiftUI, Part 1: Data | Sarun https://sarunw.com/posts/data-in-swiftui-1/ 20