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
ベルリンに移住して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.2k
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
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.5k
Inside Stream API
skrb
1
770
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
130
スマートグラスで並列バイブコーディング
hyshu
0
260
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
13
6.7k
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
300
Contextとはなにか
chiroruxx
1
370
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
350k
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
140
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
160
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.5k
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
210
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
170
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
750
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
140
The SEO Collaboration Effect
kristinabergwall1
1
490
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
Designing for Timeless Needs
cassininazir
1
260
Unsuck your backbone
ammeep
672
58k
Site-Speed That Sticks
csswizardry
13
1.2k
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 - اۀͷޱίϛ/څ༩/໘ใͳ ͲͷߘαΠτ - ࠃผ, ৬छผʹฏۉڅ༩Λௐ Δ͜ͱͰ͖Δ
- ӈόϯΫʔόʔͰͷιϑτ ΣΞΤϯδχΞͷฏۉڅ༩ Λௐͨ࣌ͷը૾
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠