Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
アプリ開発初心者が Androidアプリを作っている話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yosuke Fujii
September 14, 2018
2.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
アプリ開発初心者が Androidアプリを作っている話
Yosuke Fujii
September 14, 2018
More Decks by Yosuke Fujii
See All by Yosuke Fujii
arap_osaka_1
syousa1982
1
420
アプリ開発初挑戦のチームでアプリ運用の自動化した話
syousa1982
0
310
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
320
Crafting Experiences
bethany
1
180
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
860
RailsConf 2023
tenderlove
30
1.5k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Code Reviewing Like a Champion
maltzj
528
40k
How GitHub (no longer) Works
holman
316
150k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
260
Abbi's Birthday
coloredviolet
2
8.1k
Transcript
ΞϓϦ։ൃॳ৺ऀ͕ AndroidΞϓϦͰ ԕִҩྍαʔϏεΛ࡞͍ͬͯΔ @syo_sa1982
࣍ • ࣗݾհ • ։ൃதͷαʔϏε • ٕज़બఆ • Ͳ͏ͬͯ࡞͍ͬͯΔ͔ʁ •
࣮ࡍ։ൃͯ͠ΈͯͲ͏͔ͩͬͨʁ • ·ͱΊɾࠓޙͷ͜ͱ
• ౻Ҫ ཅհ(@syo_sa1982) • ωΫετΠϊϕʔγϣϯגࣜձࣾॴଐ • Web։ൃྺ:10 • AndroidΞϓϦ։ൃྺ:3ϲ݄
։ൃதͷαʔϏε
• αʔϏε໊: εϚ • ωοταʔϏε • 1.0͕ਖ਼ࣜՔಇத • ECدΓʹϦχϡʔΞϧͤͨ͞ 2.0Λ։ൃத
• WebɾAndroid/iOSΞϓϦͰ ల։͢Δ༧ఆ
Business Model γεςϜఏڙ ૬අ༻ͷ ͓ࢧ͍ ױऀ ूۚߦ ωοτ ҩࢣ ࣬ױܒൃ
डק ڞ༗ిࢠΧϧς botܕ શͯͷ࣬ױΛʮอݥ֎ྍʯʹͯߦ͍·͢ ʢྍཆ୲نଇʹҧ͠·ͤΜʣ
ٕज़બఆ
• Android/iOS྆ํ։ൃ͢ΔͷͰɺ ΫϩεϓϥοτϑΥʔϜͷ࠾༻ બࢶʹ্͕͍ͬͯͨɻ • ͔݁Βݴ͏ͱɺωΠςΟϒͰ Android/iOSͦΕͧΕ։ൃ͢Δ͜ͱʹ • ڍ͕͍ͬͯͨީิओʹ ReactNativeͱXamarin
• ReactNative • ϝδϟʔϦϦʔε͞Εͯͳ͍ͷͰɺ ഁյతมߋͷϦεΫ͕ߴ͍ • ใ͕গͳ͍ • ʮJSͰ࣮Ͱ͖Δ =
Webͷ͚ࣝͩͰΞϓϦ͕࡞ΕΔʯ ͱ͍͏Θ͚Ͱͳ͍ • ݁ہAndroid/iOSͷࣝٻΊΒΕΔ • ظతʹݟͯɺอकͷίετֻ͕͔Γͦ͏
• Xamarin • υΩϡϝϯτ͕๛Ͱ։ൃڥ҆ఆ͍ͯ͠Δ • νϡʔτϦΞϧ৮ͬͨײɺ࣮͔ͬͨ͢͠ • ͕ɺXamarinܦݧऀ͕ࣾʹډͳ͍ͷͰɺ ͦͷ։ൃεϐʔυམͪΔՄೳੑ͕ߴ͍
• ωΠςΟϒ(Kotlin/Swift4) • ผʑʹ։ൃ͢ΔͷͰɺ ͲͪΒ͔ยํͷϦϦʔε͕ͣΕࠐΉՄೳੑ͋Δ • νʔϜʹΞϓϦΤϯδχΞ͕ډΔ • ࣮ίετ͔͔Δ͕ɺޙʑͷอक ԼखʹΫϩεϓϥοτϑΥʔϜͰ։ൃ͢ΔΑΓ
ίετ͕গͳ͍ͱஅɻ
Ͳ͏ͬͯ࡞͍ͬͯΔ͔ʁ
None
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 ΞϓϦέʔγϣϯΫϥε
• Model • API௨৴௨৴݁ՌͷΩϟογϡorӬଓԽͳͲΛߦ͏ • API௨৴݁ՌͷϨεϙϯε༰entityͰఆٛ • APIʹ͢RequestύϥϝʔλModelͱͯ͠ఆٛ • RepositoryΛܦ༝ͯ͠Presenterͱ௨৴
• JsonͷύʔεɾӬଓԽ&ΩϟογϡʹϥΠϒϥϦΛ༻ |-- [model] Ϟσϧ |-- [api] API |-- [db] σʔλϕʔε & Ωϟογϡ |-- [entity] Modelຊମ |-- [repository] ϦϙδτϦʢAPI & DB ˍ ModelɹΛ౷ׅ͢Δʣ
• View • େػೳ͝ͱʹActivityΛ༻ҙͯ͠ɺখػೳ͝ͱʹ FragmentΛભҠͤ͞Δ • FragmentControllerʹɺFragNav ͱ͍͏ϥΠϒϥϦΛܧঝͯ͠ɺભҠΛ୲͍ͬͯΔ • FragmentControllerͰFragmentͷભҠΛ੍ޚ
• AdapterRecyclerViewͷ੍ޚʹΘΕΔ |-- [view] View |-- [activity] ը໘ |-- [fragment] ը໘ |-- [custom] ΧελϜϏϡʔ |-- [adapter] RecyclerView/ViewPager |-- FragmentController FragmentͷભҠΛ୲͏Ϋϥε
• Presenter • Model͔Βσʔλऔಘͯ͠RxͰՃ • ViewͱσʔλͷΓऔΓ • ViewModel • Viewʹ͢ใΛཧ
|-- [presenter] ϓϨθϯλʔ |-- [view] ϓϨθϯλʔ͔ΒViewΠϕϯτΛ௨͢ΔΠϯλϑΣʔε |-- [viewmodel] ϏϡʔϞσϧ
• MedicalApplication • ApplicationΫϥεͷ֦ு • RepositoryManager • ApplicationΫϥεͰRepositoryΛཧ • extension
• ΞϓϦશମͰසൟʹ͏ػೳͷݺͼग़͠ͷ؆ུԽ ݩʑ͋Δػೳͷ֦ுͳͲ • helper • όϦσʔγϣϯpush௨ͳͲ |-- [extension] ֦ு(Kotlin Extension & DataBinding BindingAdapter) |-- [helper] ϔϧύʔʢBroadcast & Push௨ etc...ʣ |-- [manager] ϚωʔδϟʔʢΞϓϦέʔγϣϯΫϥεͰอ࣋͢ΔཧΫϥεʣ |-- RepositoryManager ΞϓϦέʔγϣϯΫϥεͰRepositoryΛཧ͢ |-- MedicalApplication ΞϓϦέʔγϣϯΫϥε
࣮ࡍ։ൃͯ͠Έͯ Ͳ͏͔ͩͬͨʁ
։ൃ͔ͬͨ͢͠ • ࠷ॳʹͱͳΔΞʔΩςΫνϟΛܾΊ͍ͯͨͷͰɺ ࣮Ͱ໎͏έʔεগͳ͔ͬͨɻ • ಛघͳػೳʹ͍ͭͯνʔϜͰٞ • ΞϓϦ։ൃܦݧऀ͕ۙ͘ʹډͨͷͰɺࣝͷٵऩ ૣ͔ͬͨؾ͕͢Δ •
Android5ະຬΓࣺͯͯͨͷͰɺ4.4Ҏ߱ͷԼҐ όʔδϣϯؾʹͤͣࡁΜͩ
ۤ࿑ͨ͠ • UIͷ࣮ํ๏͕વWebͱҧ͏ͷͰɺ׳Ε͕ඞཁͩͬͨ • ֤ڥ༻ʹRepositoryManager͕ඞཁͳͷ͕ɺखؒ • ͔͠ϞοΫڥҎ֎த͕શ͘ಉ͡ • Rxͷ͍ํʹ׳ΕΔ·Ͱ͕͔͔࣌ؒͬͨɻ •
৽نͰModel࣮͢Δͷ͕ɺखؒʹࢥ͑ͨ • ࠷ͰEntityɾAPIɾRepositoryඞཁͳ্ʹ ֤ڥͷRepositoryManagerʹखΛՃ͑Δඞཁ͕͋Δ
Α͘ࢀߟʹͯͨ͠هࣄ • 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
·ͱΊɾࠓޙͷ͜ͱ
• ࠓͷϦϦʔε͚Ӷҙ։ൃத • ͜͜·Ͱςετ͕ॻ͚͍ͯͳ͍ͷͰɺϦϦʔεޙͷ ΞοϓσʔτͷͨΊʹςετॻ͍͍͖͍ͯͨ • ࠓճMVP + DataBinding ͕࠾༻͞Ε͕ͨɺଞ
ͷΞʔΩςΫνϟͷϝϦοτɾσϝϦοτͬͯ ͓͖͍ͨ
࠷ޙʹ
None