Suche senden
Hochladen
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
•
0 gefällt mir
•
858 views
Yu Sugawara
Folgen
iPhone Dev Sapporo勉強会 Mar, 2017
Weniger lesen
Mehr lesen
Ingenieurwesen
Melden
Teilen
Melden
Teilen
1 von 39
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
実践Realm
実践Realm
Yu Sugawara
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
Jun Ohtani
Scala on Hadoop
Scala on Hadoop
Shinji Tanaka
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
Enumはデキる子 ~ case .Success(let value): ~
Enumはデキる子 ~ case .Success(let value): ~
Takaaki Tanaka
Getting Started Japanese Search and Calculate Similarity with Apache Lucene
Getting Started Japanese Search and Calculate Similarity with Apache Lucene
Eiji Shinohara
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
Nao Minami
Search on AWS - IVS CTO Night and Day 2016 Spring
Search on AWS - IVS CTO Night and Day 2016 Spring
Eiji Shinohara
Empfohlen
実践Realm
実践Realm
Yu Sugawara
Elasticsearch入門 pyfes 201207
Elasticsearch入門 pyfes 201207
Jun Ohtani
Scala on Hadoop
Scala on Hadoop
Shinji Tanaka
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
Enumはデキる子 ~ case .Success(let value): ~
Enumはデキる子 ~ case .Success(let value): ~
Takaaki Tanaka
Getting Started Japanese Search and Calculate Similarity with Apache Lucene
Getting Started Japanese Search and Calculate Similarity with Apache Lucene
Eiji Shinohara
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
Nao Minami
Search on AWS - IVS CTO Night and Day 2016 Spring
Search on AWS - IVS CTO Night and Day 2016 Spring
Eiji Shinohara
Apache Drill で見る Twitter の世界
Apache Drill で見る Twitter の世界
Masaru Watanabe
JavaScriptから利用するFirebase
JavaScriptから利用するFirebase
Takuji Shimokawa
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-Javaライブラリ
Yukiya Nakagawa
GDG Tokyo Firebaseを使った Androidアプリ開発
GDG Tokyo Firebaseを使った Androidアプリ開発
Fumihiko Shiroyama
RubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入り
Kouhei Sutou
Hadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese Version
Cloudera, Inc.
How Smalltalker Works
How Smalltalker Works
Sho Yoshida
AngularFireで楽々バックエンド
AngularFireで楽々バックエンド
Yosuke Onoue
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
Kouhei Sutou
お金をかけないDBチューニング
お金をかけないDBチューニング
Kazuya Sato
Cloud computing competition by Hapyrus
Cloud computing competition by Hapyrus
Koichi Fujikawa
Rakuten tech conf
Rakuten tech conf
Koichi Fujikawa
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
Hadoop / Spark Conference Japan
Terraform始めました
Terraform始めました
w1mvy pine
Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)
Daisuke Kikuchi
お手軽並列処理
お手軽並列処理
博文 斉藤
Capistrano introduction
Capistrano introduction
Misa Kondo
Shizupptx
Shizupptx
Kazufumi Ohkawa
AWS SDK for Haskell開発
AWS SDK for Haskell開発
Nomura Yusuke
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
Kouhei Sutou
презентация к 20.03.17 копия
презентация к 20.03.17 копия
Дмитрий Шардик
Presentation11112
Presentation11112
yahya_ahmad
Weitere ähnliche Inhalte
Was ist angesagt?
Apache Drill で見る Twitter の世界
Apache Drill で見る Twitter の世界
Masaru Watanabe
JavaScriptから利用するFirebase
JavaScriptから利用するFirebase
Takuji Shimokawa
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-Javaライブラリ
Yukiya Nakagawa
GDG Tokyo Firebaseを使った Androidアプリ開発
GDG Tokyo Firebaseを使った Androidアプリ開発
Fumihiko Shiroyama
RubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入り
Kouhei Sutou
Hadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese Version
Cloudera, Inc.
How Smalltalker Works
How Smalltalker Works
Sho Yoshida
AngularFireで楽々バックエンド
AngularFireで楽々バックエンド
Yosuke Onoue
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
Kouhei Sutou
お金をかけないDBチューニング
お金をかけないDBチューニング
Kazuya Sato
Cloud computing competition by Hapyrus
Cloud computing competition by Hapyrus
Koichi Fujikawa
Rakuten tech conf
Rakuten tech conf
Koichi Fujikawa
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
Hadoop / Spark Conference Japan
Terraform始めました
Terraform始めました
w1mvy pine
Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)
Daisuke Kikuchi
お手軽並列処理
お手軽並列処理
博文 斉藤
Capistrano introduction
Capistrano introduction
Misa Kondo
Shizupptx
Shizupptx
Kazufumi Ohkawa
AWS SDK for Haskell開発
AWS SDK for Haskell開発
Nomura Yusuke
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
Kouhei Sutou
Was ist angesagt?
(20)
Apache Drill で見る Twitter の世界
Apache Drill で見る Twitter の世界
JavaScriptから利用するFirebase
JavaScriptから利用するFirebase
Androidで使えるJSON-Javaライブラリ
Androidで使えるJSON-Javaライブラリ
GDG Tokyo Firebaseを使った Androidアプリ開発
GDG Tokyo Firebaseを使った Androidアプリ開発
RubyもApache Arrowでデータ処理言語の仲間入り
RubyもApache Arrowでデータ処理言語の仲間入り
Hadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese Version
How Smalltalker Works
How Smalltalker Works
AngularFireで楽々バックエンド
AngularFireで楽々バックエンド
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
お金をかけないDBチューニング
お金をかけないDBチューニング
Cloud computing competition by Hapyrus
Cloud computing competition by Hapyrus
Rakuten tech conf
Rakuten tech conf
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
Terraform始めました
Terraform始めました
Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)
お手軽並列処理
お手軽並列処理
Capistrano introduction
Capistrano introduction
Shizupptx
Shizupptx
AWS SDK for Haskell開発
AWS SDK for Haskell開発
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
Andere mochten auch
презентация к 20.03.17 копия
презентация к 20.03.17 копия
Дмитрий Шардик
Presentation11112
Presentation11112
yahya_ahmad
Is Xanax Safe During Pregnancy?
Is Xanax Safe During Pregnancy?
BLVD Treatment Centers
Prime rilevazioni pd
Prime rilevazioni pd
Claudia Lanteri
Presentacions tic
Presentacions tic
fede32
Question 7
Question 7
AS Media Column C
Summer Placement Report 2016-18
Summer Placement Report 2016-18
Deepak V
Museum of London
Museum of London
Gabrielle Asamoah
“Coming clean” about researching multilingually – learning from different dis...
“Coming clean” about researching multilingually – learning from different dis...
RMBorders
Curso de formador de formadores
Curso de formador de formadores
Ricardo Quintana Checa
Facebook para empresas
Facebook para empresas
Ricardo Quintana Checa
Recits
Recits
Yann Lefebvre
Pai educación infantil tambor
Pai educación infantil tambor
Vicky Navarro Morales
clinical anatomy of mid brain
clinical anatomy of mid brain
Raghav Nirula
предложения с чужой речью
предложения с чужой речью
oquzaman
презентація
презентація
Sprint
Анализ Клиентов. Геоаналитика, анализ лояльности, советы от экспертов
Анализ Клиентов. Геоаналитика, анализ лояльности, советы от экспертов
a2consulting
Curso de excel 2010 avanzado
Curso de excel 2010 avanzado
Ricardo Quintana Checa
Andere mochten auch
(18)
презентация к 20.03.17 копия
презентация к 20.03.17 копия
Presentation11112
Presentation11112
Is Xanax Safe During Pregnancy?
Is Xanax Safe During Pregnancy?
Prime rilevazioni pd
Prime rilevazioni pd
Presentacions tic
Presentacions tic
Question 7
Question 7
Summer Placement Report 2016-18
Summer Placement Report 2016-18
Museum of London
Museum of London
“Coming clean” about researching multilingually – learning from different dis...
“Coming clean” about researching multilingually – learning from different dis...
Curso de formador de formadores
Curso de formador de formadores
Facebook para empresas
Facebook para empresas
Recits
Recits
Pai educación infantil tambor
Pai educación infantil tambor
clinical anatomy of mid brain
clinical anatomy of mid brain
предложения с чужой речью
предложения с чужой речью
презентація
презентація
Анализ Клиентов. Геоаналитика, анализ лояльности, советы от экспертов
Анализ Клиентов. Геоаналитика, анализ лояльности, советы от экспертов
Curso de excel 2010 avanzado
Curso de excel 2010 avanzado
Ähnlich wie 書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
takezoe
Maiking RIA Apps by Ruby
Maiking RIA Apps by Ruby
shozon
Realmという衝撃
Realmという衝撃
Takumi KASHIMA
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
linzhixing
インメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギ
Masaki Yamakawa
Apache Torqueについて
Apache Torqueについて
tako pons
HTML5&API総まくり
HTML5&API総まくり
Shumpei Shiraishi
Yesod(at FPM2012)
Yesod(at FPM2012)
Seizan Shimazaki
Data management of cosmos db using apache gremlin
Data management of cosmos db using apache gremlin
Takao Tetsuro
AWS SDK for Smalltalk
AWS SDK for Smalltalk
Sho Yoshida
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
Taisuke Fukuno
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Shoot Morii
Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介
Ryo RKTM
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
Yuto Suzuki
Springでdao 20070413
Springでdao 20070413
Funato Takashi
Jjug springセッション
Jjug springセッション
Yuichi Hasegawa
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
靖 小田島
React Native GUIDE
React Native GUIDE
dcubeio
#経済学のための実践的データ分析 6. データを実際に分析するまでのとてもとても遠く険しく細く長い道
#経済学のための実践的データ分析 6. データを実際に分析するまでのとてもとても遠く険しく細く長い道
Yasushi Hara
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
Ähnlich wie 書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
(20)
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
Maiking RIA Apps by Ruby
Maiking RIA Apps by Ruby
Realmという衝撃
Realmという衝撃
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
インメモリーで超高速処理を実現する場合のカギ
インメモリーで超高速処理を実現する場合のカギ
Apache Torqueについて
Apache Torqueについて
HTML5&API総まくり
HTML5&API総まくり
Yesod(at FPM2012)
Yesod(at FPM2012)
Data management of cosmos db using apache gremlin
Data management of cosmos db using apache gremlin
AWS SDK for Smalltalk
AWS SDK for Smalltalk
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
Springでdao 20070413
Springでdao 20070413
Jjug springセッション
Jjug springセッション
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
React Native GUIDE
React Native GUIDE
#経済学のための実践的データ分析 6. データを実際に分析するまでのとてもとても遠く険しく細く長い道
#経済学のための実践的データ分析 6. データを実際に分析するまでのとてもとても遠く険しく細く長い道
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
1.
軽量・高速モバイルデータベース Realm入門を使って学ぶRealmの勘所 DevSap勉強会 17/03/26
2.
菅原 祐 @yusuga_
3.
Aplos for Twitter
4.
Realmの本を書きました!
5.
軽量•高速モバイルデー タベ ー ス Re�alm 入門 菅原祐蕃 Realm岸川克己監修 「Swift」と 「Realm
Mobile Database」 によるiOSアプリ開発を 徹底解説! 区モバイルデー タペー スを使ったことがない方 図「SQ Lite」や「Core Data」から置き換えたい方 区より実践的な使用方法を知りたい方 にオススメ! 授術評編社
6.
本日のテーマ
7.
本日のテーマ 1. 軽量・高速モバイルデータベース Realm入門を使って学ぶRealmの勘所
8.
本日のテーマ 1. 軽量・高速モバイルデータベース Realm入門を使って学ぶRealmの勘所 2. サンプルからRealmの概要を掴む
9.
サンプルDL (195MB) 1. Google検索:
realm入門 2. 軽量・高速モバイルデータベース Realm入門:書籍案内|技術 評論社 3. 本書のサポートページ
10.
書籍「軽量・高速モバイルデータベー ス Realm入門」を使って学ぶRealmの 勘所
11.
Realmとは (前書き) • 世界初のモバイルファーストなデータベース •
2016年5月にバージョン1.0がリリース • 最新は2017年3月13日にリリースされたv2.4.4 • 本書は、v2.4.2をサポート Swift 3.0.2
12.
Realmの特徴 (p007) • クラス定義
== モデル定義(テーブル定義) • DBの非同期処理をサポート • 高速 (p009) • 独自のストレージエンジン(C++)
13.
Realmの特徴 (p007) • マルチプラットフォーム
(p010) • iOS (Swift, Objective-C) • Android (Java, Kotlin) • React Native (JavaScript) • Xamarin (C#) • データベースファイルは完全なマルチプラットフォームをサポー ト • iOSで作ったRealmファイルをAndroidで開くことも可能
14.
Realmの特徴 (p007) • 日本語で問い合わせ可能なユーザサポートの窓口
(p011) • Slack • Realm Japan User Group (Facebook) • OSS (p012) • realm-cocoa • realm-core
15.
Realmのインストール (p014) • Dynamic
Framework • CocoaPods • Carthage
16.
モデル定義 (p027) import RealmSwift class
Person: Object { // RealmSwift.Objectクラスを継承 dynamic var name = "" // String型 let dogs = List<Dog>() // 1対多の関連 } class Dog: Object { dynamic var name = "" dynamic var age = 0 }
17.
モデル定義チートシート (p272) • 非オプショナル型/オプショナル型 •
1対1/1対多/逆方向の関連 • プライマリキーの指定 • インデックスの指定 • 保存しないプロパティの指定 • 暗黙的に保存しないプロパティ
18.
モデルオブジェクトの生成と初期化 3種類 (p035) 1.
プロパティ値 let dog = Dog() dog.name = "Momo" dog.age = 9
19.
モデルオブジェクトの生成と初期化 3種類 (p035) 2.
KVCに準拠しているオブジェクトで初期化 let dog = Dog(value: ["name": "Momo", "age": 9])
20.
モデルオブジェクトの生成と初期化 3種類 (p035) 3.
各プロパティの値の配列で初期化 let dog = Dog(value: ["Momo", 9])
21.
モデルオブジェクトの追加 (p039) let realm
= try! Realm() // このrealmインスタンスを使いデータベースの操作を行う // 書き込みトランザクション realm.beginWrite() realm.add(mydog) // モデルオブジェクトの追加 try! realm.commitWrite()
22.
モデルオブジェクトの取得 (p055) let results
= realm.objects(Dog.self) // すべてのDogオブジェクト .filter("name CONTAINS 'x'") // nameにxを含む
23.
自動更新 (p069) let realm
= try! Realm() // デフォルトRealmを取得 // resutlsを生成 let results = realm.objects(Cat.self) // Catモデルオブジェクト .filter("age >= 5") // 5歳以上 .sorted(byKeyPath: "age", ascending: true) // ageで昇順ソート // データベースにCatがないので、resultsは0件です。 print("results.count: (results.count)") // 0
24.
自動更新 (p069) // cat1を加えます。ageは1です。 let
cat1 = Cat(value: ["name": "Toto", "age": 1]) try! realm.write { realm.add(cat1) } // データベースにCatは1件あるのですが、 // cat1.ageが5未満なのでresultsは変わらず0件です。 print("results.count: (results.count)") // 0
25.
自動更新 (p069) // cat1.ageを10に変更します。 try!
realm.write { cat1.age = 10 } // cat1が5歳以上の条件にマッチしたので、 // resultsにcat1が自動で追加されます。 print("results: (results)") // [cat1]
26.
自動更新 (p069) // cat2を追加します。ageは5です。 let
cat2 = Cat(value: ["name": "Rao", "age": 5]) try! realm.write { realm.add(cat2) } // cat2は5歳以上の条件にマッチしているので、 // resultsにcat2が自動で追加されます。 // ageで昇順ソートもされています。 print("results: (results)") // [cat2, cat1]
27.
自動更新 (p069) // cat2を削除します。 try!
realm.write { realm.delete(cat2) } // cat2がデータベースから削除されたので、 // resultsからcat2が自動で取り除かれます。 print("results: (results)") // [cat1]
28.
マルチスレッド (p074) // マルチスレッドでデータベースにアクセス DispatchQueue.global().async { //
デフォルトRealmを取得 let realm = try! Realm() // モデルオブジェクトの生成 let otherdog = Dog() otherdog.name = "Hachi" otherdog.age = 5 realm.beginWrite() realm.add(otherdog) // モデルオブジェクトの追加 try! realm.commitWrite() }
29.
通知 (p080) class TableViewController:
UITableViewController { // 通知を有効にしたい期間中は、 // NotificationTokenを強参照で保持する必要があります。 var token: NotificationToken? override func viewDidLoad() { super.viewDidLoad() let realm = try! Realm() // Realmクラスの通知ハンドラを追加する。 token = realm.addNotificationBlock { (notification, realm) in // 通知ハンドラ } } }
30.
通知をサポートしているクラス • Realmクラス: いずれかのオブジェクトの変更 •
Objectクラス: オブジェクト自身の変更 • コレクションクラス: コレクションクラスが持つオブジェクトの 変更 (Results、List、LinkingObjects)
31.
サンプルからRealmの 概要を掴む
32.
サンプル 7選 1. 基本 サンプル/11-01_通知/RealmNotification.xcodeproj 2.
応用 サンプル/11-05_通知のスキップ/RealmWithoutNotifying.xcodeproj
33.
サンプル 7選 3. 通知の細かい挙動 サンプル/11-03通知ハンドラRealmCollectionChange-updateの挙動 確認/RealmCollectionChange.xcodeproj 4.
検索 サンプル/19-08_タイムラインをフィルタリングする/ TwitterFilter.xcodeproj
34.
サンプル 7選 5. マイグレーション サンプル/20-02_仕様変更のマイグレーションに対応する/ TwitterMigration.xcodeproj 6.
Realmファイルの動的な切り替え サンプル/20-03_複数ユーザのログインに対応する/ TwitterMultiple.xcodeproj
35.
サンプル 7選 7. 実践的な開発 サンプル/20-04_その後の開発/TwitterApp.xcodeproj
36.
よくある質問 Q. どういう場合にRealmを選択すればいいの? A. UserDefaults以上に複雑なことをしたい
37.
よくある質問 Q. Core Dataよりいいの? A. -
学習コスト低 - APIがシンプル - 処理が高速
38.
書籍プレゼント 3冊 優先 - 勉強会に初めて来た方 - Realmを使ったことない方
39.
ご静聴ありがとうございました
Jetzt herunterladen