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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
zaki50
November 25, 2016
Technology
320
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
570
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
最適な自走を最小限の支援で — M&Aで拡大する組織で少人数SREが挑んだ1年 / SRE NEXT 2026
genda
0
1.5k
AIが実装を自走する時代の認知負債との戦い
lycorptech_jp
PRO
0
160
AICoEでAIネイティブ組織への進化
yukiogawa
0
190
kintone の AI コワーカーを、 Anthropic にエージェントを"ホストさせて"作った話 #devkinmeetup
sugimomoto
0
110
SRE本の知られざる名シーン / The Hidden Gems of Google SRE Book
nari_ex
1
420
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
260
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
1
220
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
2
550
マルチアカウント環境でSecurity Hubの運用、その後どうなった? / SRE NEXT 2026 miniLT会
genda
0
100
AI Driven AI Governance
pict3
0
480
「AIに依存している」と 「AIを使いこなしている」の違い
k8yasuma
0
110
シンガポールで登壇してきます
yama3133
0
240
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
190
Measuring & Analyzing Core Web Vitals
bluesmoon
9
880
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.4k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
220
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
220
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
460
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
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