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
新卒のギーク揃ってプログラミング研修|師弟登壇2015
Search
FromAtom
December 06, 2015
Programming
4
5.4k
新卒のギーク揃ってプログラミング研修|師弟登壇2015
pixivの新卒研修(主にプログラミング研修)について師弟登壇2015で発表しました。
FromAtom
December 06, 2015
Tweet
Share
More Decks by FromAtom
See All by FromAtom
「UIは英語なのにアプリ内リンクは日本語だ!」を防ぐコツ / pixiv App Night 2024-10-24
fromatom
0
75
『SwiftUIならiOS, macOSの両方で動くエディタアプリが簡単に作れる』 と思ったら大間違いだよ! / pixiv App Night 2024-01-25
fromatom
1
470
君だけのGFMエディタを作ろう! / iOSDC Japan 2023
fromatom
0
2k
サポートiOSバージョンを定期的にあげる仕組みづくり / iOSDC Japan 2022
fromatom
1
3.6k
僕たちが 『Appのプライバシーに関する質問への回答』 そして『ATT』に対応するまでの物語 / iOSDC Japan 2021
fromatom
1
3.8k
やってみよう! iOSDCデザインスポンサー! / iOSDC Japan 2021 LT
fromatom
2
1.3k
デバッグメニューのメンテナンスが大変だったので、専用アプリを作りました。 / iOSDC Japan 2020
fromatom
9
6.3k
スクリーン配信機能の実装が大変だったので知見をお伝えします / iOSDC2019
fromatom
7
13k
🎉 esa 生誕5周年記念パーティー(\( ⁰⊖⁰)/) 🎉 / esa the 5th anniversary
fromatom
1
4.3k
Other Decks in Programming
See All in Programming
Productivity is Messing Around and Having Fun
hollycummins
0
170
Django for Data Science (Boston Python Meetup, March 2025)
wsvincent
0
280
Going Structural with Named Tuples
bishabosha
0
190
Develop Faster With FrankenPHP
dunglas
2
2.9k
AtCoder Heuristic First-step Vol.1 講義スライド(山登り法・焼きなまし法編)
takumi152
4
1k
Day0 初心者向けワークショップ実践!ソフトウェアテストの第一歩
satohiroyuki
0
510
体得しよう!RSA暗号の原理と解読
laysakura
3
550
AIコーディングワークフローの試行 〜AIエージェント×ワークフローでの自動化を目指して〜
rkaga
2
1.3k
AtCoder Heuristic First-step Vol.1 講義スライド
terryu16
3
1.1k
The Weight of Data: Rethinking Cloud-Native Systems for the Age of AI
hollycummins
0
220
MCP世界への招待: AIエンジニアが創る次世代エージェント連携の世界
gunta
4
830
私の愛したLaravel 〜レールを超えたその先へ〜
kentaroutakeda
12
3.7k
Featured
See All Featured
KATA
mclloyd
29
14k
Raft: Consensus for Rubyists
vanstee
137
6.9k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.6k
Gamification - CAS2011
davidbonilla
81
5.2k
How to Think Like a Performance Engineer
csswizardry
22
1.5k
Producing Creativity
orderedlist
PRO
344
40k
Speed Design
sergeychernyshev
28
870
Building Applications with DynamoDB
mza
94
6.3k
Scaling GitHub
holman
459
140k
Designing for humans not robots
tammielis
251
25k
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͕ͭ͘ΕΔ • ΤϯδχΞͱʮ͖ͪΑ͘ʯࣄ͕Ͱ͖Δ • Զ͕ࢣఋʹͳΔΜͩΑ͓͓͓͒ʂʂ
࠷ߴ