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
unskilled_team_development_for_droidkaigi
Search
Shinnosuke Kugimiya
March 10, 2017
Programming
16
5.4k
unskilled_team_development_for_droidkaigi
DroidKaigiで発表した内容です
Shinnosuke Kugimiya
March 10, 2017
Tweet
Share
More Decks by Shinnosuke Kugimiya
See All by Shinnosuke Kugimiya
Claude Code x Androidアプリ 開発
kgmyshin
1
1.1k
AndroidアプリエンジニアもMCPを触ろう
kgmyshin
2
1.1k
15分で分かった気になる dumpsys
kgmyshin
1
280
UIテストはもうMaestroでいいのかもしれない話
kgmyshin
28
13k
新規開発を始めるときにやるべきこと
kgmyshin
19
9.1k
android app error handling
kgmyshin
1
1.5k
solid+cqs+dry
kgmyshin
35
10k
Paging Library ~ アイテムの更新 ~
kgmyshin
2
3.4k
KotlinでReact Native(expo) を使いたい
kgmyshin
2
1.2k
Other Decks in Programming
See All in Programming
SpecKitでどこまでできる? コストはどれくらい?
leveragestech
0
600
iOS 17で追加されたSubscriptionStoreView を利用して5分でサブスク実装チャレンジ
natmark
0
640
明日から始めるリファクタリング
ryounasso
0
120
階層構造を表現するデータ構造とリファクタリング 〜1年で10倍成長したプロダクトの変化と課題〜
yuhisatoxxx
3
940
Building, Deploying, and Monitoring Ruby Web Applications with Falcon (Kaigi on Rails 2025)
ioquatix
3
800
Six and a half ridiculous things to do with Quarkus
hollycummins
0
120
Advance Your Career with Open Source
ivargrimstad
0
380
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
180
GraphQL×Railsアプリのデータベース負荷分散 - 月間3,000万人利用サービスを無停止で
koxya
1
1.2k
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
1
550
あなたの知らない「動画広告」の世界 - iOSDC Japan 2025
ukitaka
0
420
(Extension DC 2025) Actor境界を越える技術
teamhimeh
1
240
Featured
See All Featured
Six Lessons from altMBA
skipperchong
28
4k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
20k
The Cost Of JavaScript in 2023
addyosmani
53
9k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Balancing Empowerment & Direction
lara
4
680
Designing for Performance
lara
610
69k
Context Engineering - Making Every Token Count
addyosmani
5
200
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
How STYLIGHT went responsive
nonsquared
100
5.8k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
2.6k
How to Ace a Technical Interview
jacobian
280
24k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Transcript
ະख़ͳνʔϜ։ൃ #DroidKaigi2017 @kgmyshin
ࣗݾհ
ࣗݾհ • @kgmyshin • ఝٶ ጏ೭հ • AndoridΤϯδχΞ • Server
/ iOS / WebͳͲ • ϦΫϧʔτϚʔέςΟϯάύʔτφʔζ
ࠓ͢༰
ࠓ͢༰ ͏ͪεʔύʔΤϯδχΞ͚ͩʂͱ͍ ͏৫໓ଟʹͳ͍ɻɻ
ࠓ͢༰ ·ͩ·ͩະख़ͳνʔϜͰͲ͏ͬͯ։ ൃ͍ͯ͘͠ͷ͔ɻɻ
ࠓ͢༰ ະख़ͳνʔϜͰ ࣮ࡍͷ։ൃΛ௨ͯ͡͏·͘ߦͬͨ͜ͱ ͦͷলΛ͠·͢ɻ
ࠓ͢༰ ͨΓલͱࢥ͏͜ͱ ͋Δ͔͠Ε·ͤΜ͕ɺ গ͠ͰࢀߟʹͳΔ͜ͱ͕͋Ε͍Ͱ͢ɻ
Case ελσΟαϓϦ ENGLISH
ελσΟαϓϦENGLISHͱ
ӳޠͰͯ͠ΔͷΛฉ͍ͨΓ
࣮ࡍʹൃԻͯ͠ΈͨΓ
σΟΫςʔγϣϯͯ͠ΈͨΓ
ͱɺ୯७ʹAPIΛୟ͚ͩ͘Ͱͳ ͍ɺߴػೳͳΞϓϦέʔγϣϯ
ײ֮Ͱ͕͢ɺ͜ΜͳΠϝʔδ
Hello, World レベル
APIちょっと呼ぶだけ 特定の機能使うだけ
ある程度のコンテキストの違った API群があったり それをキャッシュしたり
多くのコンテキストの違ったAPI群があったり それをキャッシュしたり
ここらへん 今回作ったのはここらへん (主観)
࣌ͷঢ়گ
iOSϦϦʔεࡁΈ
iOSͷ࣌৬ਓΤϯδχΞೋਓ ͱࢲ
• ίʔυ͍͍ͩͨ20ສߦ • ը໘50΄Ͳ • ظؒ5ϲ݄ͩͬͨ (ऴ൫Ϊ ϦΪϦ
AndroidͷνʔϜߏ ࢲɺ৽ଔΤϯδχΞɺiOSΤϯδχΞ
• ظؒiOSͱಉ͡ • ͪΖΜػೳείʔϓಉ͡ • ਓͦ͜ἧ͍ͬͯΔ͕ೳྗ໘Ͱ ෆ҆ͷ͋ΔνʔϜͩͬͨ
͕ͩͬͨɺ݁ՌແࣄΕΔ͜ ͱͳ͘ϦϦʔε • CrashFree99.98%͋ͨΓ • ධՁ4ΛԼճͬͨ͜ͱͳ͍
։ൃং൫
࠷ѱͳ݁ͱͳΜͩΖ͏…
࠷ѱͳ݁ ೲظʹؒʹ߹Θͳͯ͘ ϦϦʔεͰ͖ͳ͍͜ͱ
ະख़ͳνʔϜ͕࠷ѱͳ݁ʹ ؕΔཁҼ
ະख़ͳνʔϜ͕࠷ѱͳ݁ʹ ؕΔཁҼ • ܦݧ͕ͳ͍ͨΊʹɺίʔυ͕ΧΦεʹͳͬ ͯ͠·͏ • ܦݧ͕ͳ͍ͨΊʹɺ։ൃ͕Γͳ͍ ͜ͷະख़ͳνʔϜʹடংͱεϐʔυΛʂ
εϐʔυΛ্͛Δʹʁʁʁ
։ൃதʹҰ൪ଟ͍࣌ؒ ߟ͑Δ࣌ؒ • ϓϩάϥϜΛλΠϐϯά͢Δ࣌ؒͦΜ ͳʹมΘΒͳ͍ • ݁ہ͕ࠩग़ΔͷͲ͏Ή͔Λߟ͑ɺࢼ ߦࡨޡ͍ͯ͠Δ࣌ؒ • ܦݧऀܦݧ্Ͳ͏Ή͔ͷΞΠσΞ
Λ͍࣋ͬͯΔͷͰૣ͍
։ൃதʹҰ൪ଟ͍࣌ؒ ߟ͑Δ࣌ؒ ͋Β͔͡Ί͔ͬ͠ΓઃܭࢥΛ ͔ͬͪΓ࿅ͬͯɺ ϝϯόʔ͕࣮࣌ʹߟ͑Δ࣌ؒΛݮΒ͢ (ͦͯ͜͠Ε͕டংʹͳΔ)
ઃܭ͔ͬͪΓܾΊ͓ͯ͘ ྫ͑͋ΔػೳΛ࡞Δͱ͖ʹɺ HogeActivity, HogePresenter, HogeUseCase, HogeRepositoryͳͲ Λ࡞Ε͍͍ͱɺ୭Ͱ૾Ͱ͖ΔΑ͏ ʹɺͲ͏͍͏ઃܭʹ͢Δͷ͔ߟ͓͑ͯ͘ டং εϐʔυ
ઃܭ͔ͬͪΓܾΊ͓ͯ͘ Ͳ͏͍͏ΞʔΩςΫνϟͰ͍͍ͱࢥ͏͕ɺ Լهԡ͓͑ͯ͘͞ • ඇಉظ • ӬଓԽ • ϏδωεϩδοΫ •
Πϕϯτཧ • ϑϨʔϜϫʔΫಠࣗͷͤ͘ டং εϐʔυ
ઃܭ͔ͬͪΓܾΊ͓ͯ͘ wikiʹ·ͱΊͯɺ࣮ࡍͷ͋Δͻͱͭͷػೳ Λ࡞ͬͯΈͯઆ໌ டং εϐʔυ
͋ͱடংͮ͘Γ
ςετඞͣॻ͘ • ςετ͕ͳ͍ͱ͜Ζʹ్த͔Βςε τΛೖΕΔͷ͏ͷ͕͍͠΄Ͳ ίετ͕ߴ͘ͳΔɻ • ςετͷ࣭ॏཁ͚ͩͲɺগͳ͘ͱ ॳΊ͔Βςελϒϧʹɻ டং
Theme / Style / colorͷՃېࢭ • σβΠϯΨΠυϥΠϯΛݩʹॳΊʹ جຊతͳͷΛΨπͬͱՃ • ͦΕҎ߱ඞཁͳ͍ͣͳͷͰՃ
ېࢭ டং
dimen / string / shape / selector͍ճ͠͠ͳ͍ • جຊతͳͷઌʹΨπͬͱ࡞Δ •
ͦΕҎ߱ɺඃ͍ͬͯͯখ·Ίʹ ࡞Δ • த్ʹ͍ճ͍ͯ͠͠Δͱमਖ਼ ͨ͠ͱ͖ʹࢥΘ͵ͱ͜Ζ͕มΘͬͯ ͠·͏֬͠ೝ͠Α͏͕ͳ͍ɻɻ டং
ল ཪʹग़ͨ͜ͱͱ͔ͳ͔͕ͬͨɺ ͏গ͜͠͏ͨ͠΄͏͕Α͔ͬͨͳͬͯ͜ ͱͳͲ
ઃܭ্ࣅͨΑ͏ͳͷΛ࡞Δ͜ ͱ͕ଟ͍ͷͰΧελϜςϯϓϨʔ τ࡞ͬͨ΄͏͕Α͔ͬͨ ෳϑΝΠϧΛ ؆୯ʹੜͰ͖Δ εϐʔυ
ઃܭ্ࣅͨΑ͏ͳͷΛ࡞Δ͜ ͱ͕ଟ͍ͷͰΧελϜςϯϓϨʔ τ࡞ͬͨ΄͏͕Α͔ͬͨ http://motida-japan.hatenablog.com/entry/ 2017/01/03/190016 εϐʔυ
ίʔυϑΥʔϚολʔͳͲͷ IDEઃఆΛڞ༗͢Δ டং IDEͷઃఆ ExportͰ͖ΔͷͰ ڞ༗͠·͠ΐ͏
ςετΛॻ͍ͯΒ͏Α͏ʹ͠ ͚ͯͨͲɺςετ࿙Ε͕͋ͬͨ githubͷ͚ࠩͩݕࡧ͠ͳ͍ͱΘ͔Βͳ ͍ͷͰݟམͱ͢͜ͱ͕͋Δ ΧελϜlintͰݕͯ͠CIͰfailʹ͍ͯ͠Δ டং
Getting StartedΛॻ͍ͯಡ· ͳ͍ਓ͍Δ ͦͦಡ·ͳ͍࣌Ͱ…ͱ͍͏ͷ͋Δ͕ ͔֬ʹίʔυϑΥʔϚολʔΧελϜςϯ ϓϨʔτͷίϐʔͱ͔໘ɻ ઃఆςϯϓϨʔτgitཧԼʹ͓͍ͯɺಋೖε ΫϦϓτҰͭୟ͚͍͍͚ͩͱ͍͏෩ʹ͓ͯ͘͠ டং
Getting StartedΛॻ͍ͯಡ· ͳ͍ਓ͍Δ டং DEMO
։ൃத൫
৽ଔҭͷ
ܾΊͨ͜ͱɺͬͨ͜ͱ • λεΫͷཻࡉ͔͘ɺ׳ΕΔʹ͠ ͕ͨͬͯͲΜͲΜେ͖͘ • ࣮લʹΫϥεਤΛॻ͍ͯΒ͏
λεΫͷཻΛࡉ͔͘ɺ׳Εͨ Βେ͖͘ • λεΫͷཻ͕େ͖͍͕ނʹͦͦ ͷ࣮ʹ͕͔͔࣌ؒΔɺͦͯ͠Ϩ ϏϡʔͰࢦఠେྔ…݁Ռɺͳ͔ͳ͔ ऴΘΒͳ͍ͱ͍͏͜ͱ͕.. ·ͣࡉ͔۠ͬͯ͘ޭମݧΛʂ
࣮લʹΫϥεਤΛॻ͍ͯΒ ͏ ΫϥεਤΛॻ͘લ • ઃܭํෆཧղ • ίʔυΛ͕ͬͭΓॻ͍ͨޙʹͯ͢ Γ͠…Έ͍ͨͳ͜ͱ͕ൃੜ • ωʔϛϯάͷѱ͞
࣮લʹΫϥεਤΛॻ͍ͯΒ ͏ ΫϥεਤΛॻ͘Α͏ʹͳͬͯ • ઃܭํͷ৯͍ҧ͍͕ࣄલʹΘ͔Δ • ωʔϛϯάͷϨϏϡʔ͕Ͱ͖Δ • ೋख͕ؒͳ͘ͳͬͨ •
ΠϯλϑΣʔεΛ͔ͬ͠Γҙࣝͯ͘͠Ε ΔΑ͏ʹͳͬͨ
ᷤ౻͕͋ͬͨͱ͜Ζ ઃܭํͳͲΛ͕ࣗߟ͑Δ͜ͱͰ ͷػձΛୣͬͯ͠·͏ͷͰ…
ʹஈ֊͕͋Δʮकഁʯ ·ͣʮकʯ͔Βɻ ܕΛΔ͖λΠϛϯάͩͬͨͷͰ ʹཱ͍༷ͬͯͨ…
ল
λεΫফԽલʹ࣮ΪϦΪϦ· Ͱͷॴ·Ͱམͱ͠ࠐΜͰ ڞ௨ೝࣝΛ࡞Δ εϐʔυ • ઃܭࣗମͷڞ௨ೝࣝͰ͖͍ͯͯࡉ͔ ͍ͱ͜ΖͰ৯͍ҧ͍͕ग़ͯ͘Δ • ͦΕ͕໌͢Δͷ͕ϨϏϡʔ࣌Ͱ͕࣌ؒ ͍ͬͨͳ͍
λεΫফԽલʹڞ௨ೝࣝΛ࡞Δ͜ͱ
λεΫফԽલʹ࣮ΪϦΪϦ· Ͱͷॴ·Ͱམͱ͠ࠐΜͰ ڞ௨ೝࣝΛ࡞Δ εϐʔυ • 1िؒ୯ҐͰΠςϨʔτ͍ͯ͠Δ • λεΫΛܾΊͨॳΊͷʹAndroidνʔ ϜͰू·ͬͯશλεΫʹ͍ͭͯΫϥεਤ Λඳ͍ͨΓɺؾʹͳΔͱ͜Ζϝιου
ͷத·Ͱඳ͍ͯڞ௨ೝࣝΛ࡞͍ͬͯΔ
λεΫফԽલʹ࣮ΪϦΪϦ· Ͱͷॴ·Ͱམͱ͠ࠐΜͰ ڞ௨ೝࣝΛ࡞Δ εϐʔυ • λεΫܾఆॳʹ3-4࣌ؒऔΒΕΔ • ͕ɺҰिؒͷΞτϓοτ͜ͷΓํ ͷ΄͏͕େ͖͍
λεΫফԽલʹ࣮ΪϦΪϦ· Ͱͷॴ·Ͱམͱ͠ࠐΜͰ ڞ௨ೝࣝΛ࡞Δ εϐʔυ ϨϏϡʔͰࠣࡉͳࢦఠ͔͠ͳ͍ͷͰɺλεΫফԽ͕ૣ͍
։ൃऴ൫
͍··Ͱʹͬͨ͜ͱ͕ ͏·͘·ͬͯ ͬ͘͡ΓQAΛͬͯ·ͨ͠
ͦͯ͠ແࣄϦϦʔε
·ͱΊ
·ͱΊ • ະख़ͳνʔϜʹܦݧෆΏ͑ʹடং ͱ։ൃεϐʔυ͕ͳ͍ • டং࡞Δ͠ • ࣮தʹߟ͑Δ͜ͱΛͰ͖ΔݶΓ࣮ લʹߟ͑Δ͜ͱͰεϐʔυΛੜΈ ग़͢͠
·ͱΊ • ϝϯόʔҭେࣄɻཻΛߟ͑ͯ ޭମݧΛੵΈ্͛Δ͠ɻ
͝੩ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ ϦΫϧʔτϚʔέςΟϯάύʔτφʔζͷ ϒʔεʹ͍ͨΓ͢ΔͷͰ Կ͔࣭͋ΕͦͪΒ͔ΒͰʂ (͍ͳ͔ͬͨΒ twitter͔ΒͰʂʂ)