Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Node学園祭2017.pdf

kohta ito
November 25, 2017
2k

 Node学園祭2017.pdf

kohta ito

November 25, 2017
Tweet

Transcript

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

    View Slide

  2. $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE
    ࣗݾ঺հ

    ҏ౻ ߁ଠ ,PIUB *UP
    5XJUUFS(JU)VC !LPI
    • /PEFKTݴޠαϙʔτ
    • ϓϥοτϑΥʔϜ։ൃຊ෦
    • ΤϯδχΞΤόϯδΣϦετ

    View Slide

  3. $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE
    ࣾ಺Ґஔ৘ใγεςϜͷഎܠ

    • ࿡ຊ໦͔ΒلඌҪொʹҠసʢ

    • શ'ͰϑϦʔΞυϨεɺϑϦʔεϖʔεͩΒ͚
    • 誰がどこにいる?
    • ミーティングはどこで?
    • ݕࡧͰ͖ΔΑ͏ʹʂ
    LODGE(コワーキングスペース)

    View Slide

  4. $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE
    ࣾ಺Ґஔ৘ใγεςϜʮQP[[Zʯ

    • ਓͷҐஔݕࡧ
    • ϐϯͨͯڞ༗
    • ϑϩΞͷࠞࡶ౓
    • ࠲੮ϩοΧʔ؅ཧ
    https://techblog.yahoo.co.jp/advent-calendar-2016/pozzy/

    View Slide

  5. $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE
    QP[[Zͷٕज़

    • /HJOY
    • "OHVMBS+4ʢ༁͋ͬͯܥʣ
    • /PEFKTʢW

    • 3FEJT
    • .Z42-1PTUHSF42-
    • $JTDPͷ8J'JҐஔ৘ใऔಘػث
    4人で約半年の開発(3人はJS初心者)

    View Slide

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

    View Slide

  7. $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE
    /PEFKT &4ͰΑ͔ͬͨ͜ͱ

    • DBMMCBDL஍ࠈʹϋϚΒͳ͔ͬͨ
    • 並列処理はawait Promise.all
    • UIJTͷ๾໓ʢUIJTͰϋϚΒͳ͔ͬͨʣ
    • WBSͷ๾໓ʢείʔϓͰϋϚΒͳ͔ͬͨʣ
    • ϥϯλΠϜͷόʔδϣϯΞοϓ͕௒ָͩͬͨ
    +4ॳ৺ऀ͕ϋϚΔՕॴ͕গͳ͘ͳͬͨʂ

    View Slide

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

    View Slide

  9. $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE
    /PEFKT &4Ͱਏ͔ͬͨ͜ͱ

    どこでエラーがおきたんだ……
    このへんでなんとかなりそう
    https://nodejs.org/api/async_hooks.html
    https://github.com/AndreasMadsen/trace

    View Slide

  10. $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE
    /PEFKT &4

    /PEFKTͱ+BWB4DSJQU͕
    ޷͖ͳ͋ͳͨΛ͓଴͍ͪͯ͠·͢ʂ

    View Slide

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

    View Slide

  12. $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE
    Ϡϑʔͷ/PEFKT

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

    View Slide

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

    View Slide

  14. $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE
    ݴޠαϙʔτνʔϜͷ࢓ࣄ

    • /PEFKTͷόʔδϣϯΞοϓࠂ஌
    • ࣾ಺ϓϥοτϑΥʔϜͱͷ࿈ܞ
    • /PEFKTηϛφʔ
    • /PEFKTϋϯζΦϯ
    • /PEF$PSF"1*ษڧձ
    IUUQTMJOPUJDFUVNCMSDPNQPTU

    View Slide

  15. $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE
    ݴޠαϙʔτνʔϜͷ࢓ࣄ

    IUUQTMJOPUJDFUVNCMSDPNQPTU
    コアモジュールの使い方を、内部の
    コードを見ながら知識を深めていく。
    修正点を見つけたら本体へPR

    View Slide

  16. $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE
    QP[[Zͷར༻਺

    • 17೔ʢฏ೔ͷΈ
    • 66೔
    • ݕࡧ਺dճ೔

    View Slide

  17. $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE
    QP[[Zͷ΋Ζ΋Ζ

    • ਓ͕෼਎͢Δ୺຤͔͠ͳ͍
    • ϓϥΠόγʔ໰୊ʢτΠϨͱ͔ʣ
    • ৯ಊͷۭ͖۩߹

    View Slide

  18. $PQZSJHIU© :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE
    QP[[Zͷߏ੒

    設計
    ・全ての機能を1台に詰め込む
    -> スケールが簡単
    -> 開発環境の構築が簡単
    (DBは担当部署があるので外に)
    @gliffy

    View Slide