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
AndroidアプリエンジニアもMCPを触ろう
kgmyshin
2
830
15分で分かった気になる dumpsys
kgmyshin
1
230
UIテストはもうMaestroでいいのかもしれない話
kgmyshin
28
13k
新規開発を始めるときにやるべきこと
kgmyshin
19
8.9k
android app error handling
kgmyshin
1
1.5k
solid+cqs+dry
kgmyshin
35
10k
Paging Library ~ アイテムの更新 ~
kgmyshin
2
3.3k
KotlinでReact Native(expo) を使いたい
kgmyshin
2
1.1k
新規チームで新規開発を始める時にやること
kgmyshin
40
9.2k
Other Decks in Programming
See All in Programming
GoのWebAssembly活用パターン紹介
syumai
3
1.1k
統一感のある Go コードを生成 AI の力で手にいれる
otakakot
0
1.8k
Cursor Meetup Tokyo ゲノミクスとCursor: 進化と制約のあいだ
koido
2
880
#QiitaBash TDDでAIに設計イメージを伝える
ryosukedtomita
2
1.7k
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
5
510
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
11
2.2k
Spring gRPC で始める gRPC 入門 / Introduction to gRPC with Spring gRPC
mackey0225
2
430
レガシーシステムの機能調査・開発におけるAI利活用
takuya_ohtonari
0
460
從零到一:搭建你的第一個 Observability 平台
blueswen
0
310
Passkeys for Java Developers
ynojima
2
780
推論された型の移植性エラーTS2742に挑む
teamlab
PRO
0
180
TypeScript LSP の今までとこれから
quramy
1
460
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
329
21k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
180
53k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
25
2.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Into the Great Unknown - MozCon
thekraken
39
1.8k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
2
110
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
770
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͔ΒͰʂʂ)