なぜ変更を検知できるDBが必要なのか

 なぜ変更を検知できるDBが必要なのか

第4回スタートアップAndroid勉強会 - スタートアップにおけるアーキテクチャとの向き合い方 -の発表資料

231ca3ad65e9b2ef1172e06ff0e9612c?s=128

Shun Hosaka

July 14, 2017
Tweet

Transcript

  1. ͳͥมߋΛݕ஌Ͱ͖ΔDB ͕ඞཁͳͷ͔

  2. ؆୯ͳࣗݾ঺հ • อࡔ ॣ • ৽ଔҰ೥໨ • ݸਓࣄۀओ • Twitter:

    @Reyurnible • https://github.com/Reyurnible
  3. ࠓ೔͸ɺDBΛ࢖ͬͯΞϓϦ಺ͷΠϕϯ τ΍ΩϟογϡΛྑ͘͢Δ͔΋͠Εͳ ͍࿩

  4. ͦ΋ͦ΋ɺσʔλϕʔε࢖͍ͬͯ·͢ ͔ʁ

  5. ελʔτΞοϓͱσʔλϕʔε • ࣮૷ίετ͕ߴ͍ • ϚΠάϨʔγϣϯͱ͔΍΍͍͜͠ • APTͰམͪͨΓΑ͘Θ͔Βͳ͍ΤϥʔʹҾ͔͔ͬΓ͕ͪ • εϨουͷ੍໿ͳͲɺAPIҎ্ʹ໘౗ •

    ϥΠϒϥϦଟͯ͘ͲΕ͕͍͍ͷ͔Θ͔Βͳ͍ -> ͋·Γ࣮૷ͨ͘͠ͳ͍
  6. σʔλϕʔεΛ࣮૷͠ͳͯ͘͸͍͚ͳ͍έʔε • ϩʔΧϧͰ࣋ͬͯஔ͔ͳ͚Ε͹͍͔Ͷ͍৘ใ͕͋Δ • ͦ΋ͦ΋αʔόʔ͕ͳ͍ɺAPI͕ͳ͍

  7. ࠓ೔σʔλϕʔεͰ΍Γ͍ͨ͜ͱ • ը໘ؒͷσʔλอ࣋ • ը໘ؒͷΠϕϯτॲཧ • ը໘෮ؼ࣌ͷσʔλॲཧ • σʔλͷΩϟογϡ ->

    Ͳ͏͍ͯ͠·͔͢ʁ
  8. ελʔτΞοϓͩͱ • σβΠϯͰղܾ • ը໘දࣔ͝ͱʹߋ৽ • αϙʔτ͠ͳ͍ -> ࣮૷͠ͳ͍͍ͯ͘ͷ͕Ұ൪͍͍

  9. ͪΌΜͱαϙʔτΛ͠ͳ͍ͱ͍͚ͳ͘ ͳͬͨ࣌ͷ࿩

  10. ͦ΋ͦ΋DBͰͲ͏ղܾ͢Δͷ͔

  11. σʔλϕʔεͰ΍Γ͍ͨ͜ͱ • ΞϓϦͷΩϟογϡ • ຖىಈ͝ͱͷηογϣϯ৘ใͷ؅ཧ • ΠϕϯτPubSubతͳ΍ͭ

  12. DBܥϥΠϒϥϦͷτϨϯυ

  13. ੲ͔Β͋ΔORMϥΠϒϥϦ • SQLite • ActiveAndroid • GreanDAO

  14. ࠷ۙͷORMϥΠϒϥϦ΍DB • Room • Realm • Requery • SQL Brite

  15. google / Room • Room provides an abstraction layer over

    SQLite to allow fluent database access while harnessing the full power of SQLite • https://developer.android.com/topic/libraries/architecture/ room.html • RxJavaରԠ • LiveDataରԠ
  16. square / SQL Brite • A lightweight wrapper around SQLiteOpenHelper

    which introduces reactive stream semantics to SQL operations. • ⭐ 4100 • https://github.com/square/sqlbrite • RxJavaରԠ
  17. realm / Realm • mobile database: a replacement for SQLite

    & ORMs • ⭐ 8000 • https://github.com/realm/realm-java • RxJavaରԠ
  18. requery / requery • modern SQL based query & persistence

    for Java / Kotlin / Android • ⭐ 2000 • https://github.com/requery/requery • RxJavaରԠ
  19. ײ͍ͯ͡ΔτϨϯυ • RxJavaରԠ • ςʔϒϧͷมߋͷݕ஌ • KotlinରԠ

  20. ςʔϒϧͷมߋΛݕ஌Ͱ͖ΔDBͱ͸ • INSERT, UPDATE, DELETEͳͲɺσʔλϕʔεʹมߋ͕͋ͬ ͨࡍʹΠϕϯτ௨஌Λͯ͘͠ΕΔ͜ͱ • RxJavaʹରԠ͍ͯ͠Δ͔͕1ͭͷ伴 -> ͜ΕΛઃܭʹ૊ΈࠐΉͱͲ͏ͳΔ͔ɻ

  21. None
  22. None
  23. ίετΛͲ͏཈͑Δ͔ • LocalSourceͱɺContentProviderΛΦϯϝϞϦͰ࣮૷͓ͯ͠ ͘ • ୯७ͳBehaviroSubject΍LiveDataͳͲ • ͦͷޙɺ༨༟͕Ͱ͖ͨλΠϛϯάͰஔ͖׵͑Λߦ͏ • ΞϓϦىಈ࣌ʹςʔϒϧͷ಺༰Λɺશͯഁغ͢Δ

    • API͕͋Γɺηογϣϯ಺ͷ৘ใ͚ͩͰ͍͍৔߹
  24. ·ͱΊΔͱ • ࠷ۙͷDB͸ɺσʔλͷมߋΛݕ஌Ͱ͖Δ • DBͷ࣮૷͕ਏ͍৔߹͸ɺΦϯϝϞϦʔͰ΋͍͍ • Ͱ΋ɺσʔλͷϑϩʔΛม͑ΒΕΔ༨஍Λ࢒͓ͯ͘͠

  25. ؔ࿈ϦϯΫ • googlesamples/android-architecture • RxJava + FluxʹΑΔAndroidΞϓϦઃܭ • SQLBrite͕ςʔϒϧมߋΛ௨஌͢Δ࢓૊Έ