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
SwiftUIの紹介/2019-11-06-llt12
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Satoshi SAKAO
November 06, 2019
Programming
92
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SwiftUIの紹介/2019-11-06-llt12
社内のLTイベント「えるLT Vol.12」で発表した資料です
Satoshi SAKAO
November 06, 2019
More Decks by Satoshi SAKAO
See All by Satoshi SAKAO
Testcontainers/2024-11-20-llt32
ottijp
0
120
Pkl/2024-04-17-llt31
ottijp
0
130
JavaScriptのデバッグ/2023-09-04-llt30
ottijp
0
200
CDK for TerraformでAzureリソースをデプロイする/2023-05-15-llt29
ottijp
1
360
TWELITEへの誘い/2022-12-27-llt28
ottijp
0
190
ビルドツールBazelを触ってみた/2022-09-28-llt27
ottijp
0
230
HashiCorp Vaultを使ったシークレットのセキュアな一元管理 〜Ansibleを添えて〜/2022-07-12-llt26
ottijp
0
190
AWSインフラのデプロイをCDKでカイゼンする/2022-03-23-llt25
ottijp
0
130
Amazon Timestreamでデータ補間/2021-12-27-llt24
ottijp
0
130
Other Decks in Programming
See All in Programming
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
260
Heart of Swift Concurrency
koher
0
890
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
340
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
280
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
320
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
180
Webの地図
yosuke_furukawa
PRO
6
4.6k
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
340
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1k
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
280
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
720
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
600
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Side Projects
sachag
456
43k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
Leo the Paperboy
mayatellez
10
2.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
300
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
460
The browser strikes back
jonoalderson
0
1.7k
Writing Fast Ruby
sferik
630
63k
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