Soumettre la recherche
Mettre en ligne
Android で Realm を使ってみよう
•
30 j'aime
•
7,932 vues
Ryutaro Miyashita
Suivre
Presentation of 03.14.2015 Realm meetup #1 in Sansan. Get started Realm-Java.
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 36
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Realmという衝撃
Realmという衝撃
Takumi KASHIMA
Impression of realm java
Impression of realm java
Ryutaro Miyashita
Aerospike deep dive LDTs
Aerospike deep dive LDTs
Masaki Toyoshima
Mesos consulで構築するマイクロサービスインフラ
Mesos consulで構築するマイクロサービスインフラ
Mitsutoshi Kiuchi
Docker活用ソリューション紹介
Docker活用ソリューション紹介
Mitsutoshi Kiuchi
AWS SDK for Smalltalk
AWS SDK for Smalltalk
Sho Yoshida
OCP Meetup Tokyo #05 ECK on OCP
OCP Meetup Tokyo #05 ECK on OCP
Tetsuya Sodo
Realm of the Mobile Database: an introduction to Realm
Realm of the Mobile Database: an introduction to Realm
Martin Grider
Recommandé
Realmという衝撃
Realmという衝撃
Takumi KASHIMA
Impression of realm java
Impression of realm java
Ryutaro Miyashita
Aerospike deep dive LDTs
Aerospike deep dive LDTs
Masaki Toyoshima
Mesos consulで構築するマイクロサービスインフラ
Mesos consulで構築するマイクロサービスインフラ
Mitsutoshi Kiuchi
Docker活用ソリューション紹介
Docker活用ソリューション紹介
Mitsutoshi Kiuchi
AWS SDK for Smalltalk
AWS SDK for Smalltalk
Sho Yoshida
OCP Meetup Tokyo #05 ECK on OCP
OCP Meetup Tokyo #05 ECK on OCP
Tetsuya Sodo
Realm of the Mobile Database: an introduction to Realm
Realm of the Mobile Database: an introduction to Realm
Martin Grider
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方
Fumihiko Shiroyama
Web技術勉強会23回目
Web技術勉強会23回目
龍一 田中
React Native GUIDE
React Native GUIDE
dcubeio
クラスメソッド第4回登壇資料 RxRealm
クラスメソッド第4回登壇資料 RxRealm
Daisuke Nagata
東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates
koichik
次世代DaoフレームワークDoma
次世代DaoフレームワークDoma
Toshihiro Nakamura
Springでdao 20070413
Springでdao 20070413
Funato Takashi
Maiking RIA Apps by Ruby
Maiking RIA Apps by Ruby
shozon
G * magazine 0
G * magazine 0
Tsuyoshi Yamamoto
Sc2009autumn s2robot
Sc2009autumn s2robot
Shinsuke Sugaya
Lt 111217
Lt 111217
Tomoyuki Obi
これからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしよう
真吾 吉田
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
Yu Sugawara
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
Hiroshi Ito
Malwat4 20130223 analyzing_android_malware
Malwat4 20130223 analyzing_android_malware
Ayase
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
Masahito Zembutsu
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
papamitra
CDI, Seam 3 and Forge
CDI, Seam 3 and Forge
nekop
Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...
Shotaro Suzuki
Laravel本とコミュニティの話
Laravel本とコミュニティの話
Kazuaki KURIU
全てSになる -RxJavaとLWSを持ち込む楽しさ-
全てSになる -RxJavaとLWSを持ち込む楽しさ-
Ryutaro Miyashita
Wearable realm
Wearable realm
Ryutaro Miyashita
Contenu connexe
Similaire à Android で Realm を使ってみよう
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方
Fumihiko Shiroyama
Web技術勉強会23回目
Web技術勉強会23回目
龍一 田中
React Native GUIDE
React Native GUIDE
dcubeio
クラスメソッド第4回登壇資料 RxRealm
クラスメソッド第4回登壇資料 RxRealm
Daisuke Nagata
東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates
koichik
次世代DaoフレームワークDoma
次世代DaoフレームワークDoma
Toshihiro Nakamura
Springでdao 20070413
Springでdao 20070413
Funato Takashi
Maiking RIA Apps by Ruby
Maiking RIA Apps by Ruby
shozon
G * magazine 0
G * magazine 0
Tsuyoshi Yamamoto
Sc2009autumn s2robot
Sc2009autumn s2robot
Shinsuke Sugaya
Lt 111217
Lt 111217
Tomoyuki Obi
これからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしよう
真吾 吉田
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
Yu Sugawara
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
Hiroshi Ito
Malwat4 20130223 analyzing_android_malware
Malwat4 20130223 analyzing_android_malware
Ayase
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
Masahito Zembutsu
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
papamitra
CDI, Seam 3 and Forge
CDI, Seam 3 and Forge
nekop
Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...
Shotaro Suzuki
Laravel本とコミュニティの話
Laravel本とコミュニティの話
Kazuaki KURIU
Similaire à Android で Realm を使ってみよう
(20)
絶対落ちないアプリの作り方
絶対落ちないアプリの作り方
Web技術勉強会23回目
Web技術勉強会23回目
React Native GUIDE
React Native GUIDE
クラスメソッド第4回登壇資料 RxRealm
クラスメソッド第4回登壇資料 RxRealm
東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates
次世代DaoフレームワークDoma
次世代DaoフレームワークDoma
Springでdao 20070413
Springでdao 20070413
Maiking RIA Apps by Ruby
Maiking RIA Apps by Ruby
G * magazine 0
G * magazine 0
Sc2009autumn s2robot
Sc2009autumn s2robot
Lt 111217
Lt 111217
これからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしよう
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
書籍「軽量・高速モバイルデータベース Realm入門」を使って学ぶRealmの勘所
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
Malwat4 20130223 analyzing_android_malware
Malwat4 20130223 analyzing_android_malware
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
CDI, Seam 3 and Forge
CDI, Seam 3 and Forge
Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...
Laravel本とコミュニティの話
Laravel本とコミュニティの話
Plus de Ryutaro Miyashita
全てSになる -RxJavaとLWSを持ち込む楽しさ-
全てSになる -RxJavaとLWSを持ち込む楽しさ-
Ryutaro Miyashita
Wearable realm
Wearable realm
Ryutaro Miyashita
Titanium 3.3 / 3.4 と iOS で気をつけたいこと
Titanium 3.3 / 3.4 と iOS で気をつけたいこと
Ryutaro Miyashita
Titanium ユーザーが Swift を触ってみたら
Titanium ユーザーが Swift を触ってみたら
Ryutaro Miyashita
re:Titanium 今ここでもう一度、はじめての Titanium #2
re:Titanium 今ここでもう一度、はじめての Titanium #2
Ryutaro Miyashita
今ここでもう一度初めての Titanium
今ここでもう一度初めての Titanium
Ryutaro Miyashita
Titanium Study Meeting in Hamamatsu LT
Titanium Study Meeting in Hamamatsu LT
Ryutaro Miyashita
Titanium 2.0 and Sample.Todo
Titanium 2.0 and Sample.Todo
Ryutaro Miyashita
Ti.tokyo.GIG 2012
Ti.tokyo.GIG 2012
Ryutaro Miyashita
Plus de Ryutaro Miyashita
(9)
全てSになる -RxJavaとLWSを持ち込む楽しさ-
全てSになる -RxJavaとLWSを持ち込む楽しさ-
Wearable realm
Wearable realm
Titanium 3.3 / 3.4 と iOS で気をつけたいこと
Titanium 3.3 / 3.4 と iOS で気をつけたいこと
Titanium ユーザーが Swift を触ってみたら
Titanium ユーザーが Swift を触ってみたら
re:Titanium 今ここでもう一度、はじめての Titanium #2
re:Titanium 今ここでもう一度、はじめての Titanium #2
今ここでもう一度初めての Titanium
今ここでもう一度初めての Titanium
Titanium Study Meeting in Hamamatsu LT
Titanium Study Meeting in Hamamatsu LT
Titanium 2.0 and Sample.Todo
Titanium 2.0 and Sample.Todo
Ti.tokyo.GIG 2012
Ti.tokyo.GIG 2012
Dernier
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
Dernier
(9)
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Android で Realm を使ってみよう
1.
RealmAndroid で Realm を使ってみよう Introduction
to Realm for Android Application Development Division Android Team, Ryutaro Miyashita 2015.03.14
2.
RealmRyutaro Miyashita Mobile Application
Engineer / ChatWork DroidKaigi は落ちました
3.
Realm ChatWork とは ビジネス向けのチャットツールです 導入社数 60,000
を突破 多職種が入り交じる大きな企業や、非 IT 系の中小企業を中心に導入 利用技術はアグレッシブ Realm をはじめとして、Scala や周辺 SaaS, AWS などをフル活用
4.
Realm
5.
Realm 1. NoSQL 型の
DB + ORM 2. C++ 製の Realm-Core 3. iOS /Android 両対応 4. とても速い!
6.
RealmRealm を使ってみよう
7.
Realm使い始めるのは簡単
8.
Realm build.gradle に記述して Sync
する dependencies { compile 'io.realm:realm-android:0.80.0' }
9.
Realm モデルを書く = テーブル定義を書く public
class User extends RealmObject { @PrimaryKey private long id; @Index private String name; // Getter と Setter は省略 }
10.
Realm Realm realm =
Realm.getInstance(/* Context */); // Retrolambda realm.executeTransaction(_realm -> { User user = _realm.createObject(User.class); user.setId(1); user.setName("John Doe"); }); realm.close(); トランザクションの中でオブジェクトを作る
11.
Realm Realm realm =
Realm.getInstance(/* Context */); User user = realm.where(User.class) .equalTo("id", 1) .findFirst(); realm.close(); メソッドチェインでクエリを作ってオブジェクトを取り出す iOS 版では NSPredicate like な検索だが、Android ではクエリビルダ
12.
Realm他の永続化機構との比較
13.
Realm Realm SQLiteShared Preferences 簡単 XML KVS 遅い 面倒 RDBMS 速い 簡単 NoSQL
RDB 速い いいとこ取り:)
14.
Realm Realm ActiveAndroid ORM (SQLite) ActiveRecord 遅い 簡単 NoSQL
RDB 速い いいとこ取り:)
15.
Realm 初期化時間[ms] 0 4000 8000 12000 16000 Realm ActiveAndroid 15,544 ms 5,054
ms Insert 件数 10,000 件 Nexus 4 / Android 5.0.1 JSON → Object
16.
Realm実際に Realm を使うなら
17.
Realm暗号化
18.
Realmbyte[] key =
new byte[64]; new SecureRandom().nextBytes(key); Realm realm = Realm.getInstance(/* Context */, key); byte 型の配列を長さ 64 で作る SecureRandom#nextBytes を使って乱数バイトを取り出す 暗号化を使っても速度にそこまで影響しない!
19.
Realm 初期化時間[ms] 0 4000 8000 12000 16000 Realm ActiveAndroid 15,544 ms 5,054
ms Insert 件数 10,000 件 Nexus 4 / Android 5.0.1 JSON → Object ↓ 暗号化を使った結果
20.
Realmbyte[] key =
new byte[64]; new SecureRandom().nextBytes(key); Realm realm = Realm.getInstance(/* Context */, key); ドキュメントとサンプルの情報の整合性が取れていない Key の保存方法は提示されていない ドキュメントは 32 になっている サンプルは単純な Random になっている どこかに保存したい
21.
Realm Key を作ったらファイルにして保存する Key ファイルがあれば読み出して
byte 配列に格納する byte[] key; File keyFile = context.getFileStreamPath(FILE_NAME); if (keyFile.exists()) { key = Files.readFromFile(keyFile, 64); } else { key = new byte[64]; new SecureRandom().nextBytes(key); Files.byteToFile(context, key, FILE_NAME); } http://goo.gl/GIK2qXFiles →
22.
RealmRealm オブジェクト
23.
Realm Realm realm; try { realm
= Realm.getInstance(/* Context */, key); } finally { if (realm != null) realm.close(); } Realm を操作するときは Realm#getInstance を経由する Realm オブジェクトは使い終わったら close が必要である
24.
Realmtry (Realm realm
= Realm.getInstance(/* Context */, key)) { // do something } Android 4.4 以上であれば try-with-resources が使える でも、4.4 以上をターゲットにできるのは多分、来世
25.
Realm public class MainActivity
extends ActionBarActivity { private Realm mRealm; @Override protected void onCreate(Bundle savedInstanceState) { mRealm = Realm.getInstance(getApplicationContext()); } @Override protected void onDestroy() { super.onDestroy(); if (mRealm != null) mRealm.close(); } } Activity の中であれば、インスタンス変数として保持してしまう onResume のタイミングで null チェックすると良いかも onDestroy のタイミングで close する
26.
Realmマルチスレッド
27.
Realm Realm realm =
Realm.getInstance(/* Context */, key); User user = realm.where(User.class) .equalTo("id", 1) .findFirst(); // Retrolambda new Thread(() -> { Log.d(TAG, user.getName()); }).start(); realm.close(); 一見動きそうではある
28.
Realm // Retrolambda new Thread(()
-> { Realm realm = Realm.getInstance(/* Context */, key); User user = realm.where(User.class) .equalTo("id", 1) .findFirst(); Log.d(TAG, user.getName()); realm.close(); }).start(); Thread の中で Realm オブジェクトそのものから取得し直す必要がある Realm オブジェクトの close 忘れに要注意
29.
Realm注意したいところ
30.
Realm public class User
extends RealmObject { @PrimaryKey private long id; @Index private String name; // Getter と Setter は省略 } モデルのフィールドに使える型は制約がある (詳細リンク) 全てのフィールドは private かつ、Getter / Setter が必要である equals, hashCode, toString も含めて、メソッドを設置できない モデルの制約
31.
Realm0.78 0.77 0.79 0.80 インメモリオブジェクト executeTransaction メソッド 暗号化機能 PrimaryKey INSERT or
Update (…orUpdate メソッド) static フィールド Realm モデル 0.01 のアップデートが過激
32.
Realmbyte[] key =
new byte[64]; new SecureRandom().nextBytes(key); Realm realm = Realm.getInstance(/* Context */, key); 英語版のドキュメント = 最新 ≠ 正しい情報 GitHub のサンプル ≠ 正しい情報 ドキュメントは 32 になっている サンプルは単純な Random になっている ドキュメントとサンプルコード 組み合わせ + 検証 + GitHub の changelog / Issues / Pull Request を読む
33.
Realm最後に
34.
Realm 1. Realm は手軽に始められる 2.
スタンドアロンアプリに最適 3. 非常に高速に動作する 4. まだ仕様や動作は注意が必要
35.
Realm宣伝
36.
Realm ChatWork で働きませんか? 1. Android Realm,
RxJava, RxAndroid 2. iOS ReactiveCocoa, Mantle 3.Web Scala, spray, DDD, ES6, React.js 下のキーワードにピンときた方、お声がけ or エントリを!
Télécharger maintenant