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
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
330
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
530
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
210
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
200
The NotImplementedError Problem in Ruby
koic
1
710
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
180
OSもどきOS
arkw
0
520
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
160
3Dシーンの圧縮
fadis
1
730
Modding RubyKaigi for Myself
yui_knk
0
920
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
130
Agentic UI
manfredsteyer
PRO
0
140
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
107
250k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Utilizing Notion as your number one productivity tool
mfonobong
4
320
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
160
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Marketing to machines
jonoalderson
1
5.4k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
200
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
280
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
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 - اۀͷޱίϛ/څ༩/໘ใͳ ͲͷߘαΠτ - ࠃผ, ৬छผʹฏۉڅ༩Λௐ Δ͜ͱͰ͖Δ
- ӈόϯΫʔόʔͰͷιϑτ ΣΞΤϯδχΞͷฏۉڅ༩ Λௐͨ࣌ͷը૾
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠