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. ϕϧϦϯʹҠॅͯ͠5೥͘Β͍AndroidΤϯ
    δχΞͱͯ͠ಇ͍ͨ࿩
    asken Android ΤϯδχΞ
    ീ৿ ษ

    View Slide

  2. ࣗݾ঺հ (1/2)
    ৬ྺ:
    ɹ2009-2017೥, ೔ຊͰಇ͘
    ɹ ɾAndroid ΞϓϦ, ϑϩϯτΤϯυ, όοΫΤϯυΛܦݧ
    ɹ 2017-2022೥, ϕϧϦϯͰಇ͘
    ɹ ɾAndroid ΞϓϦ, React Native ΞϓϦΛܦݧ
    ɹ 2022೥, ϨΠΦϑʹૺ͍೔ຊʹؼࠃɻ asken ʹδϣΠϯ

    View Slide

  3. ࣗݾ঺հ (2/2)
    ֶྺ:
    ɹେֶɾେֶӃΛଔۀ (ઐ߈͸྆ํͱ΋ίϯϐϡʔλαΠΤϯε)
    ޠֶೳྗ:
    ɹIELTS General Ϟδϡʔϧ 6.0 (ӳݕͩͱ४Ұڃʹ૬౰)
    ɹϑΟϦϐϯӳձ࿩ͷΦϯϥΠϯϨοεϯΛ 2000 ճҎ্डߨ
    ɹ TOEIC 755
    ɹཹֶܦݧͳ͠
    ɹυΠπޠ͸࿩ͤͳ͍ (υΠπʹߦ͘લ΋ߦͬͨޙ΋)

    View Slide

  4. ւ֎Ͱಇ͖͍ͨͱࢥ͖͔͚ͬͨͬ
    2015೥͝ΖʹʮڪාɺγϦίϯόϨʔͷਅ࣮ʂʂʂʯͱ͍͏ωοτهࣄ͕όζͬͨ
    > γϦίϯόϨʔͰ͸೥ऩ1800ສԁͰ΋ੜ׆͕ΪϦΪϦ
    > αϯϑϥϯγείͷՈ௞͸Ұ೥Ͱ800ສԁ͘Β͍
    > ҩྍඅ͸೔ຊͷ࠷௿10ഒ
    ὎ େมͦ͏ʹݟ͑Δ͕ɺΠϯϑϨͰ਺ࣈ͕όάͬͯΔײ͕֮໘നͦ͏ʹݟ͑ͨ
    ὎ ଞʹ΋७ਮʹɺӳޠ؀ڥ΁ͷಌΕ΍ɺγϦίϯόϨʔͷ༗໊ IT اۀͰΤϯδχΞϦϯάΛֶ΂ͨΒ੒௕͠
    ͦ͏
    ὎ γϦίϯόϨʔͰಇ͍ͯΈ͍ͨͱࢥͬͨ

    View Slide

  5. ΞϝϦΧɾΧφμͷاۀʹԠืͨ͠
    αϯϑϥϯγεί@ΞϝϦΧ ͷاۀ 30 ࣾʹԠื
    - ὎ શͯॻྨબߟͰམͪͨ
    - ὎ ΞϝϦΧ͸Ϗβऔಘ͕ݫͦ͠͏ɻΧφμͷاۀʹԠื͢Δ͜ͱʹͨ͠
    όϯΫʔόʔ@Χφμ ͷاۀ 23 ࣾʹԠื
    - ὎ 1ࣾ Skype ໘઀མͪɺͦͷଞ͸ॻྨબߟམͪ
    - ὎ ݁Ռ͸ৼΔΘͳ͔͕ͬͨɺ1ࣾʹͯ Skype ໘઀·ͰਐΊͨ͜ͱ͕خ͔ͬͨ͠!

    View Slide

  6. υΠπͷاۀʹԠื͢Δ
    υΠπ, ϕϧϦϯͷITελʔτΞοϓγʔϯ͕Ξπ͍ͱ࿩୊ʹ
    - ϕϧϦϯ͸ࠃࡍతͳ౎ࢢͰӳޠ͕௨͡Δ
    - Ո௞͕͍҆
    - ༗໊ͳ IT اۀ΋͍͔ͭ͋͘Δ (SoundCloud, N26, Zalando ͳͲ)
    ϕϧϦϯͰΤϯδχΞΛͨ͠ํ͕ॻ͍ͨϒϩάهࣄ
    - WET ͳඋ๨࿥ - υΠπͷडୗ։ൃձࣾΛୀ৬͠·ͨ͠
    - zakisan’s blog - ϕϧϦϯʹͯస৬͠·ͨ͠ɻ
    ΧφμͷاۀʹԠื͔ͯ͠ΒҰ೥ޙɺϕϧϦϯͷاۀʹԠื͢Δ͜ͱʹͨ͠

    View Slide

  7. υΠπͷاۀʹԠืͨ݁͠Ռ
    - ϕϧϦϯͷاۀ 27 ࣾʹԠืͨ͠
    - ϕϧϦϯߦ͖ͷߤۭ݊ͱϗςϧΛલ΋ͬͯ༧໿ͯ͠ɺԠื͢Δ࣌ʹϕϧϦϯͰͷ଺ࡏ༧ఆΛ఻
    ͑ͨ
    - 1͔ࣾΒΦϑΝʔΛ໯ͬͨ!
    - 6 ͕ࣾ Skype ໘઀ͯ͘͠Εͨ!
    - 2 ͕ࣾΦϑΟεͰͷ࠷ऴ໘઀ʹট଴ͯ͘͠Εͨ!
    1. Aࣾ (όεձࣾ, Android ΤϯδχΞϙδγϣϯ )
    2. Bࣾ (ཱྀߦ୅ཧళ, Android ΤϯδχΞϙδγϣϯ )

    View Slide

  8. Aࣾͷ࠷ऴ໘઀ (ਓࣄ໘઀)
    εΫϥϜͬͯ஌ͬͯΔ?
    ேى͖ͯɺҰ೔Λݩؾʹελʔ
    τͤ͞ΔͨΊʹ͍ͯ͠Δ͜ͱͬ
    ͯ͋Δ?
    Ben ͬͯຊ໊?
    ࣗݾ঺հ͍ͯͩ͘͠͞
    ͳΜͰϕϧϦϯͰಇ͖ͨ
    ͍ͱࢥͬͨͷ?

    View Slide

  9. Aࣾͷ࠷ऴ໘઀ (ٕज़໘઀)
    RetrofitΛͲΜͳ෩ʹ࢖ͬͯΔ?


    ଞʹͲΜͳϥΠϒϥϦ͕͋Δ?
    ͦͷதͰ Retrofit Λ࢖͏ཧ༝
    ͸?
    AsyncTask Λ࢖͏ͷ͸Α͘
    ͳ͍ͱݴΘΕͯΔ͚Ͳͦͷ
    ཧ༝͸?
    Set ͱ List ͷҧ͍͸Կ?
    SQLite, SharedPreferences,


    ֎෦ετϨʔδ͸ͦΕͧΕ


    Ͳ͏࢖͍෼͚Δ?
    ݁Ռɺ໘઀͸௨Βͳ͔ͬͨ

    View Slide

  10. Bࣾͷ࠷ऴ໘઀ (1/3) ͏ͪͷόοΫΤϯυ͸े਺೥લ͔Β։ൃ͕ଓ͍ͯͯͱ
    ͯ΋ΧΦεͳΜͩɻ


    COBOLͰ࣮૷͞Ε͍ͯΔ͠ɺ͋Δ API ͕ϨεϙϯεΛ
    ฦͨ͢Ίʹɺผͷ API ΛݺΜͰΔΜ͚ͩͲɺͦͷ API
    ΋ผͷ API ΛݺΜͰͯɺґଘؔ܎͕ෳࡶ͗ͯࣾ͢಺Ͱ
    ΋׬શʹཧղͰ͖ͯΔਓ͕͍ͳ͍Μͩɻ


    ͦΜͳΘ͚͔ͩΒɺΞϓϦͷ඼࣭ΛߴΊΔͨΊʹɺ֤
    Ϟδϡʔϧʹ୯ମςετΛॻ͍ͯཉ͍͠ɻ΋͠όά͕
    ͋ͬͯ΋ɺͦͷόάΛ௚ͯ͠ɺόά͕௚ͬͨ͜ͱΛอূ
    ͢ΔςετΛॻ͍ͯ΄͍͠ɻ


    ฐࣾʹ͸ QA ςελʔ͕͍Δ͚Ͳɺखಈςετͩͱݟམ
    ͱ͕͠ൃੜ͠ಘΔͷͰɺCI/CDͰࣗಈతʹ୯ମςετΛ
    ࣮ߦ͢ΔΑ͏ʹ࢓૊ΈΛ࡞ͬͯཉ͍͠ɻ


    ࠓɺ͏ͪͷձࣾͰཱྀߦΛ༧໿ͨ͠ਓʹ͸࡭ࢠΛ͓ͬ͘
    ͯΔΜ͚ͩͲɺ΋͠ΞϓϦ͕࡭ࢠΛஔ͖׵͑ΒΕͨΒ
    ೥ؒ○○€ͷ࡟ݮޮՌ͕Ͳ͏ͨΒ͜͏ͨΒɾɾɾɾ
    ૣޱ͗ͯ͢ԿΛݴͬ
    ͯΔͷ͔Α͘Θ͔Β
    ͳ͍ɾɾɾ

    View Slide

  11. Bࣾͷ࠷ऴ໘઀ (2/3)
    νʔϜͷਓͨͪͱன৯Λ৯΂ʹϋϯόʔΨʔ԰΁

    View Slide

  12. Bࣾͷ࠷ऴ໘઀ (3/3)
    ΦϑΟεʹ໭ͬͯ໘઀ͷଓ͖Λ͢Δ
    ΦϑΝʔग़͢Α!


    ೥ऩ͸ ʓʓ€ Ͱ͍͍?


    ͍͔ͭΒಇ͚Δ?
    ·͡?

    View Slide

  13. ീ৿͕ΦϑΝʔΛ໯͑ͨཧ༝ (?)
    - Կ͕ධՁ͞Εͨͷ͔ෆ໌
    - BࣾͰ͸ Android ͷ஌ࣝΛ໰ΘΕͳ͔ͬͨ
    - ΍͓͍ͬͯͯྑ͔ͬͨ͜ͱ
    - Android ͷࣾ֎ษڧձʹఆظతʹࢀՃ
    - ϑΟϦϐϯӳձ࿩ϨοεϯΛఆظతʹडߨ
    - ఘΊͣʹԠื͠ଓ͚ͨͷ͕ྑ͔ͬͨ
    - ւ֎Ͱಇ͍ͯΈ͍ͨͱ͍͏ํ͸ɺӳޠͷษڧ΍ɺઐ໳ٕज़ͷೳྗΛߴΊ͓ͯ͘ͳͲɺক
    དྷʹඋ͑ͯߦಈ͓ͯ͘͠ͱͦΕ͕໾ʹཱͭ͸ͣ

    View Slide

  14. ձࣾͷงғؾ
    - ଟࠃ੶ͳձࣾͩͬͨ
    - υΠπਓͷଞɺؖࠃਓɺϩγΞਓɺ΢ΫϥΠφਓɺϒϥδ
    ϧਓɺεϖΠϯਓɺϧʔϚχΞਓɺΦϥϯμਓɺetc.
    - ٞ࿦΋೔ৗձ࿩΋ӳޠͰߦ͏
    - ӳձ࿩ϨοεϯΑΓ΋ང͔ʹ೉͍͠
    - ٕज़తͳٞ࿦ΛӳޠͰߦ͏εΩϧ͕޲্ͨ͠
    - શһ͕ۉ౳ͳཱ৔Ͱٞ࿦Ͱ͖Δ
    - ৬Ґ, ೥ྸ, ੑผ, ࠃ੶, ͳͲʹΑΒͳ͍
    - ϛʔςΟϯάͰ͸શһʹൃݴͷػձ͕͋Δ
    BࣾͷΦϑΟε
    νʔϜͷਓͨͪͱ
    Christmas Marketʹߦ͘

    View Slide

  15. ϕϧϦϯͰܦݧٕͨ͠ज़ελοΫ
    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

    View Slide

  16. ۀ຿ϑϩʔ
    ϕϧϦϯͰ͸ 2 ࣾܦݧ͕ͨ͠ɺେମಉ͡ۀ຿ϑϩʔͩͬͨ
    εΫϥϜʹΑΔ։ൃ
    - νʔϜߏ੒͸ εΫϥϜϚελʔ, ϓϩμΫτΦʔφʔ, ΤϯδχΞ, σβΠφʔ, QA
    - εϓϦϯτͷ௕͞͸2िؒ
    - Daily Standup, Review, Refinement, Retro, Planning
    ඼࣭อূମ੍
    - ίʔυϨϏϡʔ ὎ QA ͕ಈ࡞֬ೝ ὎ ϓϩμΫτΦʔφʔ͕֬ೝ ὎ Sprint Review Ͱ࣮ԋ
    ίϛϡχέʔγϣϯπʔϧ
    - Slack (ීஈͷ΍ΓͱΓ), JIRA (ϓϩδΣΫτ؅ཧ), Confluence (৘ใڞ༗)

    View Slide

  17. υΠπͰϨΠΦϑ͞Εͨ࿩ (1/2)
    - ϕϧϦϯͰಇ͖࢝Ίͯ໿ 5 ೥͕ܦͬͨ͋Δ೔ɺAndroid ΤϯδχΞͱ iOS ΤϯδχΞ
    ΛूΊͨϛʔςΟϯά͕ઃఆ͞Εͨ
    - ീ৿ΛؚΊͨ 3 ਓͷ Android / iOS ΤϯδχΞͷղޏΛ௨ࠂ͞Εͨ
    - ্࢘ᐌ͘ɺձࣾͷํ਑ͱͯ͠ɺεϚϗΞϓϦͷ։ൃΛܭը͔Β֎͢͜ͱʹ͔ͨ͠Βɺͱͷ͜ͱ
    - ʮձࣾͷwebϖʔδʹࡌͤΔ͔ΒʯͱݴΘΕͯ
    ࡱӨͨ͠νʔϜͷू߹ࣸਅ
    - ͜ͷࣸਅΛͱͬͨཌ೔ʹղޏ௨ࠂ͞Εͨ
    - ͪͳΈʹɺࠓ΋ձࣾͷϖʔδ͔ΒӾཡͰ͖Δ

    View Slide

  18. υΠπͰϨΠΦϑ͞Εͨ࿩ (2/2)
    - ֎ࠃਓ͕υΠπͰղޏ͞ΕͨΒɺ3 ϲ݄Ҏ಺ʹ࠶ब৬͢Δඞཁ͕͋Δ
    - ಇ͍͍ͯΔاۀʹϏβͷεϙϯαʔΛͯ͠΋ΒͬͯΔͷͰɺղޏ͞ΕͨΒϏβ͕ 3 ϲ݄ͷ༛༧ظؒޙʹແޮʹ
    ͳͬͯ͠·͍ɺυΠπʹ଺ࡏͰ͖ͳ͘ͳΔ
    - ௨ࠂ͞Ε͔ͯΒ࣮ࡍʹղޏ͞ΕΔ·Ͱ 3 ϲ݄ + Ϗβͷ༛༧ظؒ 3 ϲ݄Ͱܭ6ϲ݄Ҏ಺ʹ࠶ब৬Λ͢Δ
    ඞཁ͕͋ͬͨ
    - 64 ࣾʹԠื͕ͨ͠ɺΦϑΝʔʹ͸ࢸΒͳ͔ͬͨ
    - Ϗβͷظݶ͕ഭ͍ͬͯͨͨΊɺؼࠃΛࢹ໺ʹೖΕͯϕϧϦϯࡏॅதʹ೔ຊͷاۀʹԠื
    - ϕϧϦϯࡏॅதʹ asken ͔ΒΦϑΝʔΛ΋Βͬͨ

    View Slide

  19. ϕϧϦϯاۀ΁ͷస৬׆ಈʹࣦഊͨ͠൓ল఺ (1/2)
    - υΠπޠΛਅ໘໨ʹษڧͯ͠Ε͹ྑ͔ͬͨ
    - ٻਓͷ৚߲݅໨ʹʮυΠπޠೳྗʯͱ͋Γɺͦ͜ͰఘΊͨέʔε͕͋ͬͨ
    - ӳޠೳྗ / Android ΞϓϦ։ൃೳྗΛ৳͹͢༨஍͕͋ͬͨ
    - ϕϧϦϯ಺ͷاۀΛத৺ʹԠื͕ͨ͠ɺ΋ͬͱൣғΛ޿͛Ε͹ྑ͔ͬͨ
    - ϛϡϯϔϯ, ϑϥϯΫϑϧτ, ϋϯϒϧάͳͲ IT اۀ͕ूத͍ͯͦ͠͏
    - ւ֎Ͱಇ͘ɺͱ͍͏͜ͱΛॏࢹ͢ΔͳΒυΠπҎ֎ͷࠃ΋ݕ౼͢΂͖ͩͬͨ
    - ωοτϫʔΫΛߏஙͯ͠Ε͹ྑ͔ͬͨ
    - ϦϑΝϨϯεͰ࠾༻ʹܨ͕Δέʔε͕Α͋͘Δ

    View Slide

  20. ϕϧϦϯاۀ΁ͷస৬׆ಈʹࣦഊͨ͠൓ল఺ (2/2)
    υΠπʹ଺ࡏ͢Δҝͷଞͷํ๏Λݕ౼͢Ε͹ྑ͔͔ͬͨ΋


    - Ϗβͷ༛༧ظ͕ؒ੾Εͯ΋ɺٻ৬ऀϏβʹ੾Γସ͑Δ͜ͱͰ 6 ϲ݄ؒυΠ
    πʹ଺ࡏ͢Δ͜ͱ͕Ͱ͖Δ


    - ·ͨɺυΠπͰҰఆظؒ੫ۚΛೲΊ͍ͯΕ͹ɺ৬ۀ҆ఆॴʹొ࿥͠
    ͯɺલ೥౓ͷ೥ऩͷ6ׂΛࣦۀख౰ͱͯ͠ड͚औΔ͜ͱ͕Ͱ͖Δ


    - ΫϥΠΞϯτ (υΠπձࣾͰ͋Δඞཁ͕ͳ͍) ͕͍Ε͹ɺϑϦʔϥϯεʹ
    ͳͬͯϑϦʔϥϯεϏβͰυΠπʹ଺ࡏ͢Δ͜ͱ͕Ͱ͖Δ

    View Slide

  21. ϕϧϦϯͰಇ͍ͨײ૝ (1/2)
    ྑ͔ͬͨ͜ͱ
    - ӳޠ؀ڥͰಇ͚ͨ
    - ৬৔ͰυΠπޠ͕࿩ͤͳͯ͘΋໰୊ແ͔ͬͨ
    - ӳޠ͕௨͡ΔࠃͩͬͨΒͲ͜Ͱ΋ಇ͚Δͱ͍͏ࣗ৴͕͍ͭͨ
    - KotlinConfɺ DroidconBerlin ͳͲɺϤʔϩούݍͰ։࠵͞
    ΕΔٕज़ΧϯϑΝϨϯεʹࢀՃ͠΍͔ͬͨ͢
    - ϥΠϑϫʔΫόϥϯε͕ॏࢹ͞Εͯͨ
    - ࢒ۀΛ΄ͱΜͲ͠ͳ͔ͬͨ
    - ༗څ΋औΓ΍͔ͬͨ͢
    KotlinConf 2018, Amsterdam
    Ԇധͯ͠؍ޫ΋ָ͠Έ·ͨ͠

    View Slide

  22. ϕϧϦϯͰಇ͍ͨײ૝ (2/2)
    ྑ͘ͳ͔ͬͨ͜ͱ
    - ೥ऩ্͕͕͚ͬͨͲɺࢥͬͨΑΓ͓͕ۚஷ·Βͳ͍
    - υΠπ͸੫͕ۚߴ͘ɺॴಘ੫ͱࣾձอোͰऩೖͷ 4 ׂఔ౓ࠩ͠Ҿ͔ΕΔ
    - Ո௞͕೥ʑ্͕͍ͬͯͬͨ
    - γΣΞϋ΢εʹॅΜͰ ݄585€ -> ݄600€ -> ݄650€ -> ݄750€
    - ߫֎ʹҾͬӽͯ͠ ݄550€ -> ݄570€ -> ͦͷޙ, ϩγΞɾ΢ΫϥΠφઓ૪ͷӨڹͰߋʹ্ঢ?
    - ϕϧϦϯશମͰ͜ͷ܏޲͕ଓ͍ͯΔ໛༷
    - υΠπޠਏ͍
    - ӳޠ͸௨͡Δ΋ͷͷɺपΓͷ৘ใ͸΄΅υΠπޠͳͷͰɺυΠπޠ͕Θ͔Βͳ͍ͱࠔΔ
    - υΠπޠΛ࿩ͤͳ͍ͱɺస৬ઌͷબ୒ࢶ͕ݮΔ
    - 2೥΄ͲυΠπޠΦϯϥΠϯϨοεϯΛड͚͕ͨ͋·Γ্ୡ͠ͳ͔ͬͨ

    View Slide

  23. ·ͱΊ
    - ָ͍͠ࣄɺਏ͍ࣄ΋͚͋ͬͨͲɺϕϧϦϯͰͷब࿑Λ௨ͯ͡੒௕Ͱ͖ͨ
    - ւ֎ʹߦ͘લɺߦͬͨޙ΋౒ྗ͠ଓ͚Δ͜ͱ͕େࣄ
    - ϕϧϦϯͰͷब࿑͸͓קΊͰ͢ɻڵຯͷ͋Δํ͸ੋඇݕ౼ͯ͠Έ͍ͯͩ͘͞

    View Slide

  24. ಇ͘ࠃΛબͿ࣌ʹࢀߟʹͨ͠αΠτ (1/2)
    NUMBEO
    - ೋͭͷ౎ࢢͷΞύʔτՈ௞
    / ৯ྉ඼ / ೔༻ࡶ՟඼ ͷߴ
    ͞Λൺֱͯ͘͠ΕΔαΠτ
    - ӈͷը૾͸ɺ౦ژͱόϯ
    Ϋʔόʔͷ෺Ձͷߴ͞Λൺ
    ֱͨ࣌͠ͷը૾

    View Slide

  25. ಇ͘ࠃΛબͿ࣌ʹࢀߟʹͨ͠αΠτ (2/2)
    Glassdoor
    - اۀͷޱίϛ/څ༩/໘઀৘ใͳ
    Ͳͷ౤ߘαΠτ
    - ࠃผ, ৬छผʹฏۉڅ༩Λௐ΂
    Δ͜ͱ΋Ͱ͖Δ
    - ӈ͸όϯΫʔόʔͰͷιϑτ
    ΢ΣΞΤϯδχΞͷฏۉڅ༩
    Λௐ΂ͨ࣌ͷը૾

    View Slide

  26. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide