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

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

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

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 - ೋͭͷ౎ࢢͷΞύʔτՈ௞ / ৯ྉ඼ / ೔༻ࡶ՟඼ ͷߴ

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