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
67
『SwiftUIならiOS, macOSの両方で動くエディタアプリが簡単に作れる』 と思ったら大間違いだよ! / pixiv App Night 2024-01-25
fromatom
1
420
君だけのGFMエディタを作ろう! / iOSDC Japan 2023
fromatom
0
1.9k
サポートiOSバージョンを定期的にあげる仕組みづくり / iOSDC Japan 2022
fromatom
1
3.4k
僕たちが 『Appのプライバシーに関する質問への回答』 そして『ATT』に対応するまでの物語 / iOSDC Japan 2021
fromatom
1
3.7k
やってみよう! iOSDCデザインスポンサー! / iOSDC Japan 2021 LT
fromatom
2
1.3k
デバッグメニューのメンテナンスが大変だったので、専用アプリを作りました。 / iOSDC Japan 2020
fromatom
9
6.2k
スクリーン配信機能の実装が大変だったので知見をお伝えします / iOSDC2019
fromatom
7
13k
🎉 esa 生誕5周年記念パーティー(\( ⁰⊖⁰)/) 🎉 / esa the 5th anniversary
fromatom
1
4.2k
Other Decks in Programming
See All in Programming
令和7年版 あなたが使ってよいフロントエンド機能とは
mugi_uno
10
5.2k
Оптимизируем производительность блока Казначейство
lamodatech
0
950
[JAWS-UG横浜 #80] うわっ…今年のServerless アップデート、少なすぎ…?
maroon1st
0
100
asdf-ecspresso作って 友達が増えた話 / Fujiwara Tech Conference 2025
koluku
0
1.4k
テストコードのガイドライン 〜作成から運用まで〜
riku929hr
7
1.4k
ASP.NET Core の OpenAPIサポート
h455h1
0
120
良いユニットテストを書こう
mototakatsu
11
3.6k
HTML/CSS超絶浅い説明
yuki0329
0
190
traP の部内 ISUCON とそれを支えるポータル / PISCON Portal
ikura_hamu
0
180
サーバーゆる勉強会 DBMS の仕組み編
kj455
1
300
선언형 UI에서의 상태관리
l2hyunwoo
0
270
Amazon Nova Reelの可能性
hideg
0
200
Featured
See All Featured
Making Projects Easy
brettharned
116
6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
RailsConf 2023
tenderlove
29
970
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
240
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
3
180
How to train your dragon (web standard)
notwaldorf
89
5.8k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
870
Practical Orchestrator
shlominoach
186
10k
Visualization
eitanlees
146
15k
Writing Fast Ruby
sferik
628
61k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
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͕ͭ͘ΕΔ • ΤϯδχΞͱʮ͖ͪΑ͘ʯࣄ͕Ͱ͖Δ • Զ͕ࢣఋʹͳΔΜͩΑ͓͓͓͒ʂʂ
࠷ߴ