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
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
470
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
410
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
GitHub's CSS Performance
jonrohan
1033
470k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
410
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Visualization
eitanlees
152
17k
A Tale of Four Properties
chriscoyier
163
24k
Become a Pro
speakerdeck
PRO
31
6k
Optimising Largest Contentful Paint
csswizardry
37
3.8k
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