Submit Search
Upload
体重ウォッチにおけるRealmとSwiftTaskの活用
•
0 likes
•
894 views
Shingo Sato
Follow
体重ウォッチにおけるRealmとSwiftTaskの活用
Read less
Read more
Software
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 37
Download now
Download to read offline
Recommended
ホットペッパービューティーアプリリプレイスとMVCP
ホットペッパービューティーアプリリプレイスとMVCP
Recruit Lifestyle Co., Ltd.
Pattern magic vol 1
Pattern magic vol 1
Osvaldo Ruben Roman Gerena
Xcode 6の新機能
Xcode 6の新機能
Shingo Sato
Meteor勉強会発表資料「MeteorでiOSアプリを作ろう!」
Meteor勉強会発表資料「MeteorでiOSアプリを作ろう!」
Nobutaka OSHIRO
Macアプリのインストーラ作成ツールSwift版
Macアプリのインストーラ作成ツールSwift版
Akira Hayashi
iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1
Kaname Noto
NET MAUI for .NET 7 for iOS, Android app development
NET MAUI for .NET 7 for iOS, Android app development
Shotaro Suzuki
Sharoid Service Menu
Sharoid Service Menu
sharoid
Recommended
ホットペッパービューティーアプリリプレイスとMVCP
ホットペッパービューティーアプリリプレイスとMVCP
Recruit Lifestyle Co., Ltd.
Pattern magic vol 1
Pattern magic vol 1
Osvaldo Ruben Roman Gerena
Xcode 6の新機能
Xcode 6の新機能
Shingo Sato
Meteor勉強会発表資料「MeteorでiOSアプリを作ろう!」
Meteor勉強会発表資料「MeteorでiOSアプリを作ろう!」
Nobutaka OSHIRO
Macアプリのインストーラ作成ツールSwift版
Macアプリのインストーラ作成ツールSwift版
Akira Hayashi
iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1
Kaname Noto
NET MAUI for .NET 7 for iOS, Android app development
NET MAUI for .NET 7 for iOS, Android app development
Shotaro Suzuki
Sharoid Service Menu
Sharoid Service Menu
sharoid
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版
Yoshito Tabuchi
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Shotaro Suzuki
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
Yoichiro Sakurai
20120316 designerworkshoppublished
20120316 designerworkshoppublished
Yoichiro Sakurai
概説 Data API v3
概説 Data API v3
Yuji Takayama
Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016
Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016
Yusuke Suzuki
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
kounan13
リモートワークで10kgダイエットした話
リモートワークで10kgダイエットした話
Masaki Suzuki
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese version
Ricardo Alcocer
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese version
ralcocer
XcodeのTargetについてのTIPS
XcodeのTargetについてのTIPS
Yoichiro Sakurai
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
AppCodeNight testcode
AppCodeNight testcode
Akira SUGIMOTO
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Koji Hasegawa
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Saki Homma
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Saki Homma
Ignite UI 2012 最新情報 jQuery Mobile 編
Ignite UI 2012 最新情報 jQuery Mobile 編
インフラジスティックス・ジャパン株式会社
スマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめよう
Koji Hasegawa
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
Koji Hasegawa
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
codeal
More Related Content
Similar to 体重ウォッチにおけるRealmとSwiftTaskの活用
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版
Yoshito Tabuchi
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Shotaro Suzuki
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
Yoichiro Sakurai
20120316 designerworkshoppublished
20120316 designerworkshoppublished
Yoichiro Sakurai
概説 Data API v3
概説 Data API v3
Yuji Takayama
Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016
Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016
Yusuke Suzuki
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
kounan13
リモートワークで10kgダイエットした話
リモートワークで10kgダイエットした話
Masaki Suzuki
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese version
Ricardo Alcocer
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese version
ralcocer
XcodeのTargetについてのTIPS
XcodeのTargetについてのTIPS
Yoichiro Sakurai
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
AppCodeNight testcode
AppCodeNight testcode
Akira SUGIMOTO
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Koji Hasegawa
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Saki Homma
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Saki Homma
Ignite UI 2012 最新情報 jQuery Mobile 編
Ignite UI 2012 最新情報 jQuery Mobile 編
インフラジスティックス・ジャパン株式会社
スマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめよう
Koji Hasegawa
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
Koji Hasegawa
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
codeal
Similar to 体重ウォッチにおけるRealmとSwiftTaskの活用
(20)
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
20120316 designerworkshoppublished
20120316 designerworkshoppublished
概説 Data API v3
概説 Data API v3
Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016
Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
リモートワークで10kgダイエットした話
リモートワークで10kgダイエットした話
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese version
Slides for tiTokyo 2013 - Japanese version
XcodeのTargetについてのTIPS
XcodeのTargetについてのTIPS
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
AppCodeNight testcode
AppCodeNight testcode
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Ignite UI 2012 最新情報 jQuery Mobile 編
Ignite UI 2012 最新情報 jQuery Mobile 編
スマートフォンアプリの テスト自動化をはじめよう
スマートフォンアプリの テスト自動化をはじめよう
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
体重ウォッチにおけるRealmとSwiftTaskの活用
1.
体重ウォッチにおける RealmとSwiftTaskの活用 @akio0911
2.
自己紹介 • Shingo Sato
(@akio0911) • Freelancer • iOS Developer • Blogger • アプリ開発講座 • 書籍執筆
3.
MosaicCam(モザイクカメラ) PictCheck(ピクトチェック) CellMemo(セルメモ) DrawFrame(DrawFrame) 体重ウォッチ
4.
5.
アプリクリエイター道場 • 初心者向けのアプリ講座 • 2011年から各地で50期開催 •
東京・大阪・名古屋・仙台・ 広島・福岡
6.
Agenda • アプリの紹介(体重ウォッチ) • アプリの設計 •
SwiftTaskについて • リジェクト対応
7.
体重ウォッチ 体重の記録・グラフ表示・Todayウィジェットでの増減確認など
8.
Supports glance and
complications
9.
体重ウォッチの設計
10.
設計案1 Apple Watch HealthKit Watch Extension iPhone 1. Query 3.
Samples 4. Samples 2. Query HealthKit Storage HealthKit Watch側でのQueryは、iPhone側に転送されるのでは?
11.
結果 • Queryは転送されない。Watch上でのQueryは、Watch 上のStoreに対して実行される • Watch側のHealthKitでは、Watch側で書き込んだもの しか取得できないっぽい •
Watch側で書き込んだものは、iPhone側のHealthKitに も自動で同期される • つまり、iPhone側のHealthKitには、どちらで書き込ん だデータも存在する
12.
Apple Watch HealthKit Watch Extension iPhone QuerySamples HealthKit Storage HealthKit iPhone App QuerySamples HealthKit Storage Sync 実際の挙動
13.
設計案2 Apple Watch iPhone 1.
Watch Connectivity 2. Query3. Samples 4. Samples Watch Extension iPhone App HealthKit Watch ConnectivityでiPhone側へ問い合わせれば良いのでは? HealthKit Storage
14.
結果 • デバッグ時には取得できた。 日常での使用では取得できないことがあった • MacにUSBケーブルで接続してデバッグ実行した時は取得できた •
ケーブルを外して日常的に使用した時は 取得できないことがあった • iPhoneのロック中に、HealthKitへはアクセスできないことが判明 • Watch Appを使う時は、 ほとんどの場合でiPhoneはロック中・・・
15.
設計案3 Apple Watch iPhone 1.
Observer Query 2. Notify 5. Watch Connectivity (Samples) 3. Query4. Samples Realm 6. Save 7. Load Watch Extension iPhone App HealthKit
16.
結果 • 任意のタイミングに、Watch単体でHealthKitのデー タ(のキャッシュ)を読み出せるようになった
17.
SwiftTaskを活用 HealthKitでのアクセスは非同期
18.
UIViewのアニメーション
19.
アニメーション完了時の処理を指定する (非同期)
20.
アニメーション完了時に 次のアニメーションを開始する
21.
SwiftTaskを使う アニメーションタスクの型を宣言 pauseしたタスクをresumeしやすくする
22.
SwiftTaskを使う アニメーションの内容を記述し、実行する
23.
アニメーションタスクを作りやすくする UIViewのextensionとして、animationTaskメソッドを用意する
24.
複数のアニメーションを連鎖させる
25.
連鎖のための演算子を作る
26.
SwiftTaskをアプリで使う
27.
DataManagerでTaskを返す
28.
例 : 連携確認が終わったら検索する
29.
Rejected
30.
仕様変更することに • HealthKitとの連携を許可されたらHealthKitを使う • 連携を拒否されたらRealmを使う
31.
プロトコルを宣言
32.
HealthKitは非同期
33.
Realmは同期
34.
Storageの切り替えを行うManager
35.
Userからは 実Storageを意識しなくても良い User DataManager : DataStorageProtocol HealthKitStorage : DataStorageProtocol RealmStorage :
DataStorageProtocol Authorize Status
36.
最終設計 Apple Watch iPhone Watch
Connectivity Realm Watch Extension iPhone App HealthKit Realm DataManager
37.
ご静聴 ありがとうございました
Download now