Node学園祭2017.pdf

A47702f87fd83381827bdd742dea04a1?s=47 kohta ito
November 25, 2017
1.7k

 Node学園祭2017.pdf

A47702f87fd83381827bdd742dea04a1?s=128

kohta ito

November 25, 2017
Tweet

Transcript

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

  2. $PQZSJHIU©  :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ࣗݾ঺հ  ҏ౻ ߁ଠ ,PIUB *UP 5XJUUFS(JU)VC

     !LPI • /PEFKTݴޠαϙʔτ • ϓϥοτϑΥʔϜ։ൃຊ෦ • ΤϯδχΞΤόϯδΣϦετ
  3. $PQZSJHIU©  :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ࣾ಺Ґஔ৘ใγεςϜͷഎܠ  • ࿡ຊ໦͔ΒلඌҪொʹҠసʢ • શ'ͰϑϦʔΞυϨεɺϑϦʔεϖʔεͩΒ͚ •

    誰がどこにいる? • ミーティングはどこで? • ݕࡧͰ͖ΔΑ͏ʹʂ LODGE(コワーキングスペース)
  4. $PQZSJHIU©  :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ࣾ಺Ґஔ৘ใγεςϜʮQP[[Zʯ  • ਓͷҐஔݕࡧ • ϐϯͨͯڞ༗ •

    ϑϩΞͷࠞࡶ౓ • ࠲੮ϩοΧʔ؅ཧ https://techblog.yahoo.co.jp/advent-calendar-2016/pozzy/
  5. $PQZSJHIU©  :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE QP[[Zͷٕज़  • /HJOY • "OHVMBS+4ʢ༁͋ͬͯܥʣ •

    /PEFKTʢW • 3FEJT • .Z42-1PTUHSF42- • $JTDPͷ8J'JҐஔ৘ใऔಘػث 4人で約半年の開発(3人はJS初心者)
  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に上げても動いた!
  7. $PQZSJHIU©  :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE /PEFKT &4ͰΑ͔ͬͨ͜ͱ  • DBMMCBDL஍ࠈʹϋϚΒͳ͔ͬͨ • 並列処理はawait

    Promise.all • UIJTͷ๾໓ʢUIJTͰϋϚΒͳ͔ͬͨʣ • WBSͷ๾໓ʢείʔϓͰϋϚΒͳ͔ͬͨʣ • ϥϯλΠϜͷόʔδϣϯΞοϓ͕௒ָͩͬͨ +4ॳ৺ऀ͕ϋϚΔՕॴ͕গͳ͘ͳͬͨʂ
  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内でスタックが確定してしまう (別コンテクストのため呼び出し元のモ ジュールがでてこない)
  9. $PQZSJHIU©  :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE /PEFKT &4Ͱਏ͔ͬͨ͜ͱ  どこでエラーがおきたんだ…… このへんでなんとかなりそう https://nodejs.org/api/async_hooks.html https://github.com/AndreasMadsen/trace

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

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

  12. $PQZSJHIU©  :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE Ϡϑʔͷ/PEFKT  • 044σϕϩούʔೝఆ੍౓ • OSSへのコミットが業務にできる •

    活動予算100万円/年 • ΫϦΤΠλʔ׆ಈࢧԉ੍౓ • 技術力アップに月1万円まで支給 • Node学園祭にもいける • FUD https://about.yahoo.co.jp/pr/release/2017/10/02a/
  13. $PQZSJHIU©  :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE $PQZSJHIU©  :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ͓·͚

  14. $PQZSJHIU©  :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ݴޠαϙʔτνʔϜͷ࢓ࣄ  • /PEFKTͷόʔδϣϯΞοϓࠂ஌ • ࣾ಺ϓϥοτϑΥʔϜͱͷ࿈ܞ •

    /PEFKTηϛφʔ • /PEFKTϋϯζΦϯ • /PEF$PSF"1*ษڧձ IUUQTMJOPUJDFUVNCMSDPNQPTU
  15. $PQZSJHIU©  :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE ݴޠαϙʔτνʔϜͷ࢓ࣄ  IUUQTMJOPUJDFUVNCMSDPNQPTU コアモジュールの使い方を、内部の コードを見ながら知識を深めていく。 修正点を見つけたら本体へPR

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

    ݕࡧ਺dճ೔
  17. $PQZSJHIU©  :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE QP[[Zͷ΋Ζ΋Ζ  • ਓ͕෼਎͢Δ୺຤͔͠ͳ͍ • ϓϥΠόγʔ໰୊ʢτΠϨͱ͔ʣ •

    ৯ಊͷۭ͖۩߹
  18. $PQZSJHIU©  :BIPP+BQBO$PSQPSBUJPO"MM3JHIUT3FTFSWFE QP[[Zͷߏ੒  設計 ・全ての機能を1台に詰め込む -> スケールが簡単 ->

    開発環境の構築が簡単 (DBは担当部署があるので外に) @gliffy