Submit Search
Upload
令和最新!SwiftUI+async_awaitで自分はこう設計・実装している!.pdf
•
0 likes
•
229 views
Y
Yuuki Noseda
Follow
DeNAのヘルスケアアプリの一部をチラ見せします!
Read less
Read more
Engineering
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 23
Download now
Download to read offline
Recommended
Xtext入門
Xtext入門
Shintaro Hosoai
UE4におけるエフェクトの為のエンジン改造事例
UE4におけるエフェクトの為のエンジン改造事例
エピック・ゲームズ・ジャパン Epic Games Japan
本当に無駄な仕事をしたくない人のためのHoudiniプロシージャル入門
本当に無駄な仕事をしたくない人のためのHoudiniプロシージャル入門
jyouryuusui
UE4 MultiPlayer Online Deep Dive 基礎編2 -Traveling- (historia様ご講演) #ue4dd
UE4 MultiPlayer Online Deep Dive 基礎編2 -Traveling- (historia様ご講演) #ue4dd
エピック・ゲームズ・ジャパン Epic Games Japan
【Unite Tokyo 2019】Unityでこんなに変わった!ぱちんこ映像開発ワークフロー
【Unite Tokyo 2019】Unityでこんなに変わった!ぱちんこ映像開発ワークフロー
UnityTechnologiesJapan002
ゲームエンジンとMVC
ゲームエンジンとMVC
AimingStudy
Eclipse xtext 紹介
Eclipse xtext 紹介
Akira Tanaka
CascadeのエフェクトをNiagaraで作成してみよう
CascadeのエフェクトをNiagaraで作成してみよう
Yuya Shiotani
Recommended
Xtext入門
Xtext入門
Shintaro Hosoai
UE4におけるエフェクトの為のエンジン改造事例
UE4におけるエフェクトの為のエンジン改造事例
エピック・ゲームズ・ジャパン Epic Games Japan
本当に無駄な仕事をしたくない人のためのHoudiniプロシージャル入門
本当に無駄な仕事をしたくない人のためのHoudiniプロシージャル入門
jyouryuusui
UE4 MultiPlayer Online Deep Dive 基礎編2 -Traveling- (historia様ご講演) #ue4dd
UE4 MultiPlayer Online Deep Dive 基礎編2 -Traveling- (historia様ご講演) #ue4dd
エピック・ゲームズ・ジャパン Epic Games Japan
【Unite Tokyo 2019】Unityでこんなに変わった!ぱちんこ映像開発ワークフロー
【Unite Tokyo 2019】Unityでこんなに変わった!ぱちんこ映像開発ワークフロー
UnityTechnologiesJapan002
ゲームエンジンとMVC
ゲームエンジンとMVC
AimingStudy
Eclipse xtext 紹介
Eclipse xtext 紹介
Akira Tanaka
CascadeのエフェクトをNiagaraで作成してみよう
CascadeのエフェクトをNiagaraで作成してみよう
Yuya Shiotani
60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編
エピック・ゲームズ・ジャパン Epic Games Japan
iOSにおけるWakeword検知機能の実装
iOSにおけるWakeword検知機能の実装
exwzds
Online MultiPlay Game Design
Online MultiPlay Game Design
エピック・ゲームズ・ジャパン Epic Games Japan
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
tnoho
これで失敗しない ASTERIA WARPサイジングのポイント
これで失敗しない ASTERIA WARPサイジングのポイント
ASTERIA User Group
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
ゲーム開発とMVC
ゲーム開発とMVC
Takashi Komada
MVC の Model を考える
MVC の Model を考える
tomo_masakura
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
エピック・ゲームズ・ジャパン Epic Games Japan
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
QAアーキテクチャの設計による説明責任の高いテスト・品質保証
QAアーキテクチャの設計による説明責任の高いテスト・品質保証
Yasuharu Nishi
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
com044
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
Masahiko Nakamura
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
Satoshi Kodaira
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
エピック・ゲームズ・ジャパン Epic Games Japan
PostgreSQLセキュリティ総復習
PostgreSQLセキュリティ総復習
Uptime Technologies LLC (JP)
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
YutoNishine
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
historia_Inc
iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測
Toshiyuki Hirata
Swift愛好会_ライブラリを使わずにゴリゴリと
Swift愛好会_ライブラリを使わずにゴリゴリと
Sachiko Kajishima
StoryboardでUIを使いまわす
StoryboardでUIを使いまわす
Masaki Fuke
More Related Content
What's hot
60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編
エピック・ゲームズ・ジャパン Epic Games Japan
iOSにおけるWakeword検知機能の実装
iOSにおけるWakeword検知機能の実装
exwzds
Online MultiPlay Game Design
Online MultiPlay Game Design
エピック・ゲームズ・ジャパン Epic Games Japan
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
tnoho
これで失敗しない ASTERIA WARPサイジングのポイント
これで失敗しない ASTERIA WARPサイジングのポイント
ASTERIA User Group
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
ゲーム開発とMVC
ゲーム開発とMVC
Takashi Komada
MVC の Model を考える
MVC の Model を考える
tomo_masakura
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
エピック・ゲームズ・ジャパン Epic Games Japan
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
QAアーキテクチャの設計による説明責任の高いテスト・品質保証
QAアーキテクチャの設計による説明責任の高いテスト・品質保証
Yasuharu Nishi
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
com044
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
Masahiko Nakamura
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
Satoshi Kodaira
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
エピック・ゲームズ・ジャパン Epic Games Japan
PostgreSQLセキュリティ総復習
PostgreSQLセキュリティ総復習
Uptime Technologies LLC (JP)
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
YutoNishine
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
historia_Inc
iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測
Toshiyuki Hirata
What's hot
(20)
60fpsアクションを実現する秘訣を伝授 解析編
60fpsアクションを実現する秘訣を伝授 解析編
iOSにおけるWakeword検知機能の実装
iOSにおけるWakeword検知機能の実装
Online MultiPlay Game Design
Online MultiPlay Game Design
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
これで失敗しない ASTERIA WARPサイジングのポイント
これで失敗しない ASTERIA WARPサイジングのポイント
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ゲーム開発とMVC
ゲーム開発とMVC
MVC の Model を考える
MVC の Model を考える
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
QAアーキテクチャの設計による説明責任の高いテスト・品質保証
QAアーキテクチャの設計による説明責任の高いテスト・品質保証
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
PostgreSQLセキュリティ総復習
PostgreSQLセキュリティ総復習
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測
Similar to 令和最新!SwiftUI+async_awaitで自分はこう設計・実装している!.pdf
Swift愛好会_ライブラリを使わずにゴリゴリと
Swift愛好会_ライブラリを使わずにゴリゴリと
Sachiko Kajishima
StoryboardでUIを使いまわす
StoryboardでUIを使いまわす
Masaki Fuke
OpenCV on mobile
OpenCV on mobile
Daisuke Yamashita
いまさら触るAwt
いまさら触るAwt
Keiichi Kobayashi
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみた
Hiroshi Kikuchi
yidev 第18回勉強会 「業務でSwiftで3ヶ月開発してきたので一旦振り返り」
yidev 第18回勉強会 「業務でSwiftで3ヶ月開発してきたので一旦振り返り」
佐藤 俊太郎
BaseViewControllerは作りたくない
BaseViewControllerは作りたくない
今城 善矩
Win32 APIをてなずけよう
Win32 APIをてなずけよう
Kouji Matsui
【Swift】 それ、enumとstructでやってみましょう!!
【Swift】 それ、enumとstructでやってみましょう!!
Yu Tanaka
About SnapKit - Open source lab -
About SnapKit - Open source lab -
Daisuke Yamashita
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
Megumi Otani(Czenhe)
VueとAWSAppSyncで始めるチャットアプリ開発
VueとAWSAppSyncで始めるチャットアプリ開発
Ryosuke Izumi
UI要素を動的に利用する
UI要素を動的に利用する
HideoMiyake
E2E CSS Testing at HTML5 Conference 2016
E2E CSS Testing at HTML5 Conference 2016
Takeharu Igari
AbemaTVのUIデザイン 僕なりの運用の心得
AbemaTVのUIデザイン 僕なりの運用の心得
Shunsuke Matsumoto
ソースが書けなくてもAndroidアプリをクリック(GUI)開発したい
ソースが書けなくてもAndroidアプリをクリック(GUI)開発したい
Yukio Saito
Wolcome to swift
Wolcome to swift
Kyohei Ito
チーム開発にSwiftLintを導入してみた・詳細版
チーム開発にSwiftLintを導入してみた・詳細版
Ikada Kaori
iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜
Yusuke SAITO
20150728 USERDIVE in BPStudy
20150728 USERDIVE in BPStudy
Kuni Nakaji
Similar to 令和最新!SwiftUI+async_awaitで自分はこう設計・実装している!.pdf
(20)
Swift愛好会_ライブラリを使わずにゴリゴリと
Swift愛好会_ライブラリを使わずにゴリゴリと
StoryboardでUIを使いまわす
StoryboardでUIを使いまわす
OpenCV on mobile
OpenCV on mobile
いまさら触るAwt
いまさら触るAwt
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみた
yidev 第18回勉強会 「業務でSwiftで3ヶ月開発してきたので一旦振り返り」
yidev 第18回勉強会 「業務でSwiftで3ヶ月開発してきたので一旦振り返り」
BaseViewControllerは作りたくない
BaseViewControllerは作りたくない
Win32 APIをてなずけよう
Win32 APIをてなずけよう
【Swift】 それ、enumとstructでやってみましょう!!
【Swift】 それ、enumとstructでやってみましょう!!
About SnapKit - Open source lab -
About SnapKit - Open source lab -
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
VueとAWSAppSyncで始めるチャットアプリ開発
VueとAWSAppSyncで始めるチャットアプリ開発
UI要素を動的に利用する
UI要素を動的に利用する
E2E CSS Testing at HTML5 Conference 2016
E2E CSS Testing at HTML5 Conference 2016
AbemaTVのUIデザイン 僕なりの運用の心得
AbemaTVのUIデザイン 僕なりの運用の心得
ソースが書けなくてもAndroidアプリをクリック(GUI)開発したい
ソースが書けなくてもAndroidアプリをクリック(GUI)開発したい
Wolcome to swift
Wolcome to swift
チーム開発にSwiftLintを導入してみた・詳細版
チーム開発にSwiftLintを導入してみた・詳細版
iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜
20150728 USERDIVE in BPStudy
20150728 USERDIVE in BPStudy
令和最新!SwiftUI+async_awaitで自分はこう設計・実装している!.pdf
1.
令和最新! SwiftUI+async/awaitで自分は こう設計・実装している! 野瀬田 裕樹(@ynoseda)
2.
簡単な自己紹介 ● 野瀬田 裕樹(のせだ ゆうき) ● 平成元年生まれ ●
京都出身のiOS/Androidエンジニア ● 性格はValues Cardの結果↓ 参照 twitter
3.
話す内容 ● 実際のコードをベースに設計や実装についてちょろちょろ話す ● 多分10分も話さない ●
ちょっと実装が難しかったViewとかも紹介する
4.
SwiftUI on UIViewController ●
UIViewControllerのviewの上にSwiftUIのViewを乗せるスタイル
5.
SwiftUI on UIViewController?Why? ●
SwiftUIはnavigation周りが辛すぎるから ○ 度重なるdeprecated ○ .alertを二つ書けないなどのトラップ ○ そもそもViewの癖に画面遷移を管理してるのどうなの?
6.
● SwiftUIはnavigation周りが辛すぎるから ○ 度重なるdeprecated ○
.alertを二つ書けないなどのトラップ ○ そもそもViewの癖に画面遷移を管理してるのどうなの? SwiftUI on UIViewController?Why? UINavigationControllerがあるじゃん!
7.
● ということでUIViewControllerが画面全体と遷移を管理 ● SwiftUIはViewとしての役割に専念 SwiftUI
on UIViewController?Why?
8.
ちなみに通信部どんな感じ?
9.
● Alamofireの通信をwithCheckedThrowingContinuationでラップ ● async/awaitで取り扱えるようにしている ●
Request**で名前統一してる ○ try await APIClient.request(Request**()) ○ でAPIが叩ける ちなみに通信部どんな感じ?
10.
● 画面単位でObservableObjectなStore(State Holder)を作って管理している ●
stateの変化はdispatch関数を通してのみ行う(ViewStateの変数はfileprivate(set) のスコープにしている) 状態の管理はどうしてる?
11.
● つまり、ほぼ画面単位のFluxぽい構成 ● 画面が今どういう状態かはViewStateの変数を見れば分かるし、ここにはロジック が含まれないので見通しがいい感じ ●
通信やデータの加工はStoreに渡ってくる前に全て処理する構造にしている 状態の管理はどうしてる?
12.
こんなViewはどう実装する? ● 文字が小さいときはこんな感じで
13.
こんなViewはどう実装する? ● 文字が大きいときはこんな感じ
14.
こんなViewはどう実装する? ● 文字が小さいときは ○ 背景画像の中央部が見えてる ○
ただしカードの高さは一定以上という制約がある ● 文字が大きいときは ○ 背景画像が全部見えたあと、上下は固定色 ○ テキストは改行してself-sizing(自身で高さを決める)
15.
こんなViewはどう実装する? ● こんな感じで実装できます ● ポイントはfixedSizeと backgroundの使い方
16.
こんなViewはどう実装する?2 ● よくあるバッジ ● 文字サイズによって拡大縮小しつつ、一番小さいフォントの時は小さくなりすぎない ように最小の高さ幅を指定する ●
オレンジの背景色の外側に白い枠線と影を配置
17.
こんなViewはどう実装する?2 ● こんな感じで実装できます ● Circleとかbackgroundを活用する ●
影はshadowで簡単に付けられる
18.
こんなViewはどう実装する?3 ● アイコン画像の右上に先ほどのバッジを配置 ● アイコン画像に丸く枠線をつけ、枠線とアイコンの中心が重なるようにする ●
もちろんフォントサイズの大小にも対応させる
19.
● バッジサイズでoffsetを算出 ● PreferenceKeyがポイント ○
バッジの背景に透明Viewを追加 ○ そのViewのサイズを伝達 ○ onPreferenceChangeで検知 こんなViewはどう実装する?3
20.
DeNAでの実装事例
21.
DeNAでの実装事例
22.
DeNAでの実装事例
23.
DeNAでの実装事例 ざっくりとこんな感じの実装
Download now