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 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 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 Slide

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

    View Slide

  5. View Slide

  6. View Slide

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

    View Slide

  8. 2021
    2015

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. (Section1) Background & Goal
    2021
    2015

    View Slide

  13. (Section1) Background & Goal
    2016 2021
    VS

    View Slide

  14. 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 Slide

  15. 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  24. 2015

    View Slide

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

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

    View Slide

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

    View Slide

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

    View Slide

  28. 2016

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  33. 2016
    Dagger2ʹΑΔInjectionͷ༷ࢠ

    View Slide

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

    View Slide

  35. 2017

    View Slide

  36. 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 Slide

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

    View Slide

  38. 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 Slide

  39. 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 Slide

  40. 2017

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  44. 2018

    View Slide

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

    View Slide

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

    View Slide

  47. 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 Slide

  48. 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 Slide

  49. 2019

    View Slide

  50. 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 Slide

  51. 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 Slide

  52. 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 Slide

  53. View Slide

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

    View Slide

  55. 2020

    View Slide

  56. 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 Slide

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

    View Slide

  58. 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 Slide

  59. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  64. 2021

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  71. 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 Slide

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

    View Slide

  73. Conclusion

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  78. Bibliography

    View Slide

  79. [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 Slide