Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ベルリンに移住して5年くらいAndroidエンジニアとして働いた話

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 ベルリンに移住して5年くらいAndroidエンジニアとして働いた話

Avatar for Ben Hachimori

Ben Hachimori

March 16, 2023
Tweet

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ (1/2) ৬ྺ: ɹ2009-2017೥, ೔ຊͰಇ͘ ɹ ɾAndroid ΞϓϦ, ϑϩϯτΤϯυ, όοΫΤϯυΛܦݧ

    ɹ 2017-2022೥, ϕϧϦϯͰಇ͘ ɹ ɾAndroid ΞϓϦ, React Native ΞϓϦΛܦݧ ɹ 2022೥, ϨΠΦϑʹૺ͍೔ຊʹؼࠃɻ asken ʹδϣΠϯ
  2. ࣗݾ঺հ (2/2) ֶྺ: ɹେֶɾେֶӃΛଔۀ (ઐ߈͸྆ํͱ΋ίϯϐϡʔλαΠΤϯε) ޠֶೳྗ: ɹIELTS General Ϟδϡʔϧ 6.0

    (ӳݕͩͱ४Ұڃʹ૬౰) ɹϑΟϦϐϯӳձ࿩ͷΦϯϥΠϯϨοεϯΛ 2000 ճҎ্डߨ ɹ TOEIC 755 ɹཹֶܦݧͳ͠ ɹυΠπޠ͸࿩ͤͳ͍ (υΠπʹߦ͘લ΋ߦͬͨޙ΋)
  3. ΞϝϦΧɾΧφμͷاۀʹԠืͨ͠ αϯϑϥϯγεί@ΞϝϦΧ ͷاۀ 30 ࣾʹԠื - ὎ શͯॻྨબߟͰམͪͨ - ὎

    ΞϝϦΧ͸Ϗβऔಘ͕ݫͦ͠͏ɻΧφμͷاۀʹԠื͢Δ͜ͱʹͨ͠ όϯΫʔόʔ@Χφμ ͷاۀ 23 ࣾʹԠื - ὎ 1ࣾ Skype ໘઀མͪɺͦͷଞ͸ॻྨબߟམͪ - ὎ ݁Ռ͸ৼΔΘͳ͔͕ͬͨɺ1ࣾʹͯ Skype ໘઀·ͰਐΊͨ͜ͱ͕خ͔ͬͨ͠!
  4. υΠπͷاۀʹԠื͢Δ υΠπ, ϕϧϦϯͷITελʔτΞοϓγʔϯ͕Ξπ͍ͱ࿩୊ʹ - ϕϧϦϯ͸ࠃࡍతͳ౎ࢢͰӳޠ͕௨͡Δ - Ո௞͕͍҆ - ༗໊ͳ IT

    اۀ΋͍͔ͭ͋͘Δ (SoundCloud, N26, Zalando ͳͲ) ϕϧϦϯͰΤϯδχΞΛͨ͠ํ͕ॻ͍ͨϒϩάهࣄ - WET ͳඋ๨࿥ - υΠπͷडୗ։ൃձࣾΛୀ৬͠·ͨ͠ - zakisan’s blog - ϕϧϦϯʹͯస৬͠·ͨ͠ɻ ΧφμͷاۀʹԠื͔ͯ͠ΒҰ೥ޙɺϕϧϦϯͷاۀʹԠื͢Δ͜ͱʹͨ͠
  5. υΠπͷاۀʹԠืͨ݁͠Ռ - ϕϧϦϯͷاۀ 27 ࣾʹԠืͨ͠ - ϕϧϦϯߦ͖ͷߤۭ݊ͱϗςϧΛલ΋ͬͯ༧໿ͯ͠ɺԠื͢Δ࣌ʹϕϧϦϯͰͷ଺ࡏ༧ఆΛ఻ ͑ͨ - 1͔ࣾΒΦϑΝʔΛ໯ͬͨ!

    - 6 ͕ࣾ Skype ໘઀ͯ͘͠Εͨ! - 2 ͕ࣾΦϑΟεͰͷ࠷ऴ໘઀ʹট଴ͯ͘͠Εͨ! 1. Aࣾ (όεձࣾ, Android ΤϯδχΞϙδγϣϯ ) 2. Bࣾ (ཱྀߦ୅ཧళ, Android ΤϯδχΞϙδγϣϯ )
  6. Aࣾͷ࠷ऴ໘઀ (ٕज़໘઀) RetrofitΛͲΜͳ෩ʹ࢖ͬͯΔ? ଞʹͲΜͳϥΠϒϥϦ͕͋Δ? ͦͷதͰ Retrofit Λ࢖͏ཧ༝ ͸? AsyncTask Λ࢖͏ͷ͸Α͘

    ͳ͍ͱݴΘΕͯΔ͚Ͳͦͷ ཧ༝͸? Set ͱ List ͷҧ͍͸Կ? SQLite, SharedPreferences, ֎෦ετϨʔδ͸ͦΕͧΕ Ͳ͏࢖͍෼͚Δ? ݁Ռɺ໘઀͸௨Βͳ͔ͬͨ
  7. Bࣾͷ࠷ऴ໘઀ (1/3) ͏ͪͷόοΫΤϯυ͸े਺೥લ͔Β։ൃ͕ଓ͍ͯͯͱ ͯ΋ΧΦεͳΜͩɻ COBOLͰ࣮૷͞Ε͍ͯΔ͠ɺ͋Δ API ͕ϨεϙϯεΛ ฦͨ͢Ίʹɺผͷ API ΛݺΜͰΔΜ͚ͩͲɺͦͷ

    API ΋ผͷ API ΛݺΜͰͯɺґଘؔ܎͕ෳࡶ͗ͯࣾ͢಺Ͱ ΋׬શʹཧղͰ͖ͯΔਓ͕͍ͳ͍Μͩɻ ͦΜͳΘ͚͔ͩΒɺΞϓϦͷ඼࣭ΛߴΊΔͨΊʹɺ֤ Ϟδϡʔϧʹ୯ମςετΛॻ͍ͯཉ͍͠ɻ΋͠όά͕ ͋ͬͯ΋ɺͦͷόάΛ௚ͯ͠ɺόά͕௚ͬͨ͜ͱΛอূ ͢ΔςετΛॻ͍ͯ΄͍͠ɻ ฐࣾʹ͸ QA ςελʔ͕͍Δ͚Ͳɺखಈςετͩͱݟམ ͱ͕͠ൃੜ͠ಘΔͷͰɺCI/CDͰࣗಈతʹ୯ମςετΛ ࣮ߦ͢ΔΑ͏ʹ࢓૊ΈΛ࡞ͬͯཉ͍͠ɻ ࠓɺ͏ͪͷձࣾͰཱྀߦΛ༧໿ͨ͠ਓʹ͸࡭ࢠΛ͓ͬ͘ ͯΔΜ͚ͩͲɺ΋͠ΞϓϦ͕࡭ࢠΛஔ͖׵͑ΒΕͨΒ ೥ؒ◦◦€ͷ࡟ݮޮՌ͕Ͳ͏ͨΒ͜͏ͨΒɾɾɾɾ ૣޱ͗ͯ͢ԿΛݴͬ ͯΔͷ͔Α͘Θ͔Β ͳ͍ɾɾɾ
  8. ീ৿͕ΦϑΝʔΛ໯͑ͨཧ༝ (?) - Կ͕ධՁ͞Εͨͷ͔ෆ໌ - BࣾͰ͸ Android ͷ஌ࣝΛ໰ΘΕͳ͔ͬͨ - ΍͓͍ͬͯͯྑ͔ͬͨ͜ͱ

    - Android ͷࣾ֎ษڧձʹఆظతʹࢀՃ - ϑΟϦϐϯӳձ࿩ϨοεϯΛఆظతʹडߨ - ఘΊͣʹԠื͠ଓ͚ͨͷ͕ྑ͔ͬͨ - ւ֎Ͱಇ͍ͯΈ͍ͨͱ͍͏ํ͸ɺӳޠͷษڧ΍ɺઐ໳ٕज़ͷೳྗΛߴΊ͓ͯ͘ͳͲɺক དྷʹඋ͑ͯߦಈ͓ͯ͘͠ͱͦΕ͕໾ʹཱͭ͸ͣ
  9. ձࣾͷงғؾ - ଟࠃ੶ͳձࣾͩͬͨ - υΠπਓͷଞɺؖࠃਓɺϩγΞਓɺ΢ΫϥΠφਓɺϒϥδ ϧਓɺεϖΠϯਓɺϧʔϚχΞਓɺΦϥϯμਓɺetc. - ٞ࿦΋೔ৗձ࿩΋ӳޠͰߦ͏ - ӳձ࿩ϨοεϯΑΓ΋ང͔ʹ೉͍͠

    - ٕज़తͳٞ࿦ΛӳޠͰߦ͏εΩϧ͕޲্ͨ͠ - શһ͕ۉ౳ͳཱ৔Ͱٞ࿦Ͱ͖Δ - ৬Ґ, ೥ྸ, ੑผ, ࠃ੶, ͳͲʹΑΒͳ͍ - ϛʔςΟϯάͰ͸શһʹൃݴͷػձ͕͋Δ BࣾͷΦϑΟε νʔϜͷਓͨͪͱ Christmas Marketʹߦ͘
  10. ϕϧϦϯͰܦݧٕͨ͠ज़ελοΫ 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
  11. ۀ຿ϑϩʔ ϕϧϦϯͰ͸ 2 ࣾܦݧ͕ͨ͠ɺେମಉ͡ۀ຿ϑϩʔͩͬͨ εΫϥϜʹΑΔ։ൃ - νʔϜߏ੒͸ εΫϥϜϚελʔ, ϓϩμΫτΦʔφʔ, ΤϯδχΞ,

    σβΠφʔ, QA - εϓϦϯτͷ௕͞͸2िؒ - Daily Standup, Review, Refinement, Retro, Planning ඼࣭อূମ੍ - ίʔυϨϏϡʔ ὎ QA ͕ಈ࡞֬ೝ ὎ ϓϩμΫτΦʔφʔ͕֬ೝ ὎ Sprint Review Ͱ࣮ԋ ίϛϡχέʔγϣϯπʔϧ - Slack (ීஈͷ΍ΓͱΓ), JIRA (ϓϩδΣΫτ؅ཧ), Confluence (৘ใڞ༗)
  12. υΠπͰϨΠΦϑ͞Εͨ࿩ (1/2) - ϕϧϦϯͰಇ͖࢝Ίͯ໿ 5 ೥͕ܦͬͨ͋Δ೔ɺAndroid ΤϯδχΞͱ iOS ΤϯδχΞ ΛूΊͨϛʔςΟϯά͕ઃఆ͞Εͨ

    - ീ৿ΛؚΊͨ 3 ਓͷ Android / iOS ΤϯδχΞͷղޏΛ௨ࠂ͞Εͨ - ্࢘ᐌ͘ɺձࣾͷํ਑ͱͯ͠ɺεϚϗΞϓϦͷ։ൃΛܭը͔Β֎͢͜ͱʹ͔ͨ͠Βɺͱͷ͜ͱ - ʮձࣾͷwebϖʔδʹࡌͤΔ͔ΒʯͱݴΘΕͯ ࡱӨͨ͠νʔϜͷू߹ࣸਅ - ͜ͷࣸਅΛͱͬͨཌ೔ʹղޏ௨ࠂ͞Εͨ - ͪͳΈʹɺࠓ΋ձࣾͷϖʔδ͔ΒӾཡͰ͖Δ
  13. υΠπͰϨΠΦϑ͞Εͨ࿩ (2/2) - ֎ࠃਓ͕υΠπͰղޏ͞ΕͨΒɺ3 ϲ݄Ҏ಺ʹ࠶ब৬͢Δඞཁ͕͋Δ - ಇ͍͍ͯΔاۀʹϏβͷεϙϯαʔΛͯ͠΋ΒͬͯΔͷͰɺղޏ͞ΕͨΒϏβ͕ 3 ϲ݄ͷ༛༧ظؒޙʹແޮʹ ͳͬͯ͠·͍ɺυΠπʹ଺ࡏͰ͖ͳ͘ͳΔ

    - ௨ࠂ͞Ε͔ͯΒ࣮ࡍʹղޏ͞ΕΔ·Ͱ 3 ϲ݄ + Ϗβͷ༛༧ظؒ 3 ϲ݄Ͱܭ6ϲ݄Ҏ಺ʹ࠶ब৬Λ͢Δ ඞཁ͕͋ͬͨ - 64 ࣾʹԠื͕ͨ͠ɺΦϑΝʔʹ͸ࢸΒͳ͔ͬͨ - Ϗβͷظݶ͕ഭ͍ͬͯͨͨΊɺؼࠃΛࢹ໺ʹೖΕͯϕϧϦϯࡏॅதʹ೔ຊͷاۀʹԠื - ϕϧϦϯࡏॅதʹ asken ͔ΒΦϑΝʔΛ΋Βͬͨ
  14. ϕϧϦϯاۀ΁ͷస৬׆ಈʹࣦഊͨ͠൓ল఺ (1/2) - υΠπޠΛਅ໘໨ʹษڧͯ͠Ε͹ྑ͔ͬͨ - ٻਓͷ৚߲݅໨ʹʮυΠπޠೳྗʯͱ͋Γɺͦ͜ͰఘΊͨέʔε͕͋ͬͨ - ӳޠೳྗ / Android

    ΞϓϦ։ൃೳྗΛ৳͹͢༨஍͕͋ͬͨ - ϕϧϦϯ಺ͷاۀΛத৺ʹԠื͕ͨ͠ɺ΋ͬͱൣғΛ޿͛Ε͹ྑ͔ͬͨ - ϛϡϯϔϯ, ϑϥϯΫϑϧτ, ϋϯϒϧάͳͲ IT اۀ͕ूத͍ͯͦ͠͏ - ւ֎Ͱಇ͘ɺͱ͍͏͜ͱΛॏࢹ͢ΔͳΒυΠπҎ֎ͷࠃ΋ݕ౼͢΂͖ͩͬͨ - ωοτϫʔΫΛߏஙͯ͠Ε͹ྑ͔ͬͨ - ϦϑΝϨϯεͰ࠾༻ʹܨ͕Δέʔε͕Α͋͘Δ
  15. ϕϧϦϯاۀ΁ͷస৬׆ಈʹࣦഊͨ͠൓ল఺ (2/2) υΠπʹ଺ࡏ͢Δҝͷଞͷํ๏Λݕ౼͢Ε͹ྑ͔͔ͬͨ΋ - Ϗβͷ༛༧ظ͕ؒ੾Εͯ΋ɺٻ৬ऀϏβʹ੾Γସ͑Δ͜ͱͰ 6 ϲ݄ؒυΠ πʹ଺ࡏ͢Δ͜ͱ͕Ͱ͖Δ - ·ͨɺυΠπͰҰఆظؒ੫ۚΛೲΊ͍ͯΕ͹ɺ৬ۀ҆ఆॴʹొ࿥͠

    ͯɺલ೥౓ͷ೥ऩͷ6ׂΛࣦۀख౰ͱͯ͠ड͚औΔ͜ͱ͕Ͱ͖Δ - ΫϥΠΞϯτ (υΠπձࣾͰ͋Δඞཁ͕ͳ͍) ͕͍Ε͹ɺϑϦʔϥϯεʹ ͳͬͯϑϦʔϥϯεϏβͰυΠπʹ଺ࡏ͢Δ͜ͱ͕Ͱ͖Δ
  16. ϕϧϦϯͰಇ͍ͨײ૝ (1/2) ྑ͔ͬͨ͜ͱ - ӳޠ؀ڥͰಇ͚ͨ - ৬৔ͰυΠπޠ͕࿩ͤͳͯ͘΋໰୊ແ͔ͬͨ - ӳޠ͕௨͡ΔࠃͩͬͨΒͲ͜Ͱ΋ಇ͚Δͱ͍͏ࣗ৴͕͍ͭͨ -

    KotlinConfɺ DroidconBerlin ͳͲɺϤʔϩούݍͰ։࠵͞ ΕΔٕज़ΧϯϑΝϨϯεʹࢀՃ͠΍͔ͬͨ͢ - ϥΠϑϫʔΫόϥϯε͕ॏࢹ͞Εͯͨ - ࢒ۀΛ΄ͱΜͲ͠ͳ͔ͬͨ - ༗څ΋औΓ΍͔ͬͨ͢ KotlinConf 2018, Amsterdam Ԇധͯ͠؍ޫ΋ָ͠Έ·ͨ͠
  17. ϕϧϦϯͰಇ͍ͨײ૝ (2/2) ྑ͘ͳ͔ͬͨ͜ͱ - ೥ऩ্͕͕͚ͬͨͲɺࢥͬͨΑΓ͓͕ۚஷ·Βͳ͍ - υΠπ͸੫͕ۚߴ͘ɺॴಘ੫ͱࣾձอোͰऩೖͷ 4 ׂఔ౓ࠩ͠Ҿ͔ΕΔ -

    Ո௞͕೥ʑ্͕͍ͬͯͬͨ - γΣΞϋ΢εʹॅΜͰ ݄585€ -> ݄600€ -> ݄650€ -> ݄750€ - ߫֎ʹҾͬӽͯ͠ ݄550€ -> ݄570€ -> ͦͷޙ, ϩγΞɾ΢ΫϥΠφઓ૪ͷӨڹͰߋʹ্ঢ? - ϕϧϦϯશମͰ͜ͷ܏޲͕ଓ͍ͯΔ໛༷ - υΠπޠਏ͍ - ӳޠ͸௨͡Δ΋ͷͷɺपΓͷ৘ใ͸΄΅υΠπޠͳͷͰɺυΠπޠ͕Θ͔Βͳ͍ͱࠔΔ - υΠπޠΛ࿩ͤͳ͍ͱɺస৬ઌͷબ୒ࢶ͕ݮΔ - 2೥΄ͲυΠπޠΦϯϥΠϯϨοεϯΛड͚͕ͨ͋·Γ্ୡ͠ͳ͔ͬͨ
  18. ಇ͘ࠃΛબͿ࣌ʹࢀߟʹͨ͠αΠτ (1/2) NUMBEO - ೋͭͷ౎ࢢͷΞύʔτՈ௞ / ৯ྉ඼ / ೔༻ࡶ՟඼ ͷߴ

    ͞Λൺֱͯ͘͠ΕΔαΠτ - ӈͷը૾͸ɺ౦ژͱόϯ Ϋʔόʔͷ෺Ձͷߴ͞Λൺ ֱͨ࣌͠ͷը૾