Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DroidKaigiカンファレンスアプリの歴史からみるアプリアーキテクチャのこれまでとこれから

 DroidKaigiカンファレンスアプリの歴史からみるアプリアーキテクチャのこれまでとこれから

DroidKaigi2021 Day2 発表資料です。
DroidKaigi2015から2021までのカンファレンスアプリを主にアーキテクチャの点から比較し、どのような技術に置き換わっていったのか・未来のアプリ開発のデファクトスタンダードはどうなるのかを知ることができます。

https://droidkaigi.jp/2021/timetable/?day=2

Kazuki Chigita

October 20, 2021
Tweet

More Decks by Kazuki Chigita

Other Decks in Technology

Transcript

  1. %SPJE,BJHJΧϯϑΝϨϯεΞϓϦͷ
    ྺ࢙͔ΒΈΔ
    ΞϓϦΞʔΩςΫνϟͷ
    ͜Ε·Ͱͱ͜Ε͔Β
    ,B[VLJ$IJHJUB DIJHJDIBO

    "The Android robot is reproduced or modified from work created and shared by Google and
    used according to terms described in the Creative Commons 3.0 Attribution License."
    DroidKaigi2021

    View full-size slide

  2. Speaker
    ,B[VLJ$IJHJUB chigichan24

    "OESPJEBQQMJDBUJPOEFWFMPQFS
    *OUFSFTUFE
    "QQMJDBUJPO"SDIJUFDUVSF 4ZTUFN%FTJHO
    %JTUSJCVUFE4ZTUFN
    1BTU UBMLPO%SPJE,BJHJ
    ܧଓతʹػೳ։ൃΛਐΊͳ͕Βߦ͏ϚϧνϞδϡʔϧԽ
    %SPJE,BJHJ
    ”Twemoji” ©Twitter, Inc and other contributors (Licensed under CC-BY 4.0) https://twemoji.twitter.com/

    View full-size slide

  3. Break the Ice
    2%SPJE,BJHJΧϯϑΝϨϯεΞϓϦ͕͋Δͷ஌ͬͯ·͔ͨ͠ʁ
    ͦΜͳ΋ͷ͕͋ͬͨͷ͔ʂ
    ࠓ͸͡Ίͯ஌Γ·ͨ͠
    ΋ͪΖΜ஌ͬͯΔΑ
    Πϯετʔϧͯ͠ΔΑ
    ίϯτϦϏϡʔτͯ͠ΔΑ
    ࢲ͕99ը໘ͷ࡞ऀͰ͢
    ഑৴αΠτ΍5XJUUFSͰίϝϯτͯ͠Ͷʙ
    ”Twemoji” ©Twitter, Inc and other contributors (Licensed under CC-BY 4.0) https://twemoji.twitter.com/

    View full-size slide

  4. ࣌఺ͷεΫϦʔϯγϣοτɾಈըͰ͢

    View full-size slide

  5. Androiod iOS
    ࣌఺ͷεΫϦʔϯγϣοτͰ͢

    View full-size slide

  6. എܠͱൃදͰ
    ໨ࢦ͢ΰʔϧ
    ֤೥ͷ
    ηογϣϯ
    ৘ใऔಘը໘
    ࣮૷
    ೥ͷ
    %,BJHJΞϓϦ
    ͔Βඥղ͘
    ະདྷͷ
    σϑΝΫτ
    Section 1 Section 2 Section 3
    Agenda

    View full-size slide

  7. എܠͱൃදͰ
    ໨ࢦ͢ΰʔϧ
    ֤೥ͷ
    ηογϣϯ
    ৘ใऔಘը໘
    ࣮૷
    ೥ͷ
    %,BJHJΞϓϦ
    ͔Βඥղ͘
    ະདྷͷ
    σϑΝΫτ
    Section 1 Section 2 Section 3
    Agenda

    View full-size slide

  8. (Section1)
    Background and
    purpose of this
    presentation
    ͜ͷηΫγϣϯͷ໨త
    ϓϨθϯશମͷഎܠɾ໨తɾ
    ΰʔϧΛڞ༗͢Δɻ
    ͜Μͳʹ΋มԽ͍ͯ͠Δͷ͔ʂͷ
    ڻ͖Λڞ༗͢Δɻ

    View full-size slide

  9. (Section1) Background & Goal
    2021
    2015

    View full-size slide

  10. (Section1) Background & Goal
    2016 2021
    VS

    View full-size slide

  11. 2016 2021
    In Google I/O 2017, the Android team announced
    first-class support for Kotlin.
    Main Language JAVA Kotlin
    Supported
    Platform
    Android
    Android
    iOS
    web
    Main Libraries
    Jetpack Compose
    rxjava1
    Android-Orma
    Dagger2
    Kotlin Coroutines & Flows
    Hilt

    View full-size slide

  12. 2016 2021
    In Google I/O 2017, the Android team announced
    first-class support for Kotlin.
    Main Language JAVA Kotlin
    Supported
    Platform
    Android
    Android
    iOS
    web
    Main Libraries
    Jetpack Compose
    rxjava1
    Android-Orma
    Dagger2
    Kotlin Coroutines & Flows
    Hilt
    ΊͪΌͪ͘Ό
    มԽ͍ͯ͠Δ

    View full-size slide

  13. (Section1) Background & Goal
    ΧϯϑΝϨϯεΞϓϦͷྺ࢙Λඥղ͍ͯ೔ʑͷ։ൃͷώϯτʹ͠Α͏
    ະདྷͷ"OESPJEΞϓϦ։ൃͷσϑΝΫτΛײ͡Α͏

    View full-size slide

  14. (Section1) Background & Goal
    ΧϯϑΝϨϯεΞϓϦͷྺ࢙Λඥղ͍ͯ೔ʑͷ։ൃͷώϯτʹ͠Α͏
    ະདྷͷ"OESPJEΞϓϦ։ൃͷσϑΝΫτΛײ͡Α͏
    ࣌୅͕มԽ͢Δத
    ࣮૷ͷτϨϯυ
    ϥΠϒϥϦ
    ΞʔΩςΫνϟ͸
    Ͳ͏มΘͬͨͷ͔Λ஌Δ

    View full-size slide

  15. (Section1) Background & Goal
    ΧϯϑΝϨϯεΞϓϦͷྺ࢙Λඥղ͍ͯ೔ʑͷ։ൃͷώϯτʹ͠Α͏
    ະདྷͷ"OESPJEΞϓϦ։ൃͷσϑΝΫτΛײ͡Α͏
    ࣌୅͕มԽ͢Δத
    ࣮૷ͷτϨϯυ
    ϥΠϒϥϦ
    ΞʔΩςΫνϟ͸
    Ͳ͏มΘͬͨͷ͔Λ஌Δ
    ௕ظؒϝϯς͞Ε͍ͯΔ
    ػೳͷ࣮૷ஔ͖׵͑
    ϦϑΝΫλϦϯά
    ͷ
    ಓඪΛ୳Δ

    View full-size slide

  16. (Section1) Background & Goal
    ΧϯϑΝϨϯεΞϓϦͷྺ࢙Λඥղ͍ͯ೔ʑͷ։ൃͷώϯτʹ͠Α͏
    ະདྷͷ"OESPJEΞϓϦ։ൃͷσϑΝΫτΛײ͡Α͏
    ࣌୅͕มԽ͢Δத
    ࣮૷ͷτϨϯυ
    ϥΠϒϥϦ
    ΞʔΩςΫνϟ͸
    Ͳ͏มΘͬͨͷ͔Λ஌Δ
    ௕ظؒϝϯς͞Ε͍ͯΔ
    ػೳͷ࣮૷ஔ͖׵͑
    ϦϑΝΫλϦϯά
    ͷ
    ಓඪΛ୳Δ
    ະདྷͷ
    "OESPJEΞϓϦ։ൃʹ
    ඞཁʹͳΔ஌ࣝ
    ΞʔΩςΫνϟΛ
    ײ͡Δ

    View full-size slide

  17. എܠͱൃදͰ
    ໨ࢦ͢ΰʔϧ
    ֤೥ͷ
    ηογϣϯ
    ৘ใऔಘը໘
    ࣮૷
    ೥ͷ
    %,BJHJΞϓϦ
    ͔Βඥղ͘
    ະདྷͷ
    σϑΝΫτ
    Section 1 Section 2 Section 3
    Agenda

    View full-size slide

  18. എܠͱൃදͰ
    ໨ࢦ͢ΰʔϧ
    ֤೥ͷ
    ηογϣϯ
    ৘ใऔಘը໘
    ࣮૷
    ೥ͷ
    %,BJHJΞϓϦ
    ͔Βඥղ͘
    ະདྷͷ
    σϑΝΫτ
    Section 1 Section 2 Section 3
    Agenda

    View full-size slide

  19. (Section2)
    Implementation
    difference of each
    years
    ͜ͷηΫγϣϯͷ໨త
    ֤೥ͷ࣮૷Λ؆୯ʹཧղ͠ɺ
    ࠩ෼Λ஌Δɻ
    ͜Μͳʹ΋มԽ͍ͯ͠Δͷ͔ʂͷ
    ڻ͖Λڞ༗͢Δɻ

    View full-size slide

  20. (Section2) Implementation Diff
    ҎԼͷ؍఺͔Β֤೥ͷηογϣϯৄࡉϖʔδͷ࣮૷Λൺֱͯ͠ΈΑ͏
    ओཁϥΠϒϥϦ
    ΞʔΩςΫνϟ
    ઃܭํ਑ͳͲ
    ࣌୅എܠ ֤छTUBUT

    View full-size slide

  21. TUBUT 1SJWBUF ਓ
    +BWB"OESPJEPOMZ
    ΞʔΩςΫνϟ .7$ͬΆ͍
    ࣌୅എܠ
    %SPJE,BJHJ͕Ͱ͖ͨ೥ɻ
    "OESPJEYܥ͕͡Θ͡Θͱਁಁ
    "35͕σϑΥϧτͷϥϯλΠϜʹɻ
    ϚςϦΞϧσβΠϯͷొ৔ɻ
    ओͳϥΠϒϥϦ
    4VQQPSUMJCSBSZ
    'SBHNFOU
    "DUJWJUZ
    QSJWBUFͳͷͰϥΠϒϥϦৄࡉ͸Θ͔Γ·ͤΜ

    2015
    !NIJEBLB͞Μ͔Βͷ఻ঝʹΑͬͯ͜ͷ೥ͷࢿྉΛ࡞੒Ͱ͖·ͨ͠ɻେײँ🙇🙇

    View full-size slide

  22. 2015
    ύοέʔδ͸ػೳɾը໘͝ͱͱ͍͏ΑΓ΋ɺ
    ໾ׂʹؔ͢ΔϨΠϠ͝ͱ
    "DUJWJUZ'SBHNFOU΋ඇৗʹ؆ܿ

    View full-size slide

  23. 2015
    ύοέʔδ͸ػೳɾը໘͝ͱͱ͍͏ΑΓ΋ɺ
    ໾ׂʹؔ͢ΔϨΠϠ͝ͱ
    "DUJWJUZ'SBHNFOU΋ඇৗʹ؆ܿ
    γϯϓϧͳ6*ͱͦΕΛ࣮ݱ͢Δ
    γϯϓϧͳΞʔΩςΫνϟ

    View full-size slide

  24. 2016
    TUBUT 044 ਓ
    +BWB"OESPJEPOMZ
    ΞʔΩςΫνϟ .7$
    ࣌୅എܠ
    (PPHMF*0Ͱ%BUB#JOEJOH͕ൃදɻ
    "OESPJEYܥͷ࣌୅
    ύʔϛογϣϯपΓ͕Ξοϓσʔτ
    %P[FϞʔυͷొ৔
    ओͳϥΠϒϥϦ
    3Y+BWB
    %BHHFS
    "OESPJE0SNB
    0L)UUQ
    3FUSPGJU
    4UFUIP
    %BUB#JOEJOH

    View full-size slide

  25. 2016
    Activity
    Fragment
    xml
    DAO
    Model
    ActivityNavigator
    DataBinding
    Orma
    API
    Retrofit + OkHttp
    Observable(RxJava1)
    Call
    startActivityॲཧΛ୲͏
    callback
    Call

    View full-size slide

  26. 2016
    Activity
    Fragment
    xml
    DAO
    Model
    ActivityNavigator
    DataBinding
    Orma
    API
    Retrofit + OkHttp
    Observable(RxJava1)
    Call
    startActivityॲཧΛ୲͏
    callback
    Call
    Model
    View
    Controller

    View full-size slide

  27. 2016
    Activity
    Fragment
    xml
    DAO
    Model
    ActivityNavigator
    DataBinding
    Orma
    API
    Retrofit + OkHttp
    Observable(RxJava1)
    Call
    startActivityॲཧΛ୲͏
    callback
    Call
    Model
    View
    Controller
    ංେԽ
    ෳࡶԽ

    View full-size slide

  28. 2016
    Dagger2ʹΑΔInjectionͷ༷ࢠ

    View full-size slide

  29. 2016
    Dagger2ʹΑΔInjectionͷ༷ࢠ
    ΞʔΩςΫνϟʹΑΔ໾ׂ෼ׂ
    $POUSPMMFSɾ.PEFMͷංେԽ

    View full-size slide

  30. 2017
    TUBUT 044 ਓ
    +BWB,PUMJO "OESPJEPOMZ
    ΞʔΩςΫνϟ .77. 3FQPTJUPSZQBUUFSO
    ࣌୅എܠ
    ,PUMJO͕GJSTUTVQQPSUMBOHVBHFͱൃදɻ
    "OESPJEYܥͷ࣌୅
    NVMUJXJOEPXNPEFͷొ৔
    ओͳϥΠϒϥϦ
    3Y+BWB
    %BHHFS
    "OESPJE0SNB
    0L)UUQ
    3FUSPGJU
    4UFUIP
    %BUB#JOEJOH
    1FSNJTTJPO%JTQBUDIFS

    View full-size slide

  31. 2017
    Model
    Single/Maybe/Completable
    (RxJava2)
    Activity
    Fragment
    xml
    DataBinding
    LocalDataSource
    Orma
    RemoteDataSource
    Retrofit + OkHttp
    Repository
    ViewModel
    call
    call
    call

    View full-size slide

  32. 2017
    Model
    Single/Maybe/Completable
    (RxJava2)
    Activity
    Fragment
    xml
    DataBinding
    LocalDataSource
    Orma
    RemoteDataSource
    Retrofit + OkHttp
    Repository
    ViewModel
    call
    call
    call
    Model
    View
    ViewModel
    Repository

    View full-size slide

  33. 2017
    Model
    Single/Maybe/Completable
    (RxJava2)
    Activity
    Fragment
    xml
    DataBinding
    LocalDataSource
    Orma
    RemoteDataSource
    Retrofit + OkHttp
    Repository
    ViewModel
    call
    call
    call
    Model
    View
    ViewModel
    Repository
    ੍ޚ೉

    View full-size slide

  34. 2017
    खಈͰ։์͠ͳ͍ͱԿ͕ى͖Δ͔Θ͔Βͳ͍
    Jetpack (AAC) ViewModel ͕·ͩଘࡏ͠ͳ͍

    View full-size slide

  35. "OESPJEΞϓϦઃܭύλʔϯೖ໳
    ୈষʮ044ʹ͓͚Δઃܭऀͷ໾ׂʯ
    ʢখ੢༟հ!LPOJGBSʣ
    2017
    ͋ΘͤͯಡΈ͍ͨ

    View full-size slide

  36. "OESPJEΞϓϦઃܭύλʔϯೖ໳
    ୈষʮ044ʹ͓͚Δઃܭऀͷ໾ׂʯ
    ʢখ੢༟հ!LPOJGBSʣ
    2017
    ͋ΘͤͯಡΈ͍ͨ
    .77.ʹΑΔΞϓϩʔν
    ϥΠϑαΠΫϧϋϯυϧͷ೉͠͞

    View full-size slide

  37. 2018
    TUBUT 044 ਓ
    ,PUMJO"OESPJEPOMZ
    ΞʔΩςΫνϟ .77. 3FQPTJUPSZQBUUFSO
    ࣌୅എܠ
    "OESPJEYܥͷ࣌୅
    QJDUVSFJOQJDUVSFͷαϙʔτ
    'MVUUFS౳ʹΑΔϚϧνϓϥοτϑΥʔϜ
    ओͳϥΠϒϥϦ
    3Y+BWB
    %BHHFS
    3PPN
    0L)UUQ
    3FUSPGJU
    (SPVQJF
    %BUB#JOEJOH
    "OESPJE ,59

    View full-size slide

  38. 2018
    Model
    Single/Maybe/Completable/Flowable
    (RxJava2)
    Activity
    Fragment
    xml
    DataBinding
    Database
    Room
    API
    Retrofit + OkHttp
    Repository
    ViewModel
    call
    call
    call
    LiveData

    View full-size slide

  39. 2018
    Model
    Single/Maybe/Completable/Flowable
    (RxJava2)
    Activity
    Fragment
    xml
    DataBinding
    Database
    Room
    API
    Retrofit + OkHttp
    Repository
    ViewModel
    call
    call
    call
    LiveData
    data
    View
    ViewModel
    Repository

    View full-size slide

  40. 2018
    Model
    Single/Maybe/Completable/Flowable
    (RxJava2)
    Activity
    Fragment
    xml
    DataBinding
    Database
    Room
    API
    Retrofit + OkHttp
    Repository
    ViewModel
    call
    call
    call
    LiveData
    data
    View
    ViewModel
    Repository
    ,PUMJOʹΑΔදݱͷγϯϓϧԽ
    ""$ͷ୆಄
    7JFX.PEFMͷංେԽɾ
    7JFXͷෳࡶԽ

    View full-size slide

  41. 2019
    TUBUT 044 ਓ
    ,PUMJOɾ4XJGU"OESPJEɾJ04
    ΞʔΩςΫνϟ 'MVY3FQPTJUPSZ.VMUJ.PEVMF
    ࣌୅എܠ
    ,PUMJO$PSPVUJOFT͕੮ר
    "OESPJEYܥͷ࣌୅
    ϊονελΠϧͷσΟεϓϨΠ
    ओͳϥΠϒϥϦ
    %BHHFS
    ,PUMJO$PSPVUJOFT
    ,UPS
    0L)UUQ
    4UFUIP
    (SPVQJF
    %BUB#JOEJOH
    1JDBTP

    View full-size slide

  42. 2019
    Dispatcher
    Database
    Room
    API
    Ktor-client
    ActionCreator
    xml
    Store
    Fragment
    Repository
    suspend call
    DataBinding
    BroadcastChannel
    suspend call suspend call
    suspend call
    LiveData
    call

    View full-size slide

  43. Dispatcher
    Database
    Room
    API
    Ktor-client
    ActionCreator
    xml
    Store
    Fragment
    Repository
    suspend call
    DataBinding
    BroadcastChannel
    suspend call suspend call
    suspend call
    LiveData
    Flux
    call
    data
    Repository
    2019

    View full-size slide

  44. 'MVYʹΑΔ7JFX؅ཧͷ৽͍͠
    Ξϓϩʔν
    ϞδϡʔϧԽʹΑΔ໾ׂɾ
    ґଘؔ܎ͷ໌֬Խ

    View full-size slide

  45. 2020
    TUBUT 044 ਓ
    ,PUMJOɾ4XJGU"OESPJEɾJ04
    ΞʔΩςΫνϟ .77.3FQPTJUPSZ.VMUJ.PEVMF
    ࣌୅എܠ
    +FUQBDL$PNQPTFBMQIBͰ੝Γ্͕Δɻ
    "OESPJEY Yܥͷ࣌୅
    δΣενϟφϏήʔγϣϯͷରԠ
    ओͳϥΠϒϥϦ
    %BHHFS
    ,PUMJO$PSPVUJOFT'MPXT
    ,UPS
    0L)UUQ
    4UFUIP
    (SPVQJF
    %BUB#JOEJOH
    $PJM

    View full-size slide

  46. 2020
    Model
    Coroutines Flow
    Activity
    Fragment
    xml
    DataBinding
    Database
    Room
    API
    Ktor-Client
    Repository
    ViewModel
    call
    Suspend call
    Suspend call
    LiveData

    View full-size slide

  47. 2020
    Model
    Coroutines Flow
    Activity
    Fragment
    xml
    DataBinding
    Database
    Room
    API
    Ktor-Client
    Repository
    ViewModel
    call
    Suspend call
    Suspend call
    LiveData
    data
    View
    ViewModel
    Repository

    View full-size slide

  48. "OESPJE%FWFMPQFSTʹهࡌ͞ΕΔ
    ਪ঑ΞʔΩςΫνϟ΁ͷ௥ै
    6J.PEFMΛ༻͍ͨ7JFX΁ͷ
    ঢ়ଶߋ৽ͷ໌֬Խ

    View full-size slide

  49. എܠͱൃදͰ
    ໨ࢦ͢ΰʔϧ
    ֤೥ͷ
    ηογϣϯ
    ৘ใऔಘը໘
    ࣮૷
    ೥ͷ
    %,BJHJΞϓϦ
    ͔Βඥղ͘
    ະདྷͷ
    σϑΝΫτ
    Section 1 Section 2 Section 3
    Agenda

    View full-size slide

  50. എܠͱൃදͰ
    ໨ࢦ͢ΰʔϧ
    ֤೥ͷ
    ηογϣϯ
    ৘ใऔಘը໘
    ࣮૷
    ೥ͷ
    %,BJHJΞϓϦ
    ͔Βඥղ͘
    ະདྷͷ
    σϑΝΫτ
    Section 1 Section 2 Section 3
    Agenda

    View full-size slide

  51. (Section3) Learn future
    de facto for Android
    app development from
    conference app 2021.
    ͜ͷηΫγϣϯͷ໨త
    ະདྷͷΞʔΩςΫνϟσϑΝΫτΛ
    DPOGFSFODFBQQ͔Βײ͡Δ
    +FUQBDL$PNQPTFͱͷ޲͖߹͍ํɾ
    ϚϧνϓϥοτϑΥʔϜͰͷ
    ڞ௨Խʹ͍ͭͯߟ͑Δ

    View full-size slide

  52. 2021
    TUBUT 044 ਓ
    ,PUMJOɾ4XJGU"OESPJEɾJ04
    ΞʔΩςΫνϟ .77..7*.VMUJNPEVMF
    ࣌୅എܠ
    ,..ʹΑΔϚϧνϓϥοτϑΥʔϜ
    "OESPJEͷ࣌୅
    .BUFSJBM:PV
    ओͳϥΠϒϥϦ
    )JMU
    ,PUMJO$PSPVUJOFT'MPXT
    ,UPS
    %BUB4UPSF
    +FUQBDL$PNQPTF

    View full-size slide

  53. 2021
    $PNQPTFͷར༻ʹΑΔ
    6*هड़ෳࡶԽ΁ͷ௅ઓ
    ,..ʹΑΔ"OESPJEɾJ04
    ϩδοΫڞ௨Խ

    View full-size slide

  54. 2021
    Model
    Coroutines Flow
    Activity
    Fragment
    Jetpack Compose
    Database
    DataStore
    API
    Ktor-Client
    Repository
    ViewModel
    call
    Suspend call
    Suspend call
    flow

    View full-size slide

  55. 2021
    Model
    Coroutines Flow
    Activity
    Fragment
    Jetpack Compose
    Database API
    Ktor-Client
    Repository
    ViewModel
    call
    Suspend call
    Suspend call
    flow
    View
    DataStore

    View full-size slide

  56. 2021
    ViewModel Screen(Statefull)
    Screen(Steteless)
    Screen
    Data
    Data
    Event
    Event
    Event
    State
    Effect

    View full-size slide

  57. 2021
    Model
    Coroutines Flow
    Activity
    Fragment
    Jetpack Compose
    Database
    DataStore
    API
    Ktor-Client
    Repository
    ViewModel
    call
    Suspend call
    Suspend call
    flow

    View full-size slide

  58. 2021
    Model
    Coroutines Flow
    Activity
    Fragment
    Jetpack Compose
    Database API
    Ktor-Client
    Repository
    ViewModel
    call
    Suspend call
    Suspend call
    flow
    Data (Android/iOS)
    DataStore

    View full-size slide

  59. 2021
    Data
    Compose
    Android iOS
    ViewModel
    Wrapper
    SwiftUI
    call
    flow
    call
    flow
    ͲͪΒͷϓϥοτϑΥʔϜͰ΋ಈ͘Α͏ͳٕज़બఆ

    View full-size slide

  60. Conclusion
    2021
    2015
    Dagger2 Hilt
    xml Compose
    rxjava1 rxjava2 coroutines
    orma room DataStore
    Picasso Glide Coil

    View full-size slide

  61. ΧϯϑΝϨϯεΞϓϦͷྺ࢙Λඥղ͍ͯ೔ʑͷ։ൃͷώϯτʹ͠Α͏
    7JFXͷෳࡶੑʹཱͪ޲͔͏ͨΊʹ༷ʑͳΞϓϩʔν͕औΒΕ͖ͯͨ
    ϨΠϠؒΛͭͳ͙ TUSFBNͷϥΠϒϥϦ͸සൟʹมԽ͖ͯͨ͠
    Conclusion
    Կ͕Կʹஔ͖׵Θͬͨͷ͔Λ৻ॏʹோΊΔ͜ͱ͕େ੾

    View full-size slide

  62. ΧϯϑΝϨϯεΞϓϦͷྺ࢙Λඥղ͍ͯ೔ʑͷ։ൃͷώϯτʹ͠Α͏
    ະདྷͷ"OESPJEΞϓϦ։ൃͷσϑΝΫτΛײ͡Α͏
    7JFXͷෳࡶੑʹཱͪ޲͔͏ͨΊʹ༷ʑͳΞϓϩʔν͕औΒΕ͖ͯͨ
    ϨΠϠؒΛͭͳ͙ TUSFBNͷϥΠϒϥϦ͸සൟʹมԽ͖ͯͨ͠
    $PNQPTFʹΑΔ 6*࡞੒
    ,..ʹΑΔϩδοΫڞ௨Խ
    Conclusion
    Կ͕Կʹஔ͖׵Θͬͨͷ͔Λ৻ॏʹோΊΔ͜ͱ͕େ੾
    ՝୊΋·ͩ͋Δ

    View full-size slide

  63. Thank you
    ࣭໰͸ΦϑΟεΞϫʔʹ͓ͯئ͍͠·͢ʂ

    View full-size slide

  64. Bibliography

    View full-size slide

  65. [1] DroidKaigi, “DroidKaigi公式フィードアプリ” https://play.google.com/store/apps/details?id=io.github.droidkaigi.feeder
    [2] konifar, “DroidKaigi2016 Repository” https://github.com/konifar/droidkaigi2016
    [3] DroidKaigi, “DroidKaigi2017 Repository” https://github.com/DroidKaigi/conference-app-2017
    [4] DroidKaigi, “DroidKaigi2018 Repository” https://github.com/DroidKaigi/conference-app-2018
    [5] DroidKaigi, “DroidKaigi2019 Repository” https://github.com/DroidKaigi/conference-app-2019
    [6] DroidKaigi, “DroidKaigi2020 Repository” https://github.com/DroidKaigi/conference-app-2020
    [7] DroidKaigi, “DroidKaigi2021 Repository” https://github.com/DroidKaigi/conference-app-2021
    [8] ⽇⾼正博,⼩⻄裕介,藤原聖,吉岡毅,今井智章, “Androidアプリ設計パターン⼊⾨” https://peaks.cc/books/architecture_patterns
    [9] Johannes, “The good and bad of modern app architecture” https://droidkaigi.jp/2019/timetable/70668
    [10] mhidaka, “mhidakaさんのtweets” https://twitter.com/mhidaka/status/1441264050332061699
    [11] konifar, “DroidKaigi2018-flutter Repository” https://github.com/konifar/droidkaigi2018-flutter
    [12] chigichan24, “DroidKaigi2019のコードを読み解く” https://speakerdeck.com/chigichan24/read-droidkaigi2019-app-source-code
    [13] Aakira, “flux with kotlin” https://speakerdeck.com/aakira/flux-with-kotlin-abema-dev-con-2016
    [14] 釘宮慎之介,横幕圭真, “チームで育てるAndroidアプリ設計” https://peaks.cc/books/architecture_with_team
    [15] KenzoNirasawa, “iOSエンジニアがKMPで⼤規模アプリのロジック共通化をしてうまくできている話”
    https://speakerdeck.com/nirazo/iosdc2021
    [16] Wikipedia, “Android version history” https://en.wikipedia.org/wiki/Android_version_history
    [17] chigichan24, “継続的に機能開発を進めながら⾏うマルチモジュール化”
    https://speakerdeck.com/chigichan24/ji-sok-de-niji-neng-kai-fa-wojin-menagaraxing-umarutimoziyuruhua
    [18] Google Developers, “アプリアーキテクチャガイド” https://developer.android.com/jetpack/guide
    [19] Google Developers, “開発者基調講演 (Google I/O ’17)” https://www.youtube.com/watch?v=EtQ8Le8-zyo

    View full-size slide