$30 off During Our Annual Pro Sale. View Details »
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.5k
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.5k
AndroidアプリエンジニアもMCPを触ろう
kgmyshin
2
1.2k
15分で分かった気になる dumpsys
kgmyshin
1
300
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
俺流レスポンシブコーディング 2025
tak_dcxi
14
8.6k
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
500
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
2
680
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
170
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
200
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
2.3k
tparseでgo testの出力を見やすくする
utgwkk
1
210
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
8
5.5k
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
380
AIコーディングエージェント(skywork)
kondai24
0
160
配送計画の均等化機能を提供する取り組みについて(⽩⾦鉱業 Meetup Vol.21@六本⽊(数理最適化編))
izu_nori
0
150
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
110
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
970
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Designing for humans not robots
tammielis
254
26k
Raft: Consensus for Rubyists
vanstee
141
7.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Agile that works and the tools we love
rasmusluckow
331
21k
Why Our Code Smells
bkeepers
PRO
340
57k
4 Signs Your Business is Dying
shpigford
186
22k
The Pragmatic Product Professional
lauravandoore
37
7.1k
Faster Mobile Websites
deanohume
310
31k
The Invisible Side of Design
smashingmag
302
51k
Optimizing for Happiness
mojombo
379
70k
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͔ΒͰʂʂ)