アプリ開発初心者が Androidアプリを作っている話

6e2c7867e96ea21953e6be4c6e1ee507?s=47 Yosuke Fujii
September 14, 2018
940

アプリ開発初心者が Androidアプリを作っている話

6e2c7867e96ea21953e6be4c6e1ee507?s=128

Yosuke Fujii

September 14, 2018
Tweet

Transcript

  1. ΞϓϦ։ൃॳ৺ऀ͕ AndroidΞϓϦͰ ԕִҩྍαʔϏεΛ࡞͍ͬͯΔ࿩ @syo_sa1982

  2. ໨࣍ • ࣗݾ঺հ • ։ൃதͷαʔϏε • ٕज़બఆ • Ͳ͏΍ͬͯ࡞͍ͬͯΔ͔ʁ •

    ࣮ࡍ։ൃͯ͠ΈͯͲ͏͔ͩͬͨʁ • ·ͱΊɾࠓޙͷ͜ͱ
  3. • ౻Ҫ ཅհ(@syo_sa1982) • ωΫετΠϊϕʔγϣϯגࣜձࣾॴଐ • Web։ൃྺ:໿10೥ • AndroidΞϓϦ։ൃྺ:໿3ϲ݄

  4. ։ൃதͷαʔϏε

  5. • αʔϏε໊: εϚ਍ • ωοτ਍࡯αʔϏε • 1.0͕ਖ਼ࣜՔಇத • ECدΓʹϦχϡʔΞϧͤͨ͞
 2.0Λ։ൃத

    • WebɾAndroid/iOSΞϓϦͰ
 ల։͢Δ༧ఆ
  6. Business Model γεςϜఏڙ ਍࡯૬౰අ༻ͷ ͓ࢧ෷͍ ױऀ ूۚ୅ߦ ωοτ਍࡯ ҩࢣ ࣬ױܒൃ

    ड਍ק঑ ڞ༗ిࢠΧϧς botܕ໰਍ શͯͷ࣬ױΛʮอݥ֎਍ྍʯʹͯߦ͍·͢ ʢྍཆ୲౰نଇʹҧ൓͠·ͤΜʣ
  7. ٕज़બఆ

  8. • Android/iOS྆ํ։ൃ͢ΔͷͰɺ
 ΫϩεϓϥοτϑΥʔϜͷ࠾༻͸
 બ୒ࢶʹ্͕͍ͬͯͨɻ • ݁࿦͔Βݴ͏ͱɺωΠςΟϒͰ
 Android/iOSͦΕͧΕ։ൃ͢Δ͜ͱʹ • ڍ͕͍ͬͯͨީิ͸ओʹ
 ReactNativeͱXamarin

  9. • ReactNative • ϝδϟʔϦϦʔε͞Εͯͳ͍ͷͰɺ
 ഁյతมߋͷϦεΫ͕ߴ͍ • ৘ใ͕গͳ͍ • ʮJSͰ࣮૷Ͱ͖Δ =

    Webͷ஌͚ࣝͩͰΞϓϦ͕࡞ΕΔʯ
 ͱ͍͏Θ͚Ͱ͸ͳ͍ • ݁ہAndroid/iOSͷ஌ࣝ͸ٻΊΒΕΔ • ௕ظతʹݟͯɺอकͷίετֻ͕͔Γͦ͏
  10. • Xamarin • υΩϡϝϯτ͕๛෋Ͱ։ൃ؀ڥ΋҆ఆ͍ͯ͠Δ • νϡʔτϦΞϧ৮ͬͨײ૝ɺ࣮૷͠΍͔ͬͨ͢ • ͕ɺXamarinܦݧऀ͕ࣾ಺ʹډͳ͍ͷͰɺ
 ͦͷ෼։ൃεϐʔυ͸མͪΔՄೳੑ͕ߴ͍

  11. • ωΠςΟϒ(Kotlin/Swift4) • ผʑʹ։ൃ͢ΔͷͰɺ
 ͲͪΒ͔ยํͷϦϦʔε͕ͣΕࠐΉՄೳੑ͸͋Δ • νʔϜʹΞϓϦΤϯδχΞ͕ډΔ • ࣮૷ίετ͸͔͔Δ͕ɺޙʑͷอक͸
 ԼखʹΫϩεϓϥοτϑΥʔϜͰ։ൃ͢ΔΑΓ΋


    ίετ͕গͳ͍ͱ൑அɻ
  12. Ͳ͏΍ͬͯ࡞͍ͬͯΔ͔ʁ

  13. None
  14. com.sumashin |-- [extension] ֦ு(Kotlin Extension & DataBinding BindingAdapter) |-- [helper]

    ϔϧύʔʢBroadcast & Push௨஌ etc...ʣ |-- [manager] ϚωʔδϟʔʢΞϓϦέʔγϣϯΫϥεͰอ࣋͢Δ؅ཧΫϥεʣ |-- RepositoryManager ΞϓϦέʔγϣϯΫϥεͰRepositoryΛ؅ཧ͢ΔಠࣗΫϥε |-- [model] Ϟσϧ |-- [api] API |-- [db] σʔλϕʔε & Ωϟογϡ |-- [entity] Modelຊମ |-- [repository] ϦϙδτϦʢAPI & DB ˍ ModelɹΛ౷ׅ͢Δʣ |-- [presenter] ϓϨθϯλʔ |-- [view] ϓϨθϯλʔ͔ΒView΁ΠϕϯτΛ௨஌͢ΔΠϯλϑΣʔε |-- [viewmodel] ϏϡʔϞσϧ |-- [activity] ActivityͷϩδοΫ |-- [fragment] FragmentͷϩδοΫ |-- FragmentController FragmentͷભҠΛ୲͏Ϋϥε |-- [view] View |-- [activity] ը໘ |-- [fragment] ը໘ |-- [custom] ΧελϜϏϡʔ |-- [adapter] RecyclerView/ListView/ViewPagerͷAdapter |-- MedicalApplication ΞϓϦέʔγϣϯΫϥε
  15. • Model૚ • API௨৴΍௨৴݁ՌͷΩϟογϡorӬଓԽͳͲΛߦ͏ • API௨৴݁ՌͷϨεϙϯε಺༰͸entityͰఆٛ • APIʹ౉͢Requestύϥϝʔλ΋Modelͱͯ͠ఆٛ • RepositoryΛܦ༝ͯ͠Presenterͱ௨৴

    • JsonͷύʔεɾӬଓԽ&Ωϟογϡʹ͸ϥΠϒϥϦΛ࢖༻ |-- [model] Ϟσϧ |-- [api] API |-- [db] σʔλϕʔε & Ωϟογϡ |-- [entity] Modelຊମ |-- [repository] ϦϙδτϦʢAPI & DB ˍ ModelɹΛ౷ׅ͢Δʣ
  16. • View૚ • େػೳ͝ͱʹActivityΛ༻ҙͯ͠ɺখػೳ͝ͱʹ FragmentΛભҠͤ͞Δ • FragmentControllerʹ͸ɺFragNav
 ͱ͍͏ϥΠϒϥϦΛܧঝͯ͠ɺભҠΛ୲͍ͬͯΔ • FragmentControllerͰFragmentͷભҠΛ੍ޚ

    • Adapter͸RecyclerViewͷ੍ޚʹ࢖ΘΕΔ |-- [view] View |-- [activity] ը໘ |-- [fragment] ը໘ |-- [custom] ΧελϜϏϡʔ |-- [adapter] RecyclerView/ViewPager |-- FragmentController FragmentͷભҠΛ୲͏Ϋϥε
  17. • Presenter૚ • Model૚͔Βσʔλऔಘͯ͠RxͰՃ޻ • View૚ͱσʔλͷ΍ΓऔΓ • ViewModel૚ • View૚ʹ౉͢৘ใΛ؅ཧ

    |-- [presenter] ϓϨθϯλʔ |-- [view] ϓϨθϯλʔ͔ΒView΁ΠϕϯτΛ௨஌͢ΔΠϯλϑΣʔε |-- [viewmodel] ϏϡʔϞσϧ
  18. • MedicalApplication • ApplicationΫϥεͷ֦ு • RepositoryManager • ApplicationΫϥεͰRepositoryΛ؅ཧ • extension

    • ΞϓϦશମͰසൟʹ࢖͏ػೳͷݺͼग़͠ͷ؆ུԽ΍
 ݩʑ͋Δػೳͷ֦ுͳͲ • helper • όϦσʔγϣϯ΍push௨஌ͳͲ |-- [extension] ֦ு(Kotlin Extension & DataBinding BindingAdapter) |-- [helper] ϔϧύʔʢBroadcast & Push௨஌ etc...ʣ |-- [manager] ϚωʔδϟʔʢΞϓϦέʔγϣϯΫϥεͰอ࣋͢Δ؅ཧΫϥεʣ |-- RepositoryManager ΞϓϦέʔγϣϯΫϥεͰRepositoryΛ؅ཧ͢ |-- MedicalApplication ΞϓϦέʔγϣϯΫϥε
  19. ࣮ࡍ։ൃͯ͠Έͯ
 Ͳ͏͔ͩͬͨʁ

  20. ։ൃ͠΍͔ͬͨ͢఺ • ࠷ॳʹ౔୆ͱͳΔΞʔΩςΫνϟΛܾΊ͍ͯͨͷͰɺ ࣮૷Ͱ໎͏έʔε͸গͳ͔ͬͨɻ • ಛघͳػೳʹ͍ͭͯ͸νʔϜͰٞ࿦ • ΞϓϦ։ൃܦݧऀ͕ۙ͘ʹډͨͷͰɺ஌ࣝͷٵऩ͸ ૣ͔ͬͨؾ͕͢Δ •

    Android5ະຬ͸੾ΓࣺͯͯͨͷͰɺ4.4Ҏ߱ͷԼҐ όʔδϣϯ͸ؾʹͤͣࡁΜͩ
  21. ۤ࿑ͨ͠఺ • UIͷ࣮૷ํ๏͕౰વWebͱ͸ҧ͏ͷͰɺ׳Ε͕ඞཁͩͬͨ • ֤؀ڥ༻ʹRepositoryManager͕ඞཁͳͷ͕ɺखؒ • ͔͠΋ϞοΫ؀ڥҎ֎͸த਎͕શ͘ಉ͡ • Rxͷ࢖͍ํʹ׳ΕΔ·Ͱ͕͔͔࣌ؒͬͨɻ •

    ৽نͰModel૚࣮૷͢Δͷ͕ɺ΍΍खؒʹࢥ͑ͨ • ࠷௿Ͱ΋EntityɾAPIɾRepository͸ඞཁͳ্ʹ
 ֤؀ڥͷRepositoryManagerʹखΛՃ͑Δඞཁ͕͋Δ
  22. Α͘ࢀߟʹͯͨ͠هࣄ • ConstraintLayoutΛ΋͏গ͠ਂ͘஌ͬͯΈΔ
 https://qiita.com/takahirom/items/ 97818748e2c2059a2536 • Fragmentͷجຊ
 https://qiita.com/naoi/items/3e1125d1e1418d09f77a • ඇಉظ΍ฒྻॲཧʹ΋໾ཱͭRxJavaͷ࢖͍ํ


    https://qiita.com/disc99/items/1b2e44a1105008ec3ac9 • Kotlin είʔϓؔ਺ ༻్·ͱΊ
 https://qiita.com/ngsw_taro/items/ d29e3080d9fc8a38691e
  23. ·ͱΊɾࠓޙͷ͜ͱ

  24. • ࠓ͸೥಺΁ͷϦϦʔε΁޲͚Ӷҙ։ൃத • ͜͜·Ͱςετ͕ॻ͚͍ͯͳ͍ͷͰɺϦϦʔεޙͷ ΞοϓσʔτͷͨΊʹ΋ςετ͸ॻ͍͍͖͍ͯͨ • ࠓճ͸MVP + DataBinding ͕࠾༻͞Ε͕ͨɺଞ

    ͷΞʔΩςΫνϟͷϝϦοτɾσϝϦοτ΋஌ͬͯ ͓͖͍ͨ
  25. ࠷ޙʹ

  26. None