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
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
新卒AndroidエンジニアがOJTで学んだこと
2024/07/25(木) pixiv App Nightで発表した「新卒AndroidエンジニアがOJTで学んだこと」の資料です
atomic
July 24, 2024
More Decks by atomic
See All by atomic
pixivコミックのLiquid Glass対応
atomic928
0
40
pixivコミックでのXcode16対応
atomic928
0
180
Other Decks in Programming
See All in Programming
typoなんかねぇよ
raspython3
0
660
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
620
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
新卒PdEのリアル
ryu1013
0
130
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
0
300
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
300
My Marp Sample
sinoue0108
0
140
Hono + Inertia + React で LP を構築した話
oukayuka
2
200
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
200
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.5k
MySQLとPostgreSQLって何が違うの?
akagami
PRO
0
160
不幸な GC
chencmd
0
870
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
Deep Space Network (abreviated)
tonyrice
0
290
Faster Mobile Websites
deanohume
310
32k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Balancing Empowerment & Direction
lara
6
1.3k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
840
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
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ʹഎܠΛॻ͘ • ʮ̋̋Λͨ͠ʯ͚ͩͰͳ͘ɺʮͳͥʯΛॻ͘ •
Γ͍ͨ͜ͱΛఏҊ͢Δͱ͖ɺʮͨͩΓ͍ͨʯͰμϝ • ਓ݄ݶΒΕ͍ͯΔ • ۩ମతʹͲ͏͍ͬͨ՝͕͋ͬͯɺԿΛղܾ͍ͨ͠ͷ͔Λ໌֬ʹ͢Δ