Slide 1

Slide 1 text

Realm meetup #20 [email protected]

Slide 2

Slide 2 text

#realm_jp [email protected]

Slide 3

Slide 3 text

Makoto Yamazaki Realm Inc. / uPhyca Inc. [email protected]

Slide 4

Slide 4 text

Recent Updates [email protected]

Slide 5

Slide 5 text

Realm Java 2.2.1 (was 2.0.0) [email protected]

Slide 6

Slide 6 text

Realm Java 2.0.0 • Realm Mobile PlatformରԠʂʂʂʢϕʔλʣ • άϩʔόϧॳظԽϝιουRealm.init(Context)Λಋೖ • ॳظԽϝιουҎ֎Ͱ͸Context͕ෆཁʹ • RealmLogΫϥεʹΑΔϩά੍ޚ • ϞσϧΫϥεͰΦϒδΣΫτͷॳظ஋ΛఆٛՄೳʹ • isManaged()ϝιουΛ௥Ճ [email protected]

Slide 7

Slide 7 text

Realm Mobile PlatformରԠ [email protected] realm { syncEnabled = true } appͷbuild.gradeʹ ৄࡉ͸ bit.ly/RMP_JAVA

Slide 8

Slide 8 text

Realm Java 2.0.1-2.0.2 • syncEnabled falseͷࡍʹෆཁͳINTERNETύʔϛογϣϯΛཁٻ͢Δ όά (#3505) • syncEnabled falseͷࡍʹωοτϫʔΫͷ઀ଓঢ়ଶ͕มΘΔͱΫϥο γϡ͢Δόά (#3505) • distinctAsync͕ɺࢦఆ͞ΕͨΫΤϦͷ৚݅Λແࢹ͢Δόά (#3537) • ಛఆͷ؀ڥͰϏϧυ࣌ʹConcurrentModificationException͕ൃੜ͢Δ όά(#3501) • Java7؀ڥͰϏϧυΤϥʔ͕ൃੜ͢Δόά (#3563) [email protected]

Slide 9

Slide 9 text

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]

Slide 10

Slide 10 text

Realm Java 2.1.0-2.1.2(όάमਖ਼) • ProGuardઃఆϑΝΠϧ͕sync APIʹରԠ(#3596) • ֎෦ετϨʔδʹσʔλϕʔεϑΝΠϧΛஔ͘ͱPermissionΤϥʔʹ ͳΔόάΛमਖ਼(#3140ɺچ୺຤Ͱ͸Ұ෦ະमਖ਼) • ObservableΛunsubscribeͨ͠ࡍͷϝϞϦʔϦʔΫ(#3552) • #3596Ͱͷमਖ਼Ͱɺ೉ಡԽ͕͓͜ͳΘΕͳ͘ͳΔόάͷमਖ਼(#3689) • Realm.insert͕ελοΫΦʔόʔϑϩʔ͢Δόά(#3732) [email protected]

Slide 11

Slide 11 text

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]

Slide 12

Slide 12 text

annotationProcessor [email protected] android-aptϓϥάΠϯ͕ඞཁͳ৔߹͸໌ࣔతʹapply͍ͯͩ͘͠͞ ద༻͢Δ৔߹͸RealmͷϓϥάΠϯΑΓ΋લͰʂ

Slide 13

Slide 13 text

annotationProcessor [email protected] https://developer.android.com/studio/releases/gradle-plugin.html

Slide 14

Slide 14 text

annotationProcessor [email protected] from https://github.com/realm/realm-java/pull/3754 android-aptϓϥάΠϯ͕طʹద༻͞Ε͍ͯΔ৔߹͸ apt Λɺະద༻ͷ৔߹͸Լهͷදʹै͍·͢ɻ

Slide 15

Slide 15 text

annotationProcessor [email protected] android-aptϓϥάΠϯ͕ඞཁͳ৔߹͸໌ࣔతʹapply͍ͯͩ͘͠͞ ద༻͢Δ৔߹͸RealmͷϓϥάΠϯΑΓ΋લͰʂ

Slide 16

Slide 16 text

Object Server APIมߋ • Ϋϥε໊มߋ(User-> SyncUser, Credentials->SyncCredentials, Session->SyncSession) • SyncManager.setLogLevel()Λഇࢭ(RealmLog.setLevel()΁ͷ౷߹) • SyncUser.all()ͷ௥Ճ • SyncUser.getManagementRealm()ͱPermission APIͷ௥Ճ [email protected]

Slide 17

Slide 17 text

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;
 }

Slide 18

Slide 18 text

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();
 }

Slide 19

Slide 19 text

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() {
 @Override
 public void onChange(PermissionChange element) {
 Log.d("realm", "permission changed: " + element.getStatusCode());
 }
 });

Slide 20

Slide 20 text

Ξϯέʔτͷճ౴Λ͓ئ͍͠·͢ [email protected] http://bit.ly/RealmJP_20