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.3k
unskilled_team_development_for_droidkaigi
DroidKaigiで発表した内容です
Shinnosuke Kugimiya
March 10, 2017
Tweet
Share
More Decks by Shinnosuke Kugimiya
See All by Shinnosuke Kugimiya
15分で分かった気になる dumpsys
kgmyshin
0
85
UIテストはもうMaestroでいいのかもしれない話
kgmyshin
27
13k
新規開発を始めるときにやるべきこと
kgmyshin
19
8.8k
android app error handling
kgmyshin
1
1.4k
solid+cqs+dry
kgmyshin
35
9.9k
Paging Library ~ アイテムの更新 ~
kgmyshin
2
3.3k
KotlinでReact Native(expo) を使いたい
kgmyshin
2
1.1k
新規チームで新規開発を始める時にやること
kgmyshin
40
8.9k
android-multi-module-with-dagger
kgmyshin
10
6.1k
Other Decks in Programming
See All in Programming
ゼロからの、レトロゲームエンジンの作り方
tokujiros
3
1.1k
PHPで作るWebSocketサーバー ~リアクティブなアプリケーションを知るために~ / WebSocket Server in PHP - To know reactive applications
seike460
PRO
2
800
SwiftUIで単方向アーキテクチャを導入して得られた成果
takuyaosawa
0
120
[JAWS-UG横浜 #80] うわっ…今年のServerless アップデート、少なすぎ…?
maroon1st
0
140
2025.01.17_Sansan × DMM.swift
riofujimon
2
630
Terraform で作る Amazon ECS の CI/CD パイプライン
hiyanger
0
110
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
6
1.5k
自分ひとりから始められる生産性向上の取り組み #でぃーぷらすオオサカ
irof
8
2.1k
混沌とした例外処理とエラー監視に秩序をもたらす
morihirok
18
3.1k
ecspresso, ecschedule, lambroll を PipeCDプラグインとして動かしてみた (プロトタイプ) / Running ecspresso, ecschedule, and lambroll as PipeCD Plugins (prototype)
tkikuc
2
2.2k
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
sho_ssk_
1
670
ErdMap: Thinking about a map for Rails applications
makicamel
1
930
Featured
See All Featured
How to Ace a Technical Interview
jacobian
276
23k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
The World Runs on Bad Software
bkeepers
PRO
66
11k
The Language of Interfaces
destraynor
156
24k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
3k
Thoughts on Productivity
jonyablonski
68
4.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.3k
Building Adaptive Systems
keathley
39
2.4k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
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͔ΒͰʂʂ)