Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
新卒のギーク揃ってプログラミング研修|師弟登壇2015
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
FromAtom
December 06, 2015
Programming
5.6k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
新卒のギーク揃ってプログラミング研修|師弟登壇2015
pixivの新卒研修(主にプログラミング研修)について師弟登壇2015で発表しました。
FromAtom
December 06, 2015
More Decks by FromAtom
See All by FromAtom
「UIは英語なのにアプリ内リンクは日本語だ!」を防ぐコツ / pixiv App Night 2024-10-24
fromatom
0
150
『SwiftUIならiOS, macOSの両方で動くエディタアプリが簡単に作れる』 と思ったら大間違いだよ! / pixiv App Night 2024-01-25
fromatom
1
660
君だけのGFMエディタを作ろう! / iOSDC Japan 2023
fromatom
0
2.4k
サポートiOSバージョンを定期的にあげる仕組みづくり / iOSDC Japan 2022
fromatom
1
4.5k
僕たちが 『Appのプライバシーに関する質問への回答』 そして『ATT』に対応するまでの物語 / iOSDC Japan 2021
fromatom
1
5k
やってみよう! iOSDCデザインスポンサー! / iOSDC Japan 2021 LT
fromatom
2
1.6k
デバッグメニューのメンテナンスが大変だったので、専用アプリを作りました。 / iOSDC Japan 2020
fromatom
9
7.7k
スクリーン配信機能の実装が大変だったので知見をお伝えします / iOSDC2019
fromatom
7
15k
🎉 esa 生誕5周年記念パーティー(\( ⁰⊖⁰)/) 🎉 / esa the 5th anniversary
fromatom
1
4.7k
Other Decks in Programming
See All in Programming
No More NoSuchMethodError
exoego
1
120
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
2.3k
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
210
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
310
Modernizing iOS Apps
seyfoyun
0
140
Engineering Biometric UX Across Android Versions | DroidKnights 2026
ryunen344
0
110
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
180
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
260
高橋メソッドでCVE解説シリーズ 〜CVE-2026-112816〜
hakkadaikon
0
170
Coding with AI: How to trust the storyteller (AWS Community Day Adria, Ljubljana 2026)
slobodan
0
130
AI駆動開発4年目の現在地(『あなたはFDEになるべきか?』イベント資料)
kumaiu
0
110
Performance Optimization With LLMs
xleitix
0
230
Featured
See All Featured
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Statistics for Hackers
jakevdp
799
230k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
So, you think you're a good person
axbom
PRO
2
2.2k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
590
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
620
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
320
Done Done
chrislema
187
17k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Marketing to machines
jonoalderson
1
6k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
890
Transcript
৽ଔͷΪʔΫἧͬͯ ϓϩάϥϛϯάݚम @bash0C7 @FromAtom
• ϐΫγϒͱʁ • ͲΜͳձࣾͳͷ͔ • Ͳ͏͍͏ਓ͕ಇ͍͍ͯΔͷ͔ • ৽ଔ࠾༻ͱݚमͲ͏ͳ͍ͬͯΔͷ͔ • ϓϩάϥϛϯάݚमʹ͍ͭͯ
• ͕͜͜ຊ ΞδΣϯμ
None
None
࡞ΓΛ୲͖ͬͯͨ • ٕज़৬ͷධՁ੍վળ • "ϙΤϜ"πʔϧͱͯ͠esa.ioಋೖ • ֤छΠϯλʔϯγοϓاը • ٕज़ަྲྀɾڭҭਪਐ •
ٕज़ใൃ৴Ϛωδϝϯτ • ٕज़৬࠾༻Ϛωδϝϯτ
࡞׆ಈ͕ΑΓָ͘͠ ͳΔΑ͏ͳࣄۀΛఏڙ • Πϥετ • খઆ • ອը • ͓ֆ͔͖
• Իָ • ൢച • ͷͮ͘Γ • ίεϓϨ • ΞΠυϧ • ΪϟϥϦʔӡӦ
w ʢ֤αʔϏεͷεΫγϣΔʣ
w ʢ֤αʔϏεͷεΫγϣΔʣ
w ʢ֤αʔϏεͷεΫγϣΔʣ
w ʢ֤αʔϏεͷεΫγϣΔʣ
w ʢ֤αʔϏεͷεΫγϣΔʣ
w ʢ֤αʔϏεͷεΫγϣΔʣ
w ʢ֤αʔϏεͷεΫγϣΔʣ
None
None
͜͏͍͏ਓͨͪ • ࣾһ100ਓͰେଟ͕։ൃΤϯδχΞ • ࣮๛Ͱ͕͔֬ͳϧʔΩʔਞ • Ұบೋบ͋ΔΩϟϦΞਞ • օ͕ʮϙΤϜʯΛॻ͘
৽ଔ࠾༻ • ݚڀɾ׆ಈ࣮๛Ͱʹ֮͑ͷ͋Δֶੜ • ֶߍɺಉਓɺݸਓ׆ಈͳͲϑΟʔϧυΘͣ • ଈܴ͑ೖΕ͍ͨͱ։ൃνʔϜ͔Βϥϒίʔϧ • ޓ͍ͷೲಘΛॏࢹ •
Ϋη͕ڧ͍ͷͰɺ߹͏ਓੌ͘߹͏͕ • ΠϯλʔϯΛඞͣܦͯ͝Ұॹͯ͠Δ • ྡͰಇؒ͘Զ͕ܾͨͪΊΔɺݱओಋͷબߟ • ࠾༻ཧ༝ෆ࠾༻ཧ༝͖ͪΜͱݴޠԽ
৽ଔݚम • OJT + Off-JTݚम • ʹΑΔ͕3:2ͷൺ • ݚमύʔτظؒ̎ϲ݄ •
ݱ৽ଔਓૣ͘pixiv࡞Γ͍ͨͱҳΔ͕ɺ ൣͳࣝεΩϧΛʹ͚ͭͯΒ͑ΔΑ͏झΛڽΒ͢ • OJTଐઌνʔϜͰϝϯλʔ͕ͭ͘ • Ϧʔμʔ/Ϛωʔδϟͱผ
ݚम༰ • Ϗγωεύʔιϯͱͯ͠ͷجૅɺձࣾʹ͍ͭͯͷࣝ ଐઌ͡Όͳ͍෦ॺͷॏཁͳࣝΛֶͿ • ࣝɾεΩϧΛֶͿ: 7ɺϓϩάϥϛϯάΛֶͿ: 7 • ϚφʔΛֶͿ:
2ɺ৫ΛֶͿ: 2 • ձࣾͷཧ೦ΛֶͿ: 3ɺձࣾͷྺ࢙ΛΔ: 1 • ݚम૯ׅ: 1 • தݎɺϕςϥϯϝϯόʔ͕ત·ͦ͠͏ʹݟʹ͘Δ • ٕज़ܥͷϏδωεܥͷԶࣗɺͬ͘͡Γड͚͍ͨΑʂ
Ͱࠂࣄۀ
ϓϩάϥϛϯάݚमͷ
ͷલʹ
͓લͩΕΑʁ
@FromAtom 2013 Hatena Intern -> Arbeit 2015 iOS Developer at
pixiv Inc. 2006 Start Programing
None
None
Ͳ͏ɺ৽ଔͰ͢
ʮ͜ͷਓ͕ఋࢠαΠυ͔ʯ
NO NO NO
ఋࢠͰ͋Γ ࢣঊͰ͋Δ
None
͕ࢣఋͰ͢
ʁʁʁ
ϓϩάϥϛϯάݚमͷ
ॾҙ
pixiv = PHP
1)1ͷ͠·ͤΜ ͔͍ͨ͜ͱແ͍͠
• HTML, CSS, JavaScript • Ruby, Java, Scala • Git
• etc... Ұൠతͳϓϩάϥϛϯάݚमʢ૾ʣ
Ұൠతͳϓϩάϥϛϯάݚमʢ૾ʣ
Ұൠతͳϓϩάϥϛϯάݚमʢ૾ʣ ࢣঊͰ͢
Ұൠతͳϓϩάϥϛϯάݚमʢ૾ʣ ࢣঊͰ͢ ఋࢠͰ͢
Ұൠతͳϓϩάϥϛϯάݚमʢ૾ʣ
Ұൠతͳϓϩάϥϛϯάݚमʢ૾ʣ Ϗγόγ
Ұൠతͳϓϩάϥϛϯάݚमʢ૾ʣ Ϗγόγ ͻ͑ʔ
ࡶͳ૾Ͱ͢
pixivͷϓϩάϥϛϯάݚम
৽ଔ͕ ৽ଔʹ ڭ͑Δ
৽ଔʢΤϯδχΞʣ͕ ৽ଔʢ૯߹৬ʣʹ ڭ͑Δ
৽ଔͨͪ • ΤϯδχΞɿ6໊ ‣ WebΞϓϦɿ4໊ ‣ iOSΞϓϦɿ2໊ • ૯߹৬ɿ5໊ ‣
σβΠφɿ2໊ ‣ اըɿ1໊ ‣ Ӧۀɿ1໊
ͲΜͳ༰ʁ
7ؒ
14࣌ؒ
߹ܭ28࣌ؒͰ
pixivΛ࡞Δ
ը૾ߘܝࣔ൘Λ࡞Δ
ཁٻ༷ • ը૾ͱίϝϯτ͕ߘͰ͖Δ • ߘ͞Εͨը૾ͱίϝϯτҰཡ͕ݟΕΔ • ը૾ʹΛ͚ͭΒΕΔ
༰·ͱΊ • 7ؒ • 14࣌ؒ ‣ 1࣌ؒʙ2࣌ؒߨٛ ‣ ͬͨ࣌ؒͰߨٛதʹग़͞Εͨ՝ΛΔ •
࠷ऴతʹ༷Λຬͨͨ͠ը૾ܝࣔ൘Λ࡞ͬͯൃද
૯߹৬֤Ґͷݴ༿
ʮແཧʯ
ٕज़৬֤Ґͷݴ༿
ʮ͍͚Δ͍͚Δʯ
ߨٛ༰ ͬ͘͟Γ
ϓϩάϥϛϯάΛ࢝ΊΑ͏ 1 Day
ϓϩάϥϛϯάΛ࢝ΊΑ͏ 1 Day • OSͱ ‣ ͳͥΤϯδχΞMacLinuxΛ͏ͷ͔ • γΣϧͱ ‣
ࠇ͍ը໘ڪාΛແ͘͢ ‣ `cd`ɺ`ls`ɺ`pwd`ͳͲΛͬͯΈΔ • ΤσΟλͱ ‣ શһAtom EditorΛར༻ ‣ ΠϯσϯτγϯλοΫεϋΠϥΠτʢ৭͚ػೳʣͷࢫຯ • ϓϩάϥϛϯάͱ ‣ rubyΛirbͰ͍ͬͯ͡ΈΔ ‣ มɺϋογϡɺ݅ذ͔Βؔ·Ͱجૅ͔Βڭ͑Δ
ϓϩάϥϛϯάΛ࢝ΊΑ͏ 1 Day rubyͰ"HelloWorld"ͯ͠تͿ ૯߹৬ͨͪΛݟͯ ٕज़৬ʹͬ͜Γ
Git ͱ GitHub 2 Day
GitͱGitHub 2 Day • Gitͱ ‣ ͳͥDropboxͰμϝͳͷ͔ ‣ ༣ศہϝιουΛར༻ͨ֓͠೦ͷઆ໌ ‣
جຊతͳίϚϯυʢadd, commit, push, pullʣͷઆ໌ • GitHubͱ ‣ ΞΧϯτͷ࡞ɾSSH伴ͷొ ‣ git push ͯ͠ΈΔ ‣ README.mdΛมߋͯ͠pushͯ͠ΈΔ ࢀߟจݙɿIUUQRJJUBDPNZVOJDPKQJUFNTCEEFGCC
WebΛ࢝ΊΑ͏ 3 Day
WebΛ࢝ΊΑ͏ 3 Day • WebαʔόʹϦΫΤετΛૹΖ͏ ‣ αʔόͱΫϥΠΞϯτͱ ‣ εςʔλείʔυʹ͍ͭͯ ‣
500͕ग़ͨΒ͙͢ʹΤϯδχΞݺΜͰ͘ΕΑͳʂ • WebαʔόΛ্ཱͪ͛ͯΈΑ͏ ‣ sinatraΛར༻ ‣ ༧Ί༻ҙͨ͠ϦϙδτϦΛGitHub͔Βclone࣮ͯ͠ߦ
DatabaseΛֶ΅͏ 4 Day
DatabaseΛֶ΅͏ 4 Day • σʔλϕʔεΛΖ͏ ‣ ͳͥExcel͡Όμϝͳͷ͔ ‣ σʔλͷਖ਼نԽ ‣
τϥϯβΫγϣϯ ‣ ݕࡧɾιʔτ • SQLจΛൃߦͯ͠ΈΑ͏ ‣ ϩʔΧϧͰSQLiteΛ্ཱ࣮ͪ͛ͯߦ ‣ ςʔϒϧ࡞ͬͨΓɺσʔλΛૠೖͨ͠Γͯ͠ࢼ͢
͜͜ΒΜ͔ΒͩΜͩΜ ݸਓ͕ࠩग़ͯ͘Δ DatabaseΛֶ΅͏ 4 Day
؆୯ͳݴ༿Λͬͯ ͍ͯͶ͍ʹϝϯλϦϯά͢Δ DatabaseΛֶ΅͏ 4 Day
POSTͱJavaScript 5 Day
POSTͱJavaScript 5 Day • POST ‣ ը૾Λखݩ͔Βܝࣔ൘ʹΞοϓϩʔυ͢ΔͨΊʹ ‣ formͷ͍ํ ‣
SinatraଆͰड͚औͬͯDBʹอଘ͍ͨ͠ • JavaScript ‣ JavaͱผͰ͢Αʢˡॏཁʣ ‣ ͳͥJavaScript͕ඞཁͳͷ͔ ‣ ܝࣔ൘ͷը૾ʹΛ͚ͭΔॲཧΛՃ
Ε͍͚ͯͳ͍ηΩϡϦςΟ 6 Day
Ε͍͚ͯͳ͍ηΩϡϦςΟ 6 Day • XSS • SQLΠϯδΣΫγϣϯ • σΟϨΫτϦτϥόʔαϧ
`ruby main.rb -e production ` Λ࣮ߦͯ͠IPΞυϨεΛڭ͑ͯԼ͍͞ Ε͍͚ͯͳ͍ηΩϡϦςΟ 6 Day
͜Ε͔ΒΈͳ͞ΜͷαΠτΛ ΤϯδχΞ͕ഁյ͠·͢ Ε͍͚ͯͳ͍ηΩϡϦςΟ 6 Day
ʮ2ͪΌΜͶΔ͕දࣔ͞ΕΔʂʯ Ε͍͚ͯͳ͍ηΩϡϦςΟ 6 Day
ʮ2ͪΌΜͶΔ͕දࣔ͞ΕΔʂʯ Ε͍͚ͯͳ͍ηΩϡϦςΟ 6 Day ʮΊͬͪΌΞϥʔτ͕ͰΔʂʯ
ʮ2ͪΌΜͶΔ͕දࣔ͞ΕΔʂʯ Ε͍͚ͯͳ͍ηΩϡϦςΟ 6 Day ʮmain.rb͕ফ͑ͨʂʯ ʮΊͬͪΌΞϥʔτ͕ͰΔʂʯ
ʮ2ͪΌΜͶΔ͕දࣔ͞ΕΔʂʯ Ε͍͚ͯͳ͍ηΩϡϦςΟ 6 Day ʮDBͷத͕ফ͑ͨʂʯ ʮmain.rb͕ফ͑ͨʂʯ ʮΊͬͪΌΞϥʔτ͕ͰΔʂʯ
ΤϯδχΞ֤Ґʮͨͷ͍͠ʯ Ε͍͚ͯͳ͍ηΩϡϦςΟ 6 Day
͔͑ͨͬͨ͜ͱ Ε͍͚ͯͳ͍ηΩϡϦςΟ 6 Day
όάා͍ Ε͍͚ͯͳ͍ηΩϡϦςΟ 6 Day
NO NO NO
ো͕͓͖ͨ࣌ʹࠔΔͷϢʔβ Ε͍͚ͯͳ͍ηΩϡϦςΟ 6 Day
ΤϯδχΞʹͰ͖ͳ͍͜ͱΛ ϢʔβͷͨΊʹͯ͠ཉ͍͠ Ε͍͚ͯͳ͍ηΩϡϦςΟ 6 Day ςϯύͬͯΔ
Ε͍͚ͯͳ͍ηΩϡϦςΟ 6 Day • ࣾʹঢ়گΛΒͤΔ • Twitter͓ΒͤͰϢʔβʹใΛಧ͚Δ • ͱʹ͔͘ϢʔβΛ҆৺ͤ͞Δ
ͻͨ͢Β࣮ 7 Day
ͻͨ͢Β࣮ 7 Day • ༷͕ຬ͍ͨͤͯΕྑ͍ • ͓͠ΖػೳศརػೳΛ͚࢝͠ΊΔ • jQueryϥΠϒϥϦΛೖΕͯ٧·ͬͨΓ͢Δ •
ͩ͜ΘΓ࢝ΊͯؤுΓ͗͢
ࢀՃऀͷײ
ࢲσβΠφʔͳͷͰɺ ීஈ͡Θ͡ΘͱλʔϛφϧΛͬͨΓͯ͠ΔͷͰ͕͢ɺ ݚमͷ͓͔͛Ͱʮλʔϛφϧ͜Θ͍ʯͱࢥΘͣʹ͢ΜͰ·͢ɻ ʢݚमલࠇ͍ը໘ා͔ͬͨʣ l
googleϏοάΫΤϦͰσʔλऔಘ͢Δͱ͖ɺ SQLΛແࣄʹ͑ͯ·͢ʂ ࠓSQLͰΞυϨεσʔλऔಘͯ͠ ͍ΖΜͳϢʔβʔʹϝʔϧૹΓ·ͨ͠ʂ l
l ࣌ؒ͑͋͞Ε σΟϨΫτϦΛ࡞ͬͨΓҠಈͨ͠Γ ࿅शΛ͍ͯ͠·͢ɻ
ͦͷޙͷޮՌ
εΫϨΠϐϯάษڧձ͠·ͤΜʁ HTML5ɾCSS3ͷษڧձ͠ͳ͍ʁ jQueryͷษڧ࠶։ͨ͠Α
͏Ε͍͠
ؾΛ͚ͭͨ Ingenuity
ؾΛ͚ͭͨ Ingenuity • Mac͔͠Θͤͳ͍ ‣ OSࠩʹΑΔϋϚΓຊ࣭త͡Όͳ͍͠ਏ͍ ‣ WindowsͰrubyॻ͔ͤΔͷߥߦ ‣ ձ͔ࣾΒΛआΓͯରԠ
• ΤσΟλAtomΛ͏ ‣ modeͱ͔Α͘Θ͔Βͳ͍ ‣ Ctrl-x sͰอଘͱ͔Α͘Θ͔Βͳ͍
ؾΛ͚ͭͨ Ingenuity • zshellͱoh-my-zshΛ͏ ‣ ༧Ίٕज़৬͕ಋೖ͓ͯ͘͠ ‣ ৭͍ͭͯΔ͔Βා͘ͳ͍ʢˡॏཁʣ • ڥߏஙٕज़৬͕͓ͬͯ͘
‣ Homebrewɼrbenvɼgem ‣ ϋϚΓ͍͢ͷʹͲ͏Ͱ͍͍Օॴ • PHP͔ͭΘͳ͍ ‣ pixivͷ৽نαʔϏεPHPͬͯͳ͍ ‣ Ruby on RailsɺScalaɺNode.js
ؾΛ͚ͭͨ Ingenuity • ͑Λڭ͑ͳ͍ ‣ ʮ͜Ε͜͏͢Δͱಈ͖·͢ʯͱڭ͑ͳ͍ ‣ άάΔҝͷώϯτίπΛڭ͑Δ ‣ ޙ͔ΒάάΕΔΑ͏ʹ͢Δ
• ͪΐͪ͘ΐ͘ݟ·ΘΔ ‣ ʮͳΜ͔ࠔͬͯͳ͍Ͱ͔͢ʁʯͱฉ͍ͯճΔ • ࠜؾΑ͑͘Δ ‣ ಉ͜͡ͱΛ10ճҎ্ฉ͔ΕΔ ‣ ͦΕ͕ਓ͋Δ ‣ ౖΒͳ͍
ͳͥݚमΛ͢Δͷ͔ Why?
ͳͥݚमΛ͢Δͷ͔ Why? • ৽ଔಉ͕࢜ྑ͘ͳΔͨΊ • ૯߹৬Ͱ࠷ݶͷٕज़ΛಘΔͨΊ • ۀʹඞཁ࠷ݶͳࣝΛಘΔ • ΤϯδχΞͷࣄͷେม͞ΛΔ
• ΤϯδχΞҒ͍ɾ͍͢͝ɾ͏·͑
MAYBE NO
ͷߟ͑ҧ͏
ΤϯδχΞͱ ʮ͖ͪΑ͘ʯ ࣄ͕Ͱ͖ΔΑ͏ʹͳΔ
ϓϩάϥϛϯά͍͠
ਓ͕ؒΔͷ͡Όͳ͍
ΤϯδχΞ≠ਓؒ
ΤϯδχΞਓؒ͡Όͳ͍ͷͰ ίϛϡχέʔγϣϯେม
গ͠ͰΤϯδχΞͷ ݴ༿Λ͑ΔΑ͏ʹ
ݴ༿͕Θ͔Δͱ ࣄΛཔΊΔ
Ұॹʹࣄ͕Ͱ͖Δ
ݴ༿͕Θ͔Δͱ ίϛϡχέʔγϣϯ͕ ָʹͳΔ
Ұॹʹ ʮ͖ͪΑ͘ʯ ࣄ͕Ͱ͖Δ
ͦͷҝͷݚम
·ͱΊ Summary
·ͱΊ Summary • pixivͰ৽ଔ͕৽ଔʹϓϩάϥϜΛڭ͑Δ • pixivͰ૯߹৬pixiv͕ͭ͘ΕΔ • ΤϯδχΞͱʮ͖ͪΑ͘ʯࣄ͕Ͱ͖Δ • Զ͕ࢣఋʹͳΔΜͩΑ͓͓͓͒ʂʂ
࠷ߴ