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
Node学園祭2017.pdf
Search
kohta ito
November 25, 2017
2.4k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Node学園祭2017.pdf
kohta ito
November 25, 2017
More Decks by kohta ito
See All by kohta ito
tfcon2022.pdf
koh110
0
1.7k
nodejs-commit
koh110
0
1k
Angular and me
koh110
0
2.1k
bonfire frontend#1
koh110
3
1.8k
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
Darren the Foodie - Storyboard
khoart
PRO
3
3.6k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
390
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
520
Music & Morning Musume
bryan
47
7.3k
BBQ
matthewcrist
89
10k
Git: the NoSQL Database
bkeepers
PRO
432
67k
We Are The Robots
honzajavorek
0
300
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.3k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Transcript
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ݄ ҏ౻ ߁ଠ /PEFKTΛͬͨ ࣾҐஔใγεςϜ Node学園祭2017
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ࣗݾհ ҏ౻ ߁ଠ ,PIUB *UP 5XJUUFS(JU)VC
!LPI • /PEFKTݴޠαϙʔτ • ϓϥοτϑΥʔϜ։ൃຊ෦ • ΤϯδχΞΤόϯδΣϦετ
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ࣾҐஔใγεςϜͷഎܠ • ຊ͔ΒلඌҪொʹҠసʢ • શ'ͰϑϦʔΞυϨεɺϑϦʔεϖʔεͩΒ͚ •
誰がどこにいる? • ミーティングはどこで? • ݕࡧͰ͖ΔΑ͏ʹʂ LODGE(コワーキングスペース)
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ࣾҐஔใγεςϜʮQP[[Zʯ • ਓͷҐஔݕࡧ • ϐϯͨͯڞ༗ •
ϑϩΞͷࠞࡶ • ࠲੮ϩοΧʔཧ https://techblog.yahoo.co.jp/advent-calendar-2016/pozzy/
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE QP[[Zͷٕज़ • /HJOY • "OHVMBS+4ʢ༁͋ͬͯܥʣ •
/PEFKTʢW • 3FEJT • .Z42-1PTUHSF42- • $JTDPͷ8J'JҐஔใऔಘػث 4人で約半年の開発(3人はJS初心者)
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE &4-PWF exports.get = async (req, res)
=> { const { permission } = checkRole(req) if (!permission) { throw new AuthError('permission error') } const { id, name } = req.query const where = db.getQuery(id, name) const { office } = await db.getOffice(where) return { status: 200, office } } 本当はまだ大部分がgenerator + co (開発時はv4 https://techblog.yahoo.co.jp/javascript/nodejs/Node-es6/ 設計 ・フロー制御はasync/await ・Node.js v8に上げても動いた!
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE /PEFKT &4ͰΑ͔ͬͨ͜ͱ • DBMMCBDLࠈʹϋϚΒͳ͔ͬͨ • 並列処理はawait
Promise.all • UIJTͷ໓ʢUIJTͰϋϚΒͳ͔ͬͨʣ • WBSͷ໓ʢείʔϓͰϋϚΒͳ͔ͬͨʣ • ϥϯλΠϜͷόʔδϣϯΞοϓָ͕ͩͬͨ +4ॳ৺ऀ͕ϋϚΔՕॴ͕গͳ͘ͳͬͨʂ
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE /PEFKT &4Ͱਏ͔ͬͨ͜ͱ • Τϥʔॲཧ • スタックトレースが出ないパターンがある
const m = require('./mymodule') const main = async () => { await m.func() } main().catch((e) => { console.log(e) }) exports.func = () => { return new Promise((resovle, reject) => { setTimeout(() => { reject(new Error('hoge error')) }) }) } callback内でスタックが確定してしまう (別コンテクストのため呼び出し元のモ ジュールがでてこない)
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE /PEFKT &4Ͱਏ͔ͬͨ͜ͱ どこでエラーがおきたんだ…… このへんでなんとかなりそう https://nodejs.org/api/async_hooks.html https://github.com/AndreasMadsen/trace
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE /PEFKT &4 /PEFKTͱ+BWB4DSJQU͕ ͖ͳ͋ͳͨΛ͓͍ͪͯ͠·͢ʂ
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE Ϡϑʔͷ ٕज़ऀࢧԉ੍
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE Ϡϑʔͷ/PEFKT • 044σϕϩούʔೝఆ੍ • OSSへのコミットが業務にできる •
活動予算100万円/年 • ΫϦΤΠλʔ׆ಈࢧԉ੍ • 技術力アップに月1万円まで支給 • Node学園祭にもいける • FUD https://about.yahoo.co.jp/pr/release/2017/10/02a/
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ͓·͚
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ݴޠαϙʔτνʔϜͷࣄ • /PEFKTͷόʔδϣϯΞοϓࠂ • ࣾϓϥοτϑΥʔϜͱͷ࿈ܞ •
/PEFKTηϛφʔ • /PEFKTϋϯζΦϯ • /PEF$PSF"1*ษڧձ IUUQTMJOPUJDFUVNCMSDPNQPTU
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ݴޠαϙʔτνʔϜͷࣄ IUUQTMJOPUJDFUVNCMSDPNQPTU コアモジュールの使い方を、内部の コードを見ながら知識を深めていく。 修正点を見つけたら本体へPR
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE QP[[Zͷར༻ • 17ʢฏͷΈ • 66 •
ݕࡧdճ
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE QP[[ZͷΖΖ • ਓ͕͢Δ͔͠ͳ͍ • ϓϥΠόγʔʢτΠϨͱ͔ʣ •
৯ಊͷۭ͖۩߹
$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE QP[[Zͷߏ 設計 ・全ての機能を1台に詰め込む -> スケールが簡単 ->
開発環境の構築が簡単 (DBは担当部署があるので外に) @gliffy