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
160
新卒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
150
Other Decks in Programming
See All in Programming
Apache Iceberg V3 and migration to V3
tomtanaka
0
170
CSC307 Lecture 04
javiergs
PRO
0
660
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.6k
Data-Centric Kaggle
isax1015
2
780
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
460
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
1
120
CSC307 Lecture 01
javiergs
PRO
0
690
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
140
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
310
並行開発のためのコードレビュー
miyukiw
0
1k
2026年 エンジニアリング自己学習法
yumechi
0
140
生成AIを活用したソフトウェア開発ライフサイクル変革の現在値
hiroyukimori
PRO
0
100
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Leo the Paperboy
mayatellez
4
1.4k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
240
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
440
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.7k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
100
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
HDC tutorial
michielstock
1
390
Ruling the World: When Life Gets Gamed
codingconduct
0
150
What does AI have to do with Human Rights?
axbom
PRO
0
2k
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ʹഎܠΛॻ͘ • ʮ̋̋Λͨ͠ʯ͚ͩͰͳ͘ɺʮͳͥʯΛॻ͘ •
Γ͍ͨ͜ͱΛఏҊ͢Δͱ͖ɺʮͨͩΓ͍ͨʯͰμϝ • ਓ݄ݶΒΕ͍ͯΔ • ۩ମతʹͲ͏͍ͬͨ՝͕͋ͬͯɺԿΛղܾ͍ͨ͠ͷ͔Λ໌֬ʹ͢Δ