Submit Search
Upload
RealmとApp Extensionのガイダンス/Realm meetup vol.6
•
Download as PPTX, PDF
•
7 likes
•
4,114 views
Yuta Hoshino
Follow
iOSアプリとApple Watchアプリ(watchOS1)の間で、同一のRealmファイルを共有するための手順を確認できる。
Read less
Read more
Software
Report
Share
Report
Share
1 of 24
Download now
Recommended
高度クラウド環境だからこそ、運用自動化・一元化
高度クラウド環境だからこそ、運用自動化・一元化
Hinemos
OpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
OpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
Toshikazu Ichikawa
自作アプリを watchOS 2 対応した話 〜FastCheckin編〜
自作アプリを watchOS 2 対応した話 〜FastCheckin編〜
Kosuke Ogawa
使ってわかった!現場担当者が語るOpenStack運用管理の課題 - OpenStack最新情報セミナー 2015年2月
使ってわかった!現場担当者が語るOpenStack運用管理の課題 - OpenStack最新情報セミナー 2015年2月
VirtualTech Japan Inc.
OpenStackもオンプレミスもまとめて一元監視 Hatohol+Zabbixでハイブリッドクラウド監視を実現 - OpenStack最新情報セミナー...
OpenStackもオンプレミスもまとめて一元監視 Hatohol+Zabbixでハイブリッドクラウド監視を実現 - OpenStack最新情報セミナー...
VirtualTech Japan Inc.
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
Yusuke Suzuki
OCI serverless introduction
OCI serverless introduction
SuguruSugiyama
Social Web Conference Vol4 JIRA4公開用
Social Web Conference Vol4 JIRA4公開用
Hiroshi Ohnuki
Recommended
高度クラウド環境だからこそ、運用自動化・一元化
高度クラウド環境だからこそ、運用自動化・一元化
Hinemos
OpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
OpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
Toshikazu Ichikawa
自作アプリを watchOS 2 対応した話 〜FastCheckin編〜
自作アプリを watchOS 2 対応した話 〜FastCheckin編〜
Kosuke Ogawa
使ってわかった!現場担当者が語るOpenStack運用管理の課題 - OpenStack最新情報セミナー 2015年2月
使ってわかった!現場担当者が語るOpenStack運用管理の課題 - OpenStack最新情報セミナー 2015年2月
VirtualTech Japan Inc.
OpenStackもオンプレミスもまとめて一元監視 Hatohol+Zabbixでハイブリッドクラウド監視を実現 - OpenStack最新情報セミナー...
OpenStackもオンプレミスもまとめて一元監視 Hatohol+Zabbixでハイブリッドクラウド監視を実現 - OpenStack最新情報セミナー...
VirtualTech Japan Inc.
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
Yusuke Suzuki
OCI serverless introduction
OCI serverless introduction
SuguruSugiyama
Social Web Conference Vol4 JIRA4公開用
Social Web Conference Vol4 JIRA4公開用
Hiroshi Ohnuki
[Modern Cloud Day Tokyo 2019] KubeConに登壇したCloud Native Labsのエンジニアが、初学者にも分かりやす...
[Modern Cloud Day Tokyo 2019] KubeConに登壇したCloud Native Labsのエンジニアが、初学者にも分かりやす...
オラクルエンジニア通信
「オープンなジオデータを考える」資料
「オープンなジオデータを考える」資料
Fumihiro Kato
Intalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
PTLのお仕事とリリースパイプラインの裏側
PTLのお仕事とリリースパイプラインの裏側
masahito12
Javaはコミュニティの力で再び偉大になれるのか
Javaはコミュニティの力で再び偉大になれるのか
Yusuke Suzuki
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理
Tadashi Miyazato
Oracle も Serverless サービスやっています
Oracle も Serverless サービスやっています
SuguruSugiyama
Google Product
Google Product
Daisuke Sugai
serverless openstack 101
serverless openstack 101
Naoto Gohko
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
toyship
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
takuma mori
IaC化の3つのポイント
IaC化の3つのポイント
山下 達也
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向
NTT Software Innovation Center
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
Takashi Sogabe
Tsdg meetup#12 summer16 lightning_experience
Tsdg meetup#12 summer16 lightning_experience
Ikou Sanuki
Java in the World of Container by David Buck
Java in the World of Container by David Buck
オラクルエンジニア通信
20101022
20101022
信次郎 兼久
Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
Hideki Takase
More Related Content
Similar to RealmとApp Extensionのガイダンス/Realm meetup vol.6
[Modern Cloud Day Tokyo 2019] KubeConに登壇したCloud Native Labsのエンジニアが、初学者にも分かりやす...
[Modern Cloud Day Tokyo 2019] KubeConに登壇したCloud Native Labsのエンジニアが、初学者にも分かりやす...
オラクルエンジニア通信
「オープンなジオデータを考える」資料
「オープンなジオデータを考える」資料
Fumihiro Kato
Intalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
PTLのお仕事とリリースパイプラインの裏側
PTLのお仕事とリリースパイプラインの裏側
masahito12
Javaはコミュニティの力で再び偉大になれるのか
Javaはコミュニティの力で再び偉大になれるのか
Yusuke Suzuki
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理
Tadashi Miyazato
Oracle も Serverless サービスやっています
Oracle も Serverless サービスやっています
SuguruSugiyama
Google Product
Google Product
Daisuke Sugai
serverless openstack 101
serverless openstack 101
Naoto Gohko
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
toyship
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
takuma mori
IaC化の3つのポイント
IaC化の3つのポイント
山下 達也
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向
NTT Software Innovation Center
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
Takashi Sogabe
Tsdg meetup#12 summer16 lightning_experience
Tsdg meetup#12 summer16 lightning_experience
Ikou Sanuki
Java in the World of Container by David Buck
Java in the World of Container by David Buck
オラクルエンジニア通信
20101022
20101022
信次郎 兼久
Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
Hideki Takase
Similar to RealmとApp Extensionのガイダンス/Realm meetup vol.6
(20)
[Modern Cloud Day Tokyo 2019] KubeConに登壇したCloud Native Labsのエンジニアが、初学者にも分かりやす...
[Modern Cloud Day Tokyo 2019] KubeConに登壇したCloud Native Labsのエンジニアが、初学者にも分かりやす...
「オープンなジオデータを考える」資料
「オープンなジオデータを考える」資料
Intalio japan special cloud workshop
Intalio japan special cloud workshop
PTLのお仕事とリリースパイプラインの裏側
PTLのお仕事とリリースパイプラインの裏側
Javaはコミュニティの力で再び偉大になれるのか
Javaはコミュニティの力で再び偉大になれるのか
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理
Oracle も Serverless サービスやっています
Oracle も Serverless サービスやっています
Google Product
Google Product
serverless openstack 101
serverless openstack 101
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
IaC化の3つのポイント
IaC化の3つのポイント
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
Tsdg meetup#12 summer16 lightning_experience
Tsdg meetup#12 summer16 lightning_experience
Java in the World of Container by David Buck
Java in the World of Container by David Buck
20101022
20101022
Scalaでのプログラム開発
Scalaでのプログラム開発
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
RealmとApp Extensionのガイダンス/Realm meetup vol.6
1.
RealmとApp Extensionの ガイダンス 星野佑太 Yuta Hoshino 1
2015-8-25 Realm Meetup #6
2.
このプレゼンのメリット • iOSアプリとApple Watchアプリ(watchOS1)の間で、同一のRealm ファイルを共有するための手順を確認できる。 •
他のApp Extension(TodayやActionなど)も本質は同じ • Watchをビュワーにするアプリ、キャッシュをWatchやToday Extensionで再利用するアプリなどを開発するときに役立つ。 Realm 2
3.
自己紹介 • 星野佑太 iPhone3GSの頃〜、自社開発が メインの株式会社ジーニー •
メモ電卓(ge-calc) 累計64万DL。iPad総合 Top100入り。200万DL目指す。 CoreDataベース。 • Realmの製品導入はQReationが初。 • Apple Watchの受託案件として、Akerun のモックアップ段階のUIプログラミング 3 Yuta Hoshino @hsylife
4.
• AppStoreで無料配布中。 • URLからQRコードを生成、スキャンす るiOS/Watchアプリ。Glance、Action、 Handoff済。 •
Realm Swiftを採用している。 • iOSアプリとWatchアプリが同一の Realmファイルを共用している (watchOS1)。 • 勉強会で相手方にURLを渡すのが大変だ ったので開発した。 QReation (クリエーション) 4 https://appsto.re/jp/mtMw7.i
5.
なぜRealmを採用したか? 5 セット アップ の速さ データ 構造の 定義し やすさ 操作の 記述の 簡易さ データ 更新の 通知 iCloud 対応 Android 対応 総合 CoreDa ta △ △ △
◎ ◎ × △ Realm ◎ ◎ ◎ △ × ◎ ◎
6.
最新版UIの動き
7.
必要な作業 7 Realm導入済 iOSアプリ AppGroup Embedded Framework UIの挙動調 整 WatchKit Extension プロジェクト CocoaPods
8.
App Groupの意義 • 同一の.realmファイルをiOS/Watch(AppExtension)の いずれからもアクセスできるようにするため。 8 Realm
9.
App Group • Member
CenterにApp Groupを登録する。 • Certificates, Identifiers & Profiles > iOS Apps > Identifiers > App Groups • identifierは”group.com.ge-nie.QReate.Documents”のような形 • iOS/Extensionの各ターゲットの設定をONに。 • Project > Capabilities > AppGroupsをON → identifierを選択 • ファイルのパスを与える。 9
10.
より詳しい手順の解説 • WatchKitでiPhone Appとデータ共有する方法(_tid_著) 10 http://qiita.com/_tid_/items/dfff60ec8e93fefe1af4
11.
Embedded Frameworkの利点 • 親と子で重複してしまうコードを1本化して使 いまわす。 •
RealmObjectモデルを記述したファイルを使い まわせる。 • 二度手間をカットできる。整合性のトラブルを 回避できる。 • Embedded FrameworkなしでもFrameworkを作 成できる。しかし実装手順がより簡易で済む。 • Xcode6から利用可。 Embedded Framework 11
12.
Embedded Framework 1. Targetsに追加する。CocoaTouchFrameworkを選択→ProductNameにFrameworkの名前 として使う任意の名前を入れる 2.
AppExtensionで利用できないAPIを弾くマクロを有効化す る。Allow app extension API onlyにチェック 3. Extensionにリンクさせる。本体アプリがEmbedded binaryとして追加されている かを確認→Extensionのターゲットに切り替えて、+を押してリンクさせる。 4. アクセスレベルをpublicに。 5. importする。iOS/Watchの両方で。 12
13.
より詳しい手順の解説 • [iOS 8]
App Extension #2 – Embedded Framework を利 用して共有コードを Framework 化する(クラスメソッ ド株式会社 著) 13 http://dev.classmethod.jp/references/ios-8-embedded-framework/
14.
必要な作業 14 Realm導入済 iOSアプリ AppGroup Embedded Framework UIの挙動調 整 WatchKit Extension プロジェクト CocoaPods
15.
Cocoa Podsの利点 • 導入が楽。 •
バージョンアップ時のアップデート作業(◎)が圧倒的に楽。 • Podfileを一度書いておけば基本的にOK。 15
16.
Podfile platform :ios,'8.0' use_frameworks! link_with 'QReate_Framework' pod
'RealmSwift' end Targets Podfile • Watch Extentionなどのターゲットを全部リンクする必要はなく、 Embedded FrameworkをLink withでリンクさせればよい • ターゲット名の誤記、スペースの有無、シングルクォーテーションに注意
17.
より詳しい手順の解説 17 • App ExtensionでCocoaPods管理しているライブラリ を使用する2つの方法(tmnb
著) http://qiita.com/tmnb/items/15377f03498ca0b53592
18.
UIとRealm • リスト画面から contextForSegueWithIdentifier( )で遷移先のQRコード表示画面 にcurrentRowのインデックス を受け渡す。 • そのインデックスを見て、 Realmファイルからレコードを 取り出してQRコードを表示し ている。 18 currentRow =1index
0 index 1 index 1 0 1 index 00 index 11 Realm
19.
データ変更時の原則 • データ変更が起きた場合にどう処理しているか。 • Realmの変更通知を受けたときに、currentRowから現在のレコード内容を参照して再表 示する原則をとっている。 •
NotificationTokenにRealm().addNotificationBlockを追加して再表示処理をさせる。 19 index 1 index 0 index 1 index 0 index 1 index 0 t 🔃 👀 changedchanged
20.
要素不足でクラッシュ 20 クラッシュする場合: iOS側が削除した要素をwatch側で参照した index 1 index
0 index 1 index 0 index 1 index 0 💥 t index 1 🔃 👀 ??? • ソートされたレコードはArray型。 • watchで末尾のrowのQRコードを表示している場合に、iOS側 でそのデータソースを削除すると、要素の数が不足する。 ??? 🐛
21.
要素不足時の例外 21 対策: 要素不足ならpopさせてReload index 0 index
1 index 0 index 1 index 0 index 1 index 0 🔃 ↩︎ 👀 t index 1 • Realmの変更通知は、追加・修正・削除などを区別していない。 「変更」という通知が来るのみ。 • 要素不足を判定して、ルートに戻す。 👀
22.
watch側のコード 22 2層目のQRコード表示用 InterfaceController.swift iOS側で.realmファイルの変更
23.
☺︎thank you, • ご静聴ありがとうございました。 •
watchOS2対応については改めてまとめて 別の機会に発表したいと思います。 • 質問があれば ythshn@gmail.com までお 願いします。 • Facebookリクエストを歓迎しています。 • 告知があります。 23 Yuta Hoshino @hsylife
24.
AED💨Registers(仮) • 年間7万人位が心臓停止で死亡。誰もが突然、遭遇する。 • 心臓マッサージとAEDの処置で救命率は4倍高まる。 •
AED使用で救命できたのは、目撃ケースの3.7% 近くのAEDを速く持ってくる ことが大事。 • AEDを配達するアプリなどを発想する上で、設置場所のデータが10倍ほしい。 • AEDの販売台数は世界一で60万弱あるが、設置場所のオープンデータは3.5万 件分。 • AEDの設置場所でイングレスみたいな国取りゲームを作って、結果的にAED の全国マップを作るアイデア。(AED💨) • 人口密集地ほど配点が高い。 • オレンジチームと白チームに分かれる?(要は対戦) • 個人の点数ランキングもある。 • 先取した人が点数ゲット+100。一定期間経つとまたリセットされる。 • AEDの設置データはオープンデータプラットホームに転送する。そこからサー ドパーティーのAED検索などのアプリと連携して、緊急時などに活用される。 • → 良いアイディアがあれば教えてください。ythshn@gmail.com 24 96. 3 % 3.7 %
Editor's Notes
・QReationというより、概説。イメージと資料のありかを示したい。補足をお願いしたい ・この女性は誰なのか? http://dunnnk.com ・時間配分を考えるために。iOSエンジニアの人数、App Extensionの開発を経験した人数、AppGroupでファイル共有した経験がある人、embedded frameworkを使ったことがある人, podfileのlink withを使ったことがある数、Watch開発の経験がある人
App ExtensionでRealmを使うときのガイダンス。 iOS9/watchOS2の秋以降も使える知識
Realmを製品導入したのは初めて。
QRコードを見せるアプリ。 iOSアプリとWatchアプリが同一のRealmファイルを共用している
実装の手間が軽い
右側がwatch。Index 0を登録→QRコードを表示。 Index 1を登録→内容を修正する 削除した場合の挙動
全体像を把握してほしい
リンクさせる仕組み
パスを与えるための記述はこうなる。
手間をカットできる。 公式ドキュメントでは、埋め込みフレームワークという用語。
特に4。アクセスレベルをpublicにする。privateでは同じソース内でしかアクセスできない。
あと2つ
アップデートが楽
Embedded FrameworkをLink withでリンクさせればよい
Realmファイルのデータをどう表示しているか tableで押されたrowを遷移先に渡して、それをキーにしてRealmのレコードを取り出してQRコードを表示している。
原則として、変更通知で再表示させている。
要素不足が発生するとクラッシュする
要素不足を判定して、ルートに戻す
更新通知のなかで、原則と例外の書き分け
watchOS2はファイル共有の考え方が全く違うので、別の機会にまとめて話す メールとfbリクエストをお待ちしています
この前の日曜にAEDオープンデータ勉強会へ。 AEDを速く手配することが大事。設置場所のデータを10倍集めたい。 最近思いついたアイディア。イングレスみたいなゲーム プラスしたいアイディアがあれば、教えてください。
Download now