Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Realm Japan meetup #20 Java
Search
zaki50
November 25, 2016
Technology
330
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Realm Japan meetup #20 Java
zaki50
November 25, 2016
More Decks by zaki50
See All by zaki50
I/O Extended 2018 @Tokyo Android1
zaki50
3
1.3k
簡単高速なDIライブラリToothpick
zaki50
1
240
Android Studio 3.0 profilerハンズオン
zaki50
2
800
Realm Japan meetup #23_Java
zaki50
0
760
Realm Japan meetup #22_Java
zaki50
1
580
Realm World Tour Osaka Recent Java Updates
zaki50
0
500
Realm World Tour - ErrorProne in Realm Java
zaki50
2
500
Realm World Tour Tokyo Recent Java Updates
zaki50
2
810
Realm World Tour - ErrorProne in Realm Java
zaki50
1
790
Other Decks in Technology
See All in Technology
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
6
1.4k
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
200
グローバル基準のSREは、運用現場でどう機能したか:成熟度アセスメントの実践 / SRE NEXT 2026
sorawatanabe
0
140
Breaking the Seal: Static Deobfuscation of Compiled V8 JavaScript Bytecode Malware
hshrzd
0
660
侵入は突然に 〜 IoTマルウェアと悪用される家庭の機器 ~ / When Intrusion Strikes: IoT Malware and the Abuse of Home Devices
nttcom
0
1.5k
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
120
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
4.4k
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.1k
第3回しろおびセキュリティスポンサーセッション
log0417
0
160
바이브풀 라이프
arawn
0
100
Redmine 7.0 新機能・機能強化解説(OSC2026京都ダイジェスト版)
vividtone
1
210
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.9k
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
Become a Pro
speakerdeck
PRO
31
6.2k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
460
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Designing Powerful Visuals for Engaging Learning
tmiket
1
480
RailsConf 2023
tenderlove
30
1.5k
The agentic SEO stack - context over prompts
schlessera
0
860
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
760
Everyday Curiosity
cassininazir
0
270
The Art of Programming - Codeland 2020
erikaheidi
57
14k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
420
Transcript
Realm meetup #20
[email protected]
#realm_jp
[email protected]
Makoto Yamazaki Realm Inc. / uPhyca Inc.
[email protected]
Recent Updates
[email protected]
Realm Java 2.2.1 (was 2.0.0)
[email protected]
Realm Java 2.0.0 • Realm Mobile PlatformରԠʂʂʂʢϕʔλʣ • άϩʔόϧॳظԽϝιουRealm.init(Context)Λಋೖ •
ॳظԽϝιουҎ֎ͰContext͕ෆཁʹ • RealmLogΫϥεʹΑΔϩά੍ޚ • ϞσϧΫϥεͰΦϒδΣΫτͷॳظΛఆٛՄೳʹ • isManaged()ϝιουΛՃ
[email protected]
Realm Mobile PlatformରԠ
[email protected]
realm { syncEnabled = true }
appͷbuild.gradeʹ ৄࡉ bit.ly/RMP_JAVA
Realm Java 2.0.1-2.0.2 • syncEnabled falseͷࡍʹෆཁͳINTERNETύʔϛογϣϯΛཁٻ͢Δ όά (#3505) • syncEnabled
falseͷࡍʹωοτϫʔΫͷଓঢ়ଶ͕มΘΔͱΫϥο γϡ͢Δόά (#3505) • distinctAsync͕ɺࢦఆ͞ΕͨΫΤϦͷ݅Λແࢹ͢Δόά (#3537) • ಛఆͷڥͰϏϧυ࣌ʹConcurrentModificationException͕ൃੜ͢Δ όά(#3501) • Java7ڥͰϏϧυΤϥʔ͕ൃੜ͢Δόά (#3563)
[email protected]
Realm Java 2.1, 2.2(৽ػೳ) • Sync APIมߋʢϕʔλʣ • Realm.compactRealm()͕҉߸Խ͞ΕͨϑΝΠϧΛαϙʔτ •
RealmListɺRealmResultsʹfirst(E defaultValue), last(E defaultValue) • RealmLog.setLevel(int)ʹΑΔϩάϨϕϧࢦఆΛαϙʔτ • annotationProcessor dependency configurationͷαϙʔτ
[email protected]
Realm Java 2.1.0-2.1.2(όάमਖ਼) • ProGuardઃఆϑΝΠϧ͕sync APIʹରԠ(#3596) • ֎෦ετϨʔδʹσʔλϕʔεϑΝΠϧΛஔ͘ͱPermissionΤϥʔʹ ͳΔόάΛमਖ਼(#3140ɺچͰҰ෦ະमਖ਼) •
ObservableΛunsubscribeͨ͠ࡍͷϝϞϦʔϦʔΫ(#3552) • #3596Ͱͷमਖ਼ͰɺಡԽ͕͓͜ͳΘΕͳ͘ͳΔόάͷमਖ਼(#3689) • Realm.insert͕ελοΫΦʔόʔϑϩʔ͢Δόά(#3732)
[email protected]
Realm Java 2.2.0-2.2.1(όάमਖ਼) • KotlinͰϞσϧΫϥε͕ଘࡏ͠ͳ͍߹ʹΤϥʔʹͳΔόά(#3746) • 2.1ͰͷProGuardઃఆ͕built-in shrinkerͰΤϥʔʹͳΔ(#3714) • Realmߋ৽ޙʹωΠςΟϒϥΠϒϥϦͷϩʔυ͕ΤϥʔʹͳΔ(#3775)
• શRealmΫϩʔζޙʹRealm.getLocalinstanceCount()ͰNPE(#3791)
[email protected]
annotationProcessor
[email protected]
android-aptϓϥάΠϯ͕ඞཁͳ߹໌ࣔతʹapply͍ͯͩ͘͠͞ ద༻͢Δ߹RealmͷϓϥάΠϯΑΓલͰʂ
annotationProcessor
[email protected]
https://developer.android.com/studio/releases/gradle-plugin.html
annotationProcessor
[email protected]
from https://github.com/realm/realm-java/pull/3754 android-aptϓϥάΠϯ͕طʹద༻͞Ε͍ͯΔ߹ apt Λɺະద༻ͷ߹Լهͷදʹै͍·͢ɻ
annotationProcessor
[email protected]
android-aptϓϥάΠϯ͕ඞཁͳ߹໌ࣔతʹapply͍ͯͩ͘͠͞ ద༻͢Δ߹RealmͷϓϥάΠϯΑΓલͰʂ
Object Server APIมߋ • Ϋϥε໊มߋ(User-> SyncUser, Credentials->SyncCredentials, Session->SyncSession) • SyncManager.setLogLevel()Λഇࢭ(RealmLog.setLevel()ͷ౷߹)
• SyncUser.all()ͷՃ • SyncUser.getManagementRealm()ͱPermission APIͷՃ
[email protected]
Permission API
[email protected]
public class PermissionChange extends RealmObject { @PrimaryKey
@Required private String id = UUID.randomUUID().toString(); @Required private Date createdAt = new Date(); @Required private Date updatedAt = new Date(); @Required private String realmUrl; @Required private String userId; private Boolean mayRead = false; private Boolean mayWrite = false; private Boolean mayManage = false; private Integer statusCode = null; // null=not processed, 0=success, >0=error private String statusMessage; }
Permission API
[email protected]
SyncUser user = ...; String realmUrl =
"realms://..."; final Realm managementRealm = user.getManagementRealm(); try { final PermissionChange permissionChange = new PermissionChange( realmUrl, "*", // for all users true, // read false, // write false // manage ); managementRealm.insert(permissionChange); } finally { managementRealm.close(); }
Permission API
[email protected]
private PermissionChange permissionChange; permissionChange = managementRealm.copyToRealm(new PermissionChange(
realmUrl, “*”/* or someUser.getIdentity() */, // for all users true, // read false, // write null // manage )); permissionChange.addChangeListener(new RealmChangeListener<PermissionChange>() { @Override public void onChange(PermissionChange element) { Log.d("realm", "permission changed: " + element.getStatusCode()); } });
ΞϯέʔτͷճΛ͓ئ͍͠·͢
[email protected]
http://bit.ly/RealmJP_20