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アプリ事情
Search
Keisuke SASAKI
September 10, 2014
Technology
1
4.2k
ピクシブのAndroidアプリ事情
2014/09/09 インターン向け発表資料
そもそもAndroidって何よ?から、社内での開発フローなどなど
Keisuke SASAKI
September 10, 2014
Tweet
Share
More Decks by Keisuke SASAKI
See All by Keisuke SASAKI
pixiv SUMMER BOOT CAMP 2015 講義資料
rooandqoo
0
3.2k
Rails寺子屋 x kosenconf 告知
rooandqoo
0
61
高専カンファレンス in 釧路 発表資料
rooandqoo
2
750
Other Decks in Technology
See All in Technology
Reducing Cross-Zone Egress at Spotify with Custom gRPC Load Balancing Recap
koh_naga
0
180
Databricks における 『MLOps』
databricksjapan
2
160
SREとその組織類型
tatsuo48
9
1.6k
少数チームで挑む: SwiftUI, TCA, KMPを用いた 新規動画配信アプリ 「ABEMA Live」の開発について
tomu28
0
600
オーナーシップを持つ領域を明確にする
konifar
13
3k
サーバー間 GraphQL と webmock-graphql の話 / server-to-server graphql and webmock-graphql
qsona
2
170
Cloud Native Java with Spring Boot (CNCF Aarhus, April 2024)
thomasvitale
1
150
MySQL の SQL クエリチューニングの要所を掴む勉強会
andpad
2
4.8k
「手動オペレーションに定評がある」と言われた私が心がけていること / phpcon_odawara2024
blue_goheimochi
2
360
Meta Quest 3 で動く桜マシマシ WebXR アプリを IBM Cloud Code Engine と Babylon.js で作った話
1ftseabass
PRO
0
110
反実仮想機械学習とは何か
usaito
PRO
8
2.9k
Hands-on Gemini, the Google DeepMind LLM
meteatamel
1
110
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
27
6.3k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
1
3.4k
Designing with Data
zakiwarfel
95
4.8k
Mobile First: as difficult as doing things right
swwweet
216
8.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
16k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
Code Review Best Practice
trishagee
54
15k
Designing for Performance
lara
601
67k
Producing Creativity
orderedlist
PRO
336
39k
Building Better People: How to give real-time feedback that sticks.
wjessup
354
18k
Docker and Python
trallard
33
2.7k
Gamification - CAS2011
davidbonilla
76
4.6k
Transcript
pixivͷAndroidΞϓϦࣄ ։ൃ෦ ϞόΠϧνʔϜ ࠤʑ Ղ༞ @RooandQoo
ࠤʑՂ༞@RooandQoo AndroidΤϯδχΞ ࠓͷ৽ଔ(ࣾྺ3) About me
What is Android
What is Android ɾGoogle ͷϞόΠϧ͚OS ɾΦʔϓϯιʔε ɾੈքతγΣΞߴ͍ ɾຊͩͱ…
What is Android όʔδϣϯίʔυͷ໊લ͕͓՛ࢠ
What is Android 1.5 : Cupcake 1.6 : Donut 2.0
: Eclair 2.2 : Frozen Yogurt 3.0 : Gingerbread 4.0 : Ice Cream Sandwich 4.1 : Jelly Bean 4.4 : KitKat 5.0? : L…?
What is Android ͔Θ͍͍
What is Android ɾ͍ͭ͜ʹਖ਼໊ࣜশͳ͍Β͍͠
What is Android ࠷ۙͷ Google ੜ׆ͱ AndroidΛ ີணͤ͞Α͏ͱ͍ͯ͠Δ
Android Wear
Android Auto
Android TV
What is Android ͦͷ͏ͪྫྷଂݿͱ͔ʹ৯͍ࠐΜͰ͖ͦ͏
What is Android ͷճΓͷͷΛ hack Ͱ͖Δͱ͍ͬͨҙຯͰ ͓͍ͬͯͯଛͳ͍͔ʁ
How to Dev
How to Dev Apps ɾJava(ͬΆ͍ݴޠ) + xml ɾAndroid Studio(IDE) ωΠςΟϒͳΞϓϦ
How to Dev Apps ɾJava(ͬΆ͍ݴޠ) + xml ɾAndroid Studio(IDE) ωΠςΟϒͳΞϓϦ
ScalaͰॻ͜͏ͱؤுͬͯΔਓ͍ΔΒ͍͠
How to Dev Apps ɾTitanium Mobile ɾMonaca ɾRhodes ɾCordova !
ͳͲͳͲ… WebΞϓϦͬΆͭ͘͘ΕΔϑϨʔϜϫʔΫ
How to Dev Apps Java Ϣʔβ͔Βͷೖྗʹର͢ΔԠ ͳͲɺ৭ʑͳॲཧ xml ϨΠΞτΞϓϦͷจࣈྻɺͳͲͷ ఆٛ
Architecture
Architecture Java Resources(xml) AndroidManifest.xml Build Script Project Source ͦΜͳʹେ͖͘ͳ͍
Java Resources(xml) AndroidManifest.xml Build Script Project Source ΞϓϦέʔγϣϯશମͷઃఆϑΝΠϧ Architecture
Java Resources(xml) AndroidManifest.xml Build Script Project Source ϏϧυઃఆͷεΫϦϓτϑΝΠϧ(Gradle) Architecture
Way to hello world
Way to hello world ɾAndroid StudioΛηοτΞοϓ ɾ৽نϓϩδΣΫτΛ࡞ ɾRun ϘλϯΛԡ͢
Way to hello world ɾAndroid StudioΛηοτΞοϓ ɾ৽نϓϩδΣΫτΛ࡞ ɾRun ϘλϯΛԡ͢ ͔ΜͨΜʂ
Way to hello world ɾAndroid StudioΛηοτΞοϓ ɾ৽نϓϩδΣΫτΛ࡞ ɾRun ϘλϯΛԡ͢ https://developer.android.com/sdk/installing/studio.html
Way to hello world ɾAndroid StudioΛηοτΞοϓ ɾ৽نϓϩδΣΫτΛ࡞ ɾRun ϘλϯΛԡ͢ New
Project͔ΒαΫαΫͭ͘ΕΔ ॳΊ͔Β1ຕͷActivityΛ͍࣋ͬͯΔ
Way to hello world ɾAndroid StudioΛηοτΞοϓ ɾ৽نϓϩδΣΫτΛ࡞ ɾRun ϘλϯΛԡ͢
Way to hello world
Way to hello world ɾAndroid StudioΛηοτΞοϓ ɾ৽نϓϩδΣΫτΛ࡞ ɾRun ϘλϯΛԡ͢ New
Project͔ΒαΫαΫͭ͘ΕΔ ॳΊ͔Β1ຕͷActivityΛ͍࣋ͬͯΔ
Activity?
Activity ɾϘλϯϦετͳͲͷը໘ύʔπ ɾWebϖʔδ(WebView) ɾάϥϑΟοΫε AndroidΞϓϦʹ͓͚Δը໘ͷ୯Ґ ͳͲ͕දࣔ͞ΕΔJavaͷΫϥε
Activity AndroidΞϓϦʹ͓͚Δը໘ͷ୯Ґ Ϣʔβͷૢ࡞Λड͚ͯॲཧ͢Δͷ Activityͷࣄ
Activity Activity Resource Load Show Operation User
Development Environment
Development Environment Android։ൃ༻ͷϓϥάΠϯΛ ՃͰΠϯετʔϧ͢Δඞཁ͕͋ͬͨ
Development Environment 2013ϦϦʔεɺ0.8.6(20149݄9ݱࡏ)
Development Environment Eclipseͱൺ͍͍ͯͱ͜Ζ
Development Environment Gradle͕͑Δ
Development Environment ʢGradle͕͑Δ͜ͱͰʣ ϥΠϒϥϦͷཧָ͕
Development Environment ࢀߟࢿྉʢ͍͍ײ͡ʹ·ͱ·ͬͯ·͢ʣ http://blog.nkzn.info/entry/2014/03/21/015914
Development Environment pixivͰ2014ͷ4݄ʹҠߦͨ͠
Gradle
Gradle
Gradle ɾAntMavenʹΘΔϏϧυπʔϧ ɾهड़͕؆୯Ͱਓؒʹݟ͍͢ ɾAndroid StudioͰඞਢ ɾϥΠϒϥϦͷཧָ
Gradle [Gradle] GradleͱMavenͱAnt+ivyͷൺֱ http://d.hatena.ne.jp/kaakaa_hoe/20130312 ࢀߟࢿྉ
None
None
None
Gradle ɾAntMavenʹΘΔϏϧυπʔϧ ɾهड़͕؆୯Ͱਓؒʹݟ͍͢ ɾAndroid StudioͰඞਢ ɾϥΠϒϥϦͷཧָ
Gradle ɾAntMavenʹΘΔϏϧυπʔϧ ɾهड़͕؆୯Ͱਓؒʹݟ͍͢ ɾAndroid StudioͰඞਢ ɾϥΠϒϥϦͷཧָ
Gradle ͜͜ʹॻ͚ͩ͘ʂ
Gradle ศརʂ
Android@pixiv
ɾpixiv ɾpixiv ίϛοΫ ɾpixiv wall Android@pixiv ग़ͯ͠ΔΞϓϦ
iOSΞϓϦʹൺͯϦϦʔεͷख͕ؒͳ͍ͨΊɺ ࣮ݧతػೳΛಋೖ͢Δ࣌ͷઑฌʹͳΔ͜ͱ͋Δ Android@pixiv
ɾgit / GitHub ɾTravis CI ɾDeployGate ɾCrashlytics ɾGoogle Analytics Android@pixiv
ར༻ͯ͠Δπʔϧ
ݴΘͣͱΕͨιʔείʔυཧγεςϜ ػೳՃόάमਖ਼PRϕʔεͰߦ͏ Android@pixiv git / GitHub
GitHubʹ push ͞ΕͨίʔυΛ Ϗϧυɺςετͯ͘͠ΕΔ ͜Εʹ pass ͠ͳ͍ίʔυϚʔδ͞Εͳ͍ Android@pixiv Travis CI
ΞϓϦͷβ൛γεςϜ ࣾͷਓʹͬͯΒͬͯ ༻ײͷ֬ೝσόοάΛߦ͏ Android@pixiv DeployGate
ΞϓϦͷΫϥογϡݪҼੳͳͲΛ αϙʔτͯ͘͠ΕΔαʔϏε ൃੜՕॴճ͕Θ͔ΔͷͰσόοάʹॏๅ͍ͯ͠Δ Android@pixiv Crashlytics
Ϣʔβ͕ΞϓϦͰͲΜͳΞΫγϣϯΛߦ͔ͬͨʁ ͱ͍ͬͨΠϕϯτΛղੳͯ͘͠ΕΔαʔϏε Android@pixiv Google Analytics
ྑ͛͞ͳπʔϧ / ϥΠϒϥϦੵۃతʹಋೖͯ͠Δ Android@pixiv
࣮ɺpush ࣮͢Δͷ ܾΊΔ ࣾςετ (DeployGate) ϦϦʔε Release Cycle
Android@pixiv ࣮͢Δػೳͷݕ౼ Β͕ ΄͍͠ͷ Ϣʔβ͕ ΄͍͠ͷ ձࣾతʹ ྑ͍ͷ ίίΛॏతʹ ຬ͍ͨͯ͘͠
Android@pixiv ։ൃ Issueཱͯͯ
Android@pixiv ։ൃ ॻ͍ͯPRΛ͛Δ
Android@pixiv ։ൃ PRඞͣϨϏϡΞʔ͕1ਓҎ্͍ͭͯ ίʔυϨϏϡʔΛߦ͏
Android@pixiv ։ൃ ࠷ۙWIPͱͯ͠࡞ۀ్தͷPRΛग़͠ɺ ࡉ͔͍୯ҐͰϨϏϡʔͯ͠Β͏͜ͱ
Android@pixiv ։ൃ ྑ͛͞ͳϥΠϒϥϦυϯυϯ͏
Android@pixiv ։ൃ ඞཁʹԠͯ͡APIΛॻ͍ͨΓ͢Δ
Android@pixiv ྫ UIେվम
Android@pixiv Β͕΄͍͠ ɾࣜUI͍͍Ճݮμα͍ ʢެࣜͬΆ͘ͳ͍…ʣ ɾࠓͬΆ͍σβΠϯͷைྲྀʹΓ͍ͨ
Android@pixiv Ϣʔβ͕΄͍͠ ɾ͖ͬ͢Γ·ͱ·ͬͨUI͍͍͢ ɾଞͷࠓ෩ͷΞϓϦͱσβΠϯ͕ἧ͍ͬͯͯྑ͍
Android@pixiv ձࣾతʹྑ͍ ɾΞϓϦͪΌΜͱ࡞Γ͜ΜͰΔΞϐʔϧͰ͖Δ
None
None
Android@pixiv ɾେنͳվमͩͬͨͷͰ ɹϦϦʔε͞Εͨ࣌ͷײಈ͕େ͖͔ͬͨ ݟ
Android@pixiv ݟ ɾIssueͱPRͷن͕େʹͳΓ͗ͨ͢ →ͳΔ͘ࡉ͔۠ͬͨ͘ํ͕ϨϏϡΞʔ͕ࠔΒͳ͍
Android@pixiv ݟ ɾIssueͱPRͷن͕େʹͳΓ͗ͨ͢ →ͳΔ͘ࡉ͔۠ͬͨ͘ํ͕ϨϏϡΞʔ͕ࠔΒͳ͍ ϞόΠϧΞϓϦʹݶͬͨ͡Όͳ͍͚Ͳ…
matome ɾϞόΠϧνʔϜϑοτϫʔΫ͕͍ܰ ! ɾΓ͍ͨ͜ͱ͕࣮ݱ͘͢͠ɺ ɹϢʔβ͔ΒͷϨεϙϯεૣ͍ ! ɾগͳ͘ͱpixivͰͦΜͳײ͡Ͱ͢