Slide 1

Slide 1 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ೥݄೔ ҏ౻ ߁ଠ /PEFKTΛ࢖ͬͨ ࣾ಺Ґஔ৘ใγεςϜ Node学園祭2017

Slide 2

Slide 2 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ࣗݾ঺հ ҏ౻ ߁ଠ ,PIUB *UP 5XJUUFS(JU)VC !LPI • /PEFKTݴޠαϙʔτ • ϓϥοτϑΥʔϜ։ൃຊ෦ • ΤϯδχΞΤόϯδΣϦετ

Slide 3

Slide 3 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ࣾ಺Ґஔ৘ใγεςϜͷഎܠ • ࿡ຊ໦͔ΒلඌҪொʹҠసʢ • શ'ͰϑϦʔΞυϨεɺϑϦʔεϖʔεͩΒ͚ • 誰がどこにいる? • ミーティングはどこで? • ݕࡧͰ͖ΔΑ͏ʹʂ LODGE(コワーキングスペース)

Slide 4

Slide 4 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ࣾ಺Ґஔ৘ใγεςϜʮQP[[Zʯ • ਓͷҐஔݕࡧ • ϐϯͨͯڞ༗ • ϑϩΞͷࠞࡶ౓ • ࠲੮ϩοΧʔ؅ཧ https://techblog.yahoo.co.jp/advent-calendar-2016/pozzy/

Slide 5

Slide 5 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE QP[[Zͷٕज़ • /HJOY • "OHVMBS+4ʢ༁͋ͬͯܥʣ • /PEFKTʢW • 3FEJT • .Z42-1PTUHSF42- • $JTDPͷ8J'JҐஔ৘ใऔಘػث 4人で約半年の開発(3人はJS初心者)

Slide 6

Slide 6 text

$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に上げても動いた!

Slide 7

Slide 7 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE /PEFKT &4ͰΑ͔ͬͨ͜ͱ • DBMMCBDL஍ࠈʹϋϚΒͳ͔ͬͨ • 並列処理はawait Promise.all • UIJTͷ๾໓ʢUIJTͰϋϚΒͳ͔ͬͨʣ • WBSͷ๾໓ʢείʔϓͰϋϚΒͳ͔ͬͨʣ • ϥϯλΠϜͷόʔδϣϯΞοϓ͕௒ָͩͬͨ +4ॳ৺ऀ͕ϋϚΔՕॴ͕গͳ͘ͳͬͨʂ

Slide 8

Slide 8 text

$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内でスタックが確定してしまう (別コンテクストのため呼び出し元のモ ジュールがでてこない)

Slide 9

Slide 9 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE /PEFKT &4Ͱਏ͔ͬͨ͜ͱ どこでエラーがおきたんだ…… このへんでなんとかなりそう https://nodejs.org/api/async_hooks.html https://github.com/AndreasMadsen/trace

Slide 10

Slide 10 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE /PEFKT &4 /PEFKTͱ+BWB4DSJQU͕ ޷͖ͳ͋ͳͨΛ͓଴͍ͪͯ͠·͢ʂ

Slide 11

Slide 11 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE Ϡϑʔͷ ٕज़ऀࢧԉ੍౓

Slide 12

Slide 12 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE Ϡϑʔͷ/PEFKT • 044σϕϩούʔೝఆ੍౓ • OSSへのコミットが業務にできる • 活動予算100万円/年 • ΫϦΤΠλʔ׆ಈࢧԉ੍౓ • 技術力アップに月1万円まで支給 • Node学園祭にもいける • FUD https://about.yahoo.co.jp/pr/release/2017/10/02a/

Slide 13

Slide 13 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ͓·͚

Slide 14

Slide 14 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ݴޠαϙʔτνʔϜͷ࢓ࣄ • /PEFKTͷόʔδϣϯΞοϓࠂ஌ • ࣾ಺ϓϥοτϑΥʔϜͱͷ࿈ܞ • /PEFKTηϛφʔ • /PEFKTϋϯζΦϯ • /PEF$PSF"1*ษڧձ IUUQTMJOPUJDFUVNCMSDPNQPTU

Slide 15

Slide 15 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ݴޠαϙʔτνʔϜͷ࢓ࣄ IUUQTMJOPUJDFUVNCMSDPNQPTU コアモジュールの使い方を、内部の コードを見ながら知識を深めていく。 修正点を見つけたら本体へPR

Slide 16

Slide 16 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE QP[[Zͷར༻਺ • 17೔ʢฏ೔ͷΈ • 66೔ • ݕࡧ਺dճ೔

Slide 17

Slide 17 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE QP[[Zͷ΋Ζ΋Ζ • ਓ͕෼਎͢Δ୺຤͔͠ͳ͍ • ϓϥΠόγʔ໰୊ʢτΠϨͱ͔ʣ • ৯ಊͷۭ͖۩߹

Slide 18

Slide 18 text

$PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE QP[[Zͷߏ੒ 設計 ・全ての機能を1台に詰め込む -> スケールが簡単 -> 開発環境の構築が簡単 (DBは担当部署があるので外に) @gliffy