Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ベルリンに移住して5年くらいAndroidエンジニアとして働いた話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Ben Hachimori
March 16, 2023
Programming
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ベルリンに移住して5年くらいAndroidエンジニアとして働いた話
https://asken.connpass.com/event/274060/
での発表資料
Ben Hachimori
March 16, 2023
Other Decks in Programming
See All in Programming
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
速習iPhone Duo対応
yuukiw00w
2
940
FreeBSDでZabbixを動かす
kenkino
0
350
Workers Cache を知る
syumai
0
320
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
310
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
270
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.4k
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
220
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.3k
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
440
iOSDC2026登壇資料.pdf
riofujimon
0
200
mrbgem 三角測量 開発
ogom
0
180
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Mind Mapping
helmedeiros
1
390
Practical Orchestrator
shlominoach
192
12k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Typedesign – Prime Four
hannesfritz
42
3.2k
Making the Leap to Tech Lead
cromwellryan
135
10k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Ethics towards AI in product and experience design
skipperchong
2
410
Un-Boring Meetings
codingconduct
0
440
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Transcript
ϕϧϦϯʹҠॅͯ͠5͘Β͍AndroidΤϯ δχΞͱͯ͠ಇ͍ͨ asken Android ΤϯδχΞ ീ ษ
ࣗݾհ (1/2) ৬ྺ: ɹ2009-2017, ຊͰಇ͘ ɹ ɾAndroid ΞϓϦ, ϑϩϯτΤϯυ, όοΫΤϯυΛܦݧ
ɹ 2017-2022, ϕϧϦϯͰಇ͘ ɹ ɾAndroid ΞϓϦ, React Native ΞϓϦΛܦݧ ɹ 2022, ϨΠΦϑʹૺ͍ຊʹؼࠃɻ asken ʹδϣΠϯ
ࣗݾհ (2/2) ֶྺ: ɹେֶɾେֶӃΛଔۀ (ઐ߈྆ํͱίϯϐϡʔλαΠΤϯε) ޠֶೳྗ: ɹIELTS General Ϟδϡʔϧ 6.0
(ӳݕͩͱ४Ұڃʹ૬) ɹϑΟϦϐϯӳձͷΦϯϥΠϯϨοεϯΛ 2000 ճҎ্डߨ ɹ TOEIC 755 ɹཹֶܦݧͳ͠ ɹυΠπޠͤͳ͍ (υΠπʹߦ͘લߦͬͨޙ)
ւ֎Ͱಇ͖͍ͨͱࢥ͖͔͚ͬͨͬ 2015͝ΖʹʮڪාɺγϦίϯόϨʔͷਅ࣮ʂʂʂʯͱ͍͏ωοτهࣄ͕όζͬͨ > γϦίϯόϨʔͰऩ1800ສԁͰੜ׆͕ΪϦΪϦ > αϯϑϥϯγείͷՈҰͰ800ສԁ͘Β͍ > ҩྍඅຊͷ࠷10ഒ େมͦ͏ʹݟ͑Δ͕ɺΠϯϑϨͰࣈ͕όάͬͯΔײ͕֮໘നͦ͏ʹݟ͑ͨ
ଞʹ७ਮʹɺӳޠڥͷಌΕɺγϦίϯόϨʔͷ༗໊ IT اۀͰΤϯδχΞϦϯάΛֶͨΒ͠ ͦ͏ γϦίϯόϨʔͰಇ͍ͯΈ͍ͨͱࢥͬͨ
ΞϝϦΧɾΧφμͷاۀʹԠืͨ͠ αϯϑϥϯγεί@ΞϝϦΧ ͷاۀ 30 ࣾʹԠื - શͯॻྨબߟͰམͪͨ -
ΞϝϦΧϏβऔಘ͕ݫͦ͠͏ɻΧφμͷاۀʹԠื͢Δ͜ͱʹͨ͠ όϯΫʔόʔ@Χφμ ͷاۀ 23 ࣾʹԠื - 1ࣾ Skype ໘མͪɺͦͷଞॻྨબߟམͪ - ݁ՌৼΔΘͳ͔͕ͬͨɺ1ࣾʹͯ Skype ໘·ͰਐΊͨ͜ͱ͕خ͔ͬͨ͠!
υΠπͷاۀʹԠื͢Δ υΠπ, ϕϧϦϯͷITελʔτΞοϓγʔϯ͕Ξπ͍ͱʹ - ϕϧϦϯࠃࡍతͳࢢͰӳޠ͕௨͡Δ - Ո͕͍҆ - ༗໊ͳ IT
اۀ͍͔ͭ͋͘Δ (SoundCloud, N26, Zalando ͳͲ) ϕϧϦϯͰΤϯδχΞΛͨ͠ํ͕ॻ͍ͨϒϩάهࣄ - WET ͳඋ - υΠπͷडୗ։ൃձࣾΛୀ৬͠·ͨ͠ - zakisan’s blog - ϕϧϦϯʹͯస৬͠·ͨ͠ɻ ΧφμͷاۀʹԠื͔ͯ͠ΒҰޙɺϕϧϦϯͷاۀʹԠื͢Δ͜ͱʹͨ͠
υΠπͷاۀʹԠืͨ݁͠Ռ - ϕϧϦϯͷاۀ 27 ࣾʹԠืͨ͠ - ϕϧϦϯߦ͖ͷߤۭ݊ͱϗςϧΛલͬͯ༧ͯ͠ɺԠื͢Δ࣌ʹϕϧϦϯͰͷࡏ༧ఆΛ ͑ͨ - 1͔ࣾΒΦϑΝʔΛͬͨ!
- 6 ͕ࣾ Skype ໘ͯ͘͠Εͨ! - 2 ͕ࣾΦϑΟεͰͷ࠷ऴ໘ʹটͯ͘͠Εͨ! 1. Aࣾ (όεձࣾ, Android ΤϯδχΞϙδγϣϯ ) 2. Bࣾ (ཱྀߦཧళ, Android ΤϯδχΞϙδγϣϯ )
Aࣾͷ࠷ऴ໘ (ਓࣄ໘) εΫϥϜͬͯͬͯΔ? ேى͖ͯɺҰΛݩؾʹελʔ τͤ͞ΔͨΊʹ͍ͯ͠Δ͜ͱͬ ͯ͋Δ? Ben ͬͯຊ໊? ࣗݾհ͍ͯͩ͘͠͞ ͳΜͰϕϧϦϯͰಇ͖ͨ
͍ͱࢥͬͨͷ?
Aࣾͷ࠷ऴ໘ (ٕज़໘) RetrofitΛͲΜͳ෩ʹͬͯΔ? ଞʹͲΜͳϥΠϒϥϦ͕͋Δ? ͦͷதͰ Retrofit Λ͏ཧ༝ ? AsyncTask Λ͏ͷΑ͘
ͳ͍ͱݴΘΕͯΔ͚Ͳͦͷ ཧ༝? Set ͱ List ͷҧ͍Կ? SQLite, SharedPreferences, ֎෦ετϨʔδͦΕͧΕ Ͳ͏͍͚Δ? ݁Ռɺ໘௨Βͳ͔ͬͨ
Bࣾͷ࠷ऴ໘ (1/3) ͏ͪͷόοΫΤϯυेલ͔Β։ൃ͕ଓ͍ͯͯͱ ͯΧΦεͳΜͩɻ COBOLͰ࣮͞Ε͍ͯΔ͠ɺ͋Δ API ͕ϨεϙϯεΛ ฦͨ͢Ίʹɺผͷ API ΛݺΜͰΔΜ͚ͩͲɺͦͷ
API ผͷ API ΛݺΜͰͯɺґଘ͕ؔෳࡶ͗ͯࣾ͢Ͱ શʹཧղͰ͖ͯΔਓ͕͍ͳ͍Μͩɻ ͦΜͳΘ͚͔ͩΒɺΞϓϦͷ࣭ΛߴΊΔͨΊʹɺ֤ Ϟδϡʔϧʹ୯ମςετΛॻ͍ͯཉ͍͠ɻ͠όά͕ ͋ͬͯɺͦͷόάΛͯ͠ɺόά͕ͬͨ͜ͱΛอূ ͢ΔςετΛॻ͍ͯ΄͍͠ɻ ฐࣾʹ QA ςελʔ͕͍Δ͚Ͳɺखಈςετͩͱݟམ ͱ͕͠ൃੜ͠ಘΔͷͰɺCI/CDͰࣗಈతʹ୯ମςετΛ ࣮ߦ͢ΔΑ͏ʹΈΛ࡞ͬͯཉ͍͠ɻ ࠓɺ͏ͪͷձࣾͰཱྀߦΛ༧ͨ͠ਓʹࢠΛ͓ͬ͘ ͯΔΜ͚ͩͲɺ͠ΞϓϦ͕ࢠΛஔ͖͑ΒΕͨΒ ؒ◦◦€ͷݮޮՌ͕Ͳ͏ͨΒ͜͏ͨΒɾɾɾɾ ૣޱ͗ͯ͢ԿΛݴͬ ͯΔͷ͔Α͘Θ͔Β ͳ͍ɾɾɾ
Bࣾͷ࠷ऴ໘ (2/3) νʔϜͷਓͨͪͱன৯Λ৯ʹϋϯόʔΨʔ
Bࣾͷ࠷ऴ໘ (3/3) ΦϑΟεʹͬͯ໘ͷଓ͖Λ͢Δ ΦϑΝʔग़͢Α! ऩ ʓʓ€ Ͱ͍͍? ͍͔ͭΒಇ͚Δ? ·͡?
ീ͕ΦϑΝʔΛ͑ͨཧ༝ (?) - Կ͕ධՁ͞Εͨͷ͔ෆ໌ - BࣾͰ Android ͷࣝΛΘΕͳ͔ͬͨ - ͓͍ͬͯͯྑ͔ͬͨ͜ͱ
- Android ͷࣾ֎ษڧձʹఆظతʹࢀՃ - ϑΟϦϐϯӳձϨοεϯΛఆظతʹडߨ - ఘΊͣʹԠื͠ଓ͚ͨͷ͕ྑ͔ͬͨ - ւ֎Ͱಇ͍ͯΈ͍ͨͱ͍͏ํɺӳޠͷษڧɺઐٕज़ͷೳྗΛߴΊ͓ͯ͘ͳͲɺক དྷʹඋ͑ͯߦಈ͓ͯ͘͠ͱͦΕ͕ʹཱͭͣ
ձࣾͷงғؾ - ଟࠃ੶ͳձࣾͩͬͨ - υΠπਓͷଞɺؖࠃਓɺϩγΞਓɺΫϥΠφਓɺϒϥδ ϧਓɺεϖΠϯਓɺϧʔϚχΞਓɺΦϥϯμਓɺetc. - ٞৗձӳޠͰߦ͏ - ӳձϨοεϯΑΓང͔ʹ͍͠
- ٕज़తͳٞΛӳޠͰߦ͏εΩϧ্͕ͨ͠ - શһ͕ۉͳཱͰٞͰ͖Δ - ৬Ґ, ྸ, ੑผ, ࠃ੶, ͳͲʹΑΒͳ͍ - ϛʔςΟϯάͰશһʹൃݴͷػձ͕͋Δ BࣾͷΦϑΟε νʔϜͷਓͨͪͱ Christmas Marketʹߦ͘
ϕϧϦϯͰܦݧٕͨ͠ज़ελοΫ React Native ϓϩδΣΫτ Android ϓϩδΣΫτ - TypeScript - Redux
- React Navigation - Firebase ΛͬͯϞόΠϧ෦ઐ༻ͷAPI Λ ࣗͨͪͰ༻ҙͨ͠ - Firebase Authenticate - Firebase Functions - Firebase Storage - BitBucket Ͱίʔυཧ - CI/CD - Jenkins - Kotlin - MVVM + CleanArchitecture - ϥΠϒϥϦ - Coroutine, Flow, Jetpack Compose, Navigation Component, Room, Koin, Mockk - GitHub Ͱίʔυཧ - CI/CD - GitHubActions
ۀϑϩʔ ϕϧϦϯͰ 2 ࣾܦݧ͕ͨ͠ɺେମಉ͡ۀϑϩʔͩͬͨ εΫϥϜʹΑΔ։ൃ - νʔϜߏ εΫϥϜϚελʔ, ϓϩμΫτΦʔφʔ, ΤϯδχΞ,
σβΠφʔ, QA - εϓϦϯτͷ͞2िؒ - Daily Standup, Review, Refinement, Retro, Planning ࣭อূମ੍ - ίʔυϨϏϡʔ QA ͕ಈ࡞֬ೝ ϓϩμΫτΦʔφʔ͕֬ೝ Sprint Review Ͱ࣮ԋ ίϛϡχέʔγϣϯπʔϧ - Slack (ීஈͷΓͱΓ), JIRA (ϓϩδΣΫτཧ), Confluence (ใڞ༗)
υΠπͰϨΠΦϑ͞Εͨ (1/2) - ϕϧϦϯͰಇ͖࢝Ίͯ 5 ͕ܦͬͨ͋ΔɺAndroid ΤϯδχΞͱ iOS ΤϯδχΞ ΛूΊͨϛʔςΟϯά͕ઃఆ͞Εͨ
- ീΛؚΊͨ 3 ਓͷ Android / iOS ΤϯδχΞͷղޏΛ௨ࠂ͞Εͨ - ্࢘ᐌ͘ɺձࣾͷํͱͯ͠ɺεϚϗΞϓϦͷ։ൃΛܭը͔Β֎͢͜ͱʹ͔ͨ͠Βɺͱͷ͜ͱ - ʮձࣾͷwebϖʔδʹࡌͤΔ͔ΒʯͱݴΘΕͯ ࡱӨͨ͠νʔϜͷू߹ࣸਅ - ͜ͷࣸਅΛͱͬͨཌʹղޏ௨ࠂ͞Εͨ - ͪͳΈʹɺࠓձࣾͷϖʔδ͔ΒӾཡͰ͖Δ
υΠπͰϨΠΦϑ͞Εͨ (2/2) - ֎ࠃਓ͕υΠπͰղޏ͞ΕͨΒɺ3 ϲ݄Ҏʹ࠶ब৬͢Δඞཁ͕͋Δ - ಇ͍͍ͯΔاۀʹϏβͷεϙϯαʔΛͯ͠ΒͬͯΔͷͰɺղޏ͞ΕͨΒϏβ͕ 3 ϲ݄ͷ༛༧ظؒޙʹແޮʹ ͳͬͯ͠·͍ɺυΠπʹࡏͰ͖ͳ͘ͳΔ
- ௨ࠂ͞Ε͔ͯΒ࣮ࡍʹղޏ͞ΕΔ·Ͱ 3 ϲ݄ + Ϗβͷ༛༧ظؒ 3 ϲ݄Ͱܭ6ϲ݄Ҏʹ࠶ब৬Λ͢Δ ඞཁ͕͋ͬͨ - 64 ࣾʹԠื͕ͨ͠ɺΦϑΝʔʹࢸΒͳ͔ͬͨ - Ϗβͷظݶ͕ഭ͍ͬͯͨͨΊɺؼࠃΛࢹʹೖΕͯϕϧϦϯࡏॅதʹຊͷاۀʹԠื - ϕϧϦϯࡏॅதʹ asken ͔ΒΦϑΝʔΛΒͬͨ
ϕϧϦϯاۀͷస৬׆ಈʹࣦഊͨ͠ল (1/2) - υΠπޠΛਅ໘ʹษڧͯ͠Εྑ͔ͬͨ - ٻਓͷ߲݅ʹʮυΠπޠೳྗʯͱ͋Γɺͦ͜ͰఘΊͨέʔε͕͋ͬͨ - ӳޠೳྗ / Android
ΞϓϦ։ൃೳྗΛ৳͢༨͕͋ͬͨ - ϕϧϦϯͷاۀΛத৺ʹԠื͕ͨ͠ɺͬͱൣғΛ͛Εྑ͔ͬͨ - ϛϡϯϔϯ, ϑϥϯΫϑϧτ, ϋϯϒϧάͳͲ IT اۀ͕ूத͍ͯͦ͠͏ - ւ֎Ͱಇ͘ɺͱ͍͏͜ͱΛॏࢹ͢ΔͳΒυΠπҎ֎ͷࠃݕ౼͖ͩͬͨ͢ - ωοτϫʔΫΛߏஙͯ͠Εྑ͔ͬͨ - ϦϑΝϨϯεͰ࠾༻ʹܨ͕Δέʔε͕Α͋͘Δ
ϕϧϦϯاۀͷస৬׆ಈʹࣦഊͨ͠ল (2/2) υΠπʹࡏ͢Δҝͷଞͷํ๏Λݕ౼͢Εྑ͔͔ͬͨ - Ϗβͷ༛༧ظ͕ؒΕͯɺٻ৬ऀϏβʹΓସ͑Δ͜ͱͰ 6 ϲ݄ؒυΠ πʹࡏ͢Δ͜ͱ͕Ͱ͖Δ - ·ͨɺυΠπͰҰఆظؒ੫ۚΛೲΊ͍ͯΕɺ৬ۀ҆ఆॴʹొ͠
ͯɺલͷऩͷ6ׂΛࣦۀखͱͯ͠ड͚औΔ͜ͱ͕Ͱ͖Δ - ΫϥΠΞϯτ (υΠπձࣾͰ͋Δඞཁ͕ͳ͍) ͕͍ΕɺϑϦʔϥϯεʹ ͳͬͯϑϦʔϥϯεϏβͰυΠπʹࡏ͢Δ͜ͱ͕Ͱ͖Δ
ϕϧϦϯͰಇ͍ͨײ (1/2) ྑ͔ͬͨ͜ͱ - ӳޠڥͰಇ͚ͨ - ৬ͰυΠπޠ͕ͤͳͯ͘ແ͔ͬͨ - ӳޠ͕௨͡ΔࠃͩͬͨΒͲ͜Ͱಇ͚Δͱ͍͏ࣗ৴͕͍ͭͨ -
KotlinConfɺ DroidconBerlin ͳͲɺϤʔϩούݍͰ։࠵͞ ΕΔٕज़ΧϯϑΝϨϯεʹࢀՃ͔ͬͨ͢͠ - ϥΠϑϫʔΫόϥϯε͕ॏࢹ͞Εͯͨ - ۀΛ΄ͱΜͲ͠ͳ͔ͬͨ - ༗څऔΓ͔ͬͨ͢ KotlinConf 2018, Amsterdam Ԇധͯ͠؍ޫָ͠Έ·ͨ͠
ϕϧϦϯͰಇ͍ͨײ (2/2) ྑ͘ͳ͔ͬͨ͜ͱ - ऩ্͕͕͚ͬͨͲɺࢥͬͨΑΓ͓͕ۚஷ·Βͳ͍ - υΠπ੫͕ۚߴ͘ɺॴಘ੫ͱࣾձอোͰऩೖͷ 4 ׂఔࠩ͠Ҿ͔ΕΔ -
Ո͕ʑ্͕͍ͬͯͬͨ - γΣΞϋεʹॅΜͰ ݄585€ -> ݄600€ -> ݄650€ -> ݄750€ - ߫֎ʹҾͬӽͯ͠ ݄550€ -> ݄570€ -> ͦͷޙ, ϩγΞɾΫϥΠφઓ૪ͷӨڹͰߋʹ্ঢ? - ϕϧϦϯશମͰ͜ͷ͕ଓ͍ͯΔ༷ - υΠπޠਏ͍ - ӳޠ௨͡ΔͷͷɺपΓͷใ΄΅υΠπޠͳͷͰɺυΠπޠ͕Θ͔Βͳ͍ͱࠔΔ - υΠπޠΛͤͳ͍ͱɺస৬ઌͷબࢶ͕ݮΔ - 2΄ͲυΠπޠΦϯϥΠϯϨοεϯΛड͚͕ͨ͋·Γ্ୡ͠ͳ͔ͬͨ
·ͱΊ - ָ͍͠ࣄɺਏ͍ࣄ͚͋ͬͨͲɺϕϧϦϯͰͷब࿑Λ௨ͯ͡Ͱ͖ͨ - ւ֎ʹߦ͘લɺߦͬͨޙྗ͠ଓ͚Δ͜ͱ͕େࣄ - ϕϧϦϯͰͷब࿑͓קΊͰ͢ɻڵຯͷ͋Δํੋඇݕ౼ͯ͠Έ͍ͯͩ͘͞
ಇ͘ࠃΛબͿ࣌ʹࢀߟʹͨ͠αΠτ (1/2) NUMBEO - ೋͭͷࢢͷΞύʔτՈ / ৯ྉ / ༻ࡶ՟ ͷߴ
͞Λൺֱͯ͘͠ΕΔαΠτ - ӈͷը૾ɺ౦ژͱόϯ ΫʔόʔͷՁͷߴ͞Λൺ ֱͨ࣌͠ͷը૾
ಇ͘ࠃΛબͿ࣌ʹࢀߟʹͨ͠αΠτ (2/2) Glassdoor - اۀͷޱίϛ/څ༩/໘ใͳ ͲͷߘαΠτ - ࠃผ, ৬छผʹฏۉڅ༩Λௐ Δ͜ͱͰ͖Δ
- ӈόϯΫʔόʔͰͷιϑτ ΣΞΤϯδχΞͷฏۉڅ༩ Λௐͨ࣌ͷը૾
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠