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
新卒AndroidエンジニアがOJTで学んだこと
Search
atomic
July 24, 2024
Programming
0
120
新卒AndroidエンジニアがOJTで学んだこと
2024/07/25(木) pixiv App Nightで発表した「新卒AndroidエンジニアがOJTで学んだこと」の資料です
atomic
July 24, 2024
Tweet
Share
More Decks by atomic
See All by atomic
pixivコミックでのXcode16対応
atomic928
0
86
Other Decks in Programming
See All in Programming
ナレッジイネイブリングにAIを活用してみる ゆるSRE勉強会 #9
nealle
0
160
Datadog Workflow Automation で圧倒的価値提供
showwin
1
170
未経験でSRE、はじめました! 組織を支える役割と軌跡
curekoshimizu
1
160
color-scheme: light dark; を完全に理解する
uhyo
7
490
TCAを用いたAmebaのリアーキテクチャ
dazy
0
130
GoとPHPのインターフェイスの違い
shimabox
2
210
Honoのおもしろいミドルウェアをみてみよう
yusukebe
1
230
Learning Kotlin with detekt
inouehi
1
140
もう僕は OpenAPI を書きたくない
sgash708
6
1.9k
技術を改善し続ける
gumioji
0
120
メンテが命: PHPフレームワークのコンテナ化とアップグレード戦略
shunta27
0
300
CDKを使ったPagerDuty連携インフラのテンプレート化
shibuya_shogo
0
110
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
Music & Morning Musume
bryan
46
6.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
Designing for humans not robots
tammielis
250
25k
How to Think Like a Performance Engineer
csswizardry
22
1.4k
Done Done
chrislema
182
16k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Practical Orchestrator
shlominoach
186
10k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
10
510
What's in a price? How to price your products and services
michaelherold
244
12k
Transcript
atomic ৽ଔAndroidΤϯδχΞ͕OJTͰֶΜͩ͜ͱ
ࣗݾհ
atomic • 2024৽ଔೖࣾ • ॴଐ • OJTɿpixivΞϓϦ Android • ݱࡏɿpixivίϛοΫΞϓϦ
iOS • झຯɿϙʔΧʔɺϦΞϧग़ήʔϜ
ΞδΣϯμ
ΞδΣϯμ • ϐΫγϒͷ৽ଔݚम • OJTͰऔΓΜͩλεΫ • ݟસͬͯΒͬͨλεΫ • ઓͤͯ͞ΒͬͨλεΫ •
OJTશମΛ௨ͯ͠ಘֶͨͼ
ϐΫγϒͰ৽ଔೖࣾ͢Δͱʁ
ೖࣾޙͷϑϩʔ ৽ଔݚम 4݄ 5݄ 6݄ 7݄ OJT ຊଐ 4/1 ~
4/15 ~ 7/1 ~
ಛ • ৽ଔݚमʢOFF-JTʣ • ओʹϓϩμΫτ৬छʹֶ͍ͭͯͿ • 2िؒͰ70ߨ࠲ͷϘϦϡʔϜ • OJT •
࣮ࡍͷνʔϜʹଐ͞ΕɺۀܦݧΛੵΉ • ৽ଔ1ਓ1ਓʹϝϯλʔ͕ͭ͘ • OJTʹదͨ͠λεΫΛݟસͬͯΒͬͯΒ͏ • Γ͍ͨ͜ͱʹઓͤͯ͞Βͬͨ
OJTதʹऔΓΜͩ͜ͱ
ओʹऔΓΜͩλεΫ • ݟસͬͯΒͬͨλεΫ • Ϟδϡʔϧׂ • MVVMԽ • ઓͤͯ͞ΒͬͨλεΫ •
CIվળ w νʔϜͰϚχϡΞϧԽ͞Ε͍ͯΔ w ܦݧ͕ͳͯ͘ணख͍͢͠ w ͲͷνʔϜऔΓΜͰ͍Δ w ຊଐͰͲͷνʔϜʹߦͬͯ׆͖Δ
Ϟδϡʔϧׂ
Ϟδϡʔϧׂ • pixivΞϓϦͷϞδϡʔϧߏ • app, feature, data, domain, coreͰߏ
ϞδϡʔϧׂͷਐΊํ • pixivΞϓϦͰϚχϡΞϧԽ͕ਐΜͰ͍Δ • domain, data, featureͷॱ൪Ͱߦ͏ • ॥ࢀর͕ى͖ͳ͍ॱ൪ •
࣮ʹखΛՃ͑ͳ͍ • ϑΝΠϧҠಈ͚ͩͰ͕ࠩଟ͍ • ࣮ʹखΛՃ͑ΔͳΒMRΛ͚Δ
ֶͼ • ϑΝΠϧҠಈͷΈͰMRΛ͚Δ • ͻͱͭͷϞδϡʔϧׂ͚ͩͰɺϑΝΠϧ͕ଟ͍ • ͕ࠩଟͦ͏ͳ߹ɺResourceϑΝΠϧͷҠಈ͚ͩͰMRΛ࡞Δ
MVVMԽ
• എܠ • ಛఆͷΞʔΩςΫνϟΛ࣠ʹ࣮ͨ͠ʹͳ͍ͬͯͳ͍ • Ұ෦FluxΛ͍ͬͯΔ͕ɺActionͱEventͰಉ͡ͷΛఆ͍ٛͯ͠Δ • pixivΞϓϦͰMVVMʹԊͬͨ։ൃΛ͍ͯ͠Δ MVVMԽ
MVVMͷΓ͔ͨ • pixivΞϓϦͰϚχϡΞϧԽ͕ਐΜͰ͍Δ • UiStateʹViewͰ༻͢Δ͚ͩ࣋ͨͤΔ ✅ ❌ JDPO ໊લ JDPO
໊લ JDPO ໊લ
ֶͼ • ը໘ͷߏཁૉ͝ͱʹҠߦ͍ͯ͘͠ • ࠷ݶಈ࡞ʹ͕ͳ͘ɺίετ͕ܰ͘Өڹ͕গͳ͍ͷΛબͿ • ComposeԽ͢ΔλΠϛϯάͰมߋͨ͠ํ͕͍͍ͷ͋Δ • RecyclerViewपΓͷσʔλͳͲ ❌
✅
CIվળ
എܠ • CIվળʹΞαΠϯ͞Εͨഎܠ • ࣗಈԽ͕͖͔ͩΒɺCIؔ࿈ͷλεΫ͋ΕΓ͍ͨ • ͍͍Αʂ
pixivΞϓϦͷCI • Bitrise • GitLabͷMRΛτϦΨʔͱͯ͠ىಈ • LintνΣοΫɾϢχοτςετΛߦ͏ • DangerΛͬͯMRʹίϝϯτ͢Δ
՝ • طఆͷDocker imageͰϏϧυ͢ΔͱɺDangerͰΤϥʔ͕ൃੜ͢Δ • طఆ͡Όͳ͍ʢpre cashed͞Εͯͳ͍ʣimageΛ༻͢ΔͱɺϏϧυͷ ͨͼʹimageΛpull͢Δ͕࣌ؒൃੜ͢Δ
ௐࠪํ๏ • ϩʔΧϧͰBitriseϏϧυΛ࣮ߦ͠ɺݪҼΛௐࠪ͢Δ • CI͕ࢭ·ΔͱνʔϜશମͷ։ൃ͕ࢭ·ΔͷͰɺϩʔΧϧͰௐࠪ • ༻πʔϧ • Bitrise CLI
• Docker Desktop
ϩʔΧϧͰ࣮ߦ͢Δͱ͖ͷ٧·ΓϙΠϯτ • —env CI = falseΛઃఆ͢Δ • Git CloneͳͲϩʔΧϧͰඞཁͳ͍ͷεΩοϓ͢Δඞཁ͕͋Δ •
-env CI=falseΛઃఆ͢ΔͱɺDangerεΩοϓ͞ΕΔ • ղܾࡦ • CI=falseʹ͠ɺDangerCIʹؔͳ࣮͘ߦ͞ΕΔΑ͏ʹ͢Δ • Danger ʹඞཁͳมΛՃ͢Δ
͍͟ຊ • طఆͷDocker imageͰϏϧυ͢ΔͱɺDangerͰΤϥʔ͕ൃੜ͢Δ
ղܾҊ • Rubyؔ࿈ͷΤϥʔͷΑ͏ͳͷͰɺͱΓ͋͑ͣRuby, bundlerΛΞοϓ σʔτͯ͠ΈΔ
ղܾʂʂ🎉 • RubyΛ3.2.3→3.3ʹ͢Δͱ௨ͬͨ 🎉 • ϫʔΫϑϩʔͷ࠷ॳͷεςοϓͰRubyόʔδϣϯΛࢦఆ
ຊ൪ͷBitriseͰRubyόʔδϣϯΛ্͛Δ • ํ๏̍ɿϫʔΫϑϩʔͷ࠷ॳͷεςοϓͰRubyόʔδϣϯΛࢦఆ • ํ๏̎ɿStackΛUbuntu22ʹΞοϓσʔτ • σϑΥϧτͷRubyόʔδϣϯ্͕͕Δ https://stacks.bitrise.io/stack_reports/linux-docker-android-20.04/ https://stacks.bitrise.io/stack_reports/linux-docker-android-22.04/ Ubuntu20
Ubuntu22
ຊ൪ͷBitriseͰRubyόʔδϣϯΛ্͛Δ • ํ๏̍ɿϫʔΫϑϩʔͷ࠷ॳͷεςοϓͰRubyόʔδϣϯΛࢦఆ • ϝϦοτɿ؆୯Ͱ࣮֬ʹόά͕मਖ਼͞ΕΔɻ • ݒ೦ɿಉ༷ͷ͕ൃੜͨ͠߹ɺखಈͰόʔδϣϯΛมߋ͢Δඞ ཁ͕͋Δ
ຊ൪ͷBitriseͰRubyόʔδϣϯΛ্͛Δ • ํ๏̎ɿStackΛUbuntu22ʹΞοϓσʔτ • ϝϦοτ • σϑΥϧτͷόʔδϣϯ্͕͕Δ • ͱͷStack͕ඇਪʹͳΔͷͰɺૣΊʹରԠͰ͖Δ •
ݒ೦ɿRubyҎ֎ʹมߋ͞ΕΔͷͰɺผͷ͕ൃੜ͠͏Δ https://stacks.bitrise.io/stack_reports/linux-docker-android-20.04/
ຊ൪ͷBitriseͰRubyόʔδϣϯΛ্͛Δ • StackΛUbuntu 22ʹΞοϓσʔτ • ͍ͣΕUbuntu22ʹ͢Δඞཁ͕͋Δ • ͕ൃੜ͢ΔͳΒɺํ๏̍ͰఆରԠ͢ΕΑ͍
ຊ൪Ͱղܾʂʂ🎉 • ແࣄΤϥʔΛղܾ͠ɺCI࣌ؒΛॖޭʂʂ🎉 After Before
CIվળ·ͱΊ • ϩʔΧϧͰ࣮ߦ͢Δ࣌CI=falseʹ͢Δ • StackͷόʔδϣϯΛ֬ೝ͢Δ • ݹ͍όʔδϣϯͰಈ࡞͢ΔͷͰɺ์ஔ͍ͯ͠Δ͜ͱଟ͍ • ͨ·ʹݟͯ͠ΈΔͱྑ͍͔
શମΛ௨ͯ͠ͷֶͼ
OJTΛ௨ͯ͠ͷֶͼ • ϨϏϡʔΛ͍͢͠Α͏ʹMRΛग़͢ • ̍MR̍ίϯςΩετ • MRͷdescriptionʹഎܠΛॻ͘ • ʮ̋̋Λͨ͠ʯ͚ͩͰͳ͘ɺʮͳͥʯΛॻ͘ •
Γ͍ͨ͜ͱΛఏҊ͢Δͱ͖ɺʮͨͩΓ͍ͨʯͰμϝ • ਓ݄ݶΒΕ͍ͯΔ • ۩ମతʹͲ͏͍ͬͨ՝͕͋ͬͯɺԿΛղܾ͍ͨ͠ͷ͔Λ໌֬ʹ͢Δ