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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
130
『SwiftUIならiOS, macOSの両方で動くエディタアプリが簡単に作れる』 と思ったら大間違いだよ! / pixiv App Night 2024-01-25
fromatom
1
640
君だけのGFMエディタを作ろう! / iOSDC Japan 2023
fromatom
0
2.3k
サポートiOSバージョンを定期的にあげる仕組みづくり / iOSDC Japan 2022
fromatom
1
4.3k
僕たちが 『Appのプライバシーに関する質問への回答』 そして『ATT』に対応するまでの物語 / iOSDC Japan 2021
fromatom
1
4.8k
やってみよう! iOSDCデザインスポンサー! / iOSDC Japan 2021 LT
fromatom
2
1.6k
デバッグメニューのメンテナンスが大変だったので、専用アプリを作りました。 / iOSDC Japan 2020
fromatom
9
7.5k
スクリーン配信機能の実装が大変だったので知見をお伝えします / iOSDC2019
fromatom
7
14k
🎉 esa 生誕5周年記念パーティー(\( ⁰⊖⁰)/) 🎉 / esa the 5th anniversary
fromatom
1
4.6k
Other Decks in Programming
See All in Programming
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
170
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
140
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.2k
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
430
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
250
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
460
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
210
Performance Engineering for Everyone
elenatanasoiu
0
270
OSINT for SRE: 学術論文とポストモーテムから探る システム障害の共通パターン / SRE NEXT 2026
tomoyk
1
3.3k
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.9k
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
120
初めてのKubernetes 本番運用でハマった話
oku053
0
120
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
330
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
260
Typedesign – Prime Four
hannesfritz
42
3.1k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
How GitHub (no longer) Works
holman
316
150k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Making Projects Easy
brettharned
120
6.7k
Done Done
chrislema
186
16k
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͕ͭ͘ΕΔ • ΤϯδχΞͱʮ͖ͪΑ͘ʯࣄ͕Ͱ͖Δ • Զ͕ࢣఋʹͳΔΜͩΑ͓͓͓͒ʂʂ
࠷ߴ