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

祝Node-v10リリース これまでのNodeの振り返り

祝Node-v10リリース これまでのNodeの振り返り

Shigeki Ohtsu

April 27, 2018
Tweet

More Decks by Shigeki Ohtsu

Other Decks in Technology

Transcript

  1. /PEFKTͷΞʔΩςΫνϟ 04 XJO NBD TPMBSJT GSFFCTE PQFOCTE MJOVY BOESPJE BJY

    DMPVEBCJ  $16 BSN BSN JB NJQT NJQTFM NJQTFM QQD QQD Y Y Y Y@ T TY MJCVW 7 0QFO44- [MJC IUUQQBSTFS OHIUUQ DBSFT JDVTNBMM OPEFJOTQFDU BDPSO /PEF$PSF $ /PEF$PSF +4 5IJSE1BSUZ.PEVMFT
  2. "TZOD*UFSBUPS"TZOD(FOFSBUPS TUBHF const http = require('http'); const url = new

    URL('http://html5.ohtsu.org/'); function promisifiedGet(url) { return new Promise((resolve, reject) => { http.get(url, (res) => { res.statusCode === 200 ? resolve(res) : reject(new Error('No response data')); }); }); } async function asyncHttpGet(url) { const res = await promisifiedGet(url); let data = ''; res.setEncoding('utf-8'); for await (const chunk of res) { data += chunk; } console.log('Response: ', data); } asyncHttpGet(url).catch((e) => { console.log('Error: ', e.message); });; GPSBXBJUPG͸ɺ3FBEBCMF4USFBNͱΊͪΌ૬ੑ͕ྑ͍ ৄ͘͠͸4USFBN<4ZNCPMBTZOD*UFSBUPS>ͷ঺հͰ
  3. 1SPNJTFpOBMMZ TUBHF const http = require('http'); const url = new

    URL('http://html5.ohtsu.org/'); function promisifiedGet(url) { return new Promise((resolve, reject) => { http.get(url, (res) => { res.statusCode === 200 ? resolve(res) : reject(new Error('No response data')); }); }); } promisifiedGet(url).then((res) => { let data = ''; res.setEncoding('utf-8'); res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { console.log('Response: ', data); }); }).catch((e) => { console.log('Error: ', e.message); }).finally(() => { console.log('final called'); }); BTZODGVODUJPOͰUSZʙDBUDIʙpOBMMZ͕࢖͑Δ͔Βͦͬͪͷํ͕ྑ͘ͳ͍ʁ
  4. 3FH&YQOBNFEDBQUVSF TUBHF DPOTUQBUUFSO ZFBSaE\^  NPOUIaE\^  EBZaE\^ V DPOTUSFTVMUQBUUFSOFYFD

      DPOTPMFMPH SFTVMUHSPVQT  OPEFSFHFY@OBNFE@DBQUVSFKT \ZFBS NPOUI EBZ^ DPOTPMFMPH aQ\/VNCFS^VUFTU ᶃ  DPOTPMFMPH aQ\"MQIBCFUJD^VUFTU େ௡  DPOTPMFMPH ?aQ\4DSJQU@&YUFOTJPOT)JSBHBOB^ VUFTU ͓͓ͭ  DPOTPMFMPH ?aQ\4DSJQU@&YUFOTJPOT)JSBHBOB^ VUFTU େ௡  3FH&YQ6OJDPEFQSPQFSUZFTDBQFT TUBHF OPEFVOJDPEF@FTDBQFE@SFHFYKT USVF USVF USVF GBMTF ໊෇͚Ͱ͖Δ άϧʔϓΦϒδΣΫτͰड͚Δ 6OJDPEF༻ͷϓϩύ ςΟ৭ʑ
  5. 0QUJPOBMDBUDICJOEJOH TUBHF USZ\ UISPXOFX&SSPS IPHF  ^DBUDI\ DPOTPMFMPH DBVHIU 

    ^ DPOTPMFMPH FOE  F ͕͍Βͳ͍ 4USJOHQSPUPUZQFUSJN4UBSUUSJN&OE TUBHF  DPOTUTUSIPHFGVHB DPOTPMFMPH TUSUSJN4UBSU  DPOTPMFMPH TUSUSJN&OE  OPEFTUSJOH@USJN@TUBSU@FOEKT IPHFGVHB IPHFGVHB લۭന࡟আ ޙۭന࡟আ
  6. 'VODUJPOQSPUPUZQFUP4USJOH3FWJTJPO TUBHF GVODUJPO IPHFGVHB GPP \^ DPOTPMFMPH GPPUP4USJOH  OPEFGVODUJPO@UP@TUSJOHKT

    GVODUJPOGPP \^ OPEFGVODUJPO@UP@TUSJOHKT GVODUJPO IPHFGVHB GPP \^ /PEFWͰ͸ɺ /PEFWʹͳΔͱɺ ίϝϯτͷೖͬͨ'VODUJPO 7̔ͷΞοϓσʔτͰଞʹ΋ηΩϡϦςΟରࡦ΍ੑೳ޲্ͳͲ͍ Ζ͍Ζͨ͘͞Μ͋Γ·͢ɻ
  7. /PEFW %FQSFDBUJPOT ओཁͳ΋ͷ͚ͩ w SFRVJSF BTTFSU  %PDPOMZ SFRVJSF BTTFSU

    TUSJDUΛ࢖͓͏ w QSPDFTTCJOEJOH VUJM JTܕνΣοΫ %PDPOMZXJUIXBSO VUJMUZQFTJT Λ࢖͓͏ w #V⒎FSͷSFBEXSJUFͷOP"TTFSUҾ਺ &P-ੑೳ্໰୊ͳ͠ w DSZQUPDSFBUF$JQIFSDSFBUF%FDJQIFS %PDPOMZDJQIFS*7 EFDJQIFS*7Λ࢖͓͏ w UMT/1/ 3VOUJNF"-1/Λ࢖͓͏
  8. &SSPSDPEF w ैདྷ/PEFίΞͷΤϥʔϝοηʔδ&SSPSNFTTBHF͸݁ߏࣗ ༝ʹ෇͚ΒΕ͖ͯͨɻ w ͔͠͠UZQP΍هड़ؒҧ͍ͳͲͷमਖ਼͕ඞཁʹͳΔͱϝοηʔ δΛνΣοΫ͍ͯ͠ΔϞδϡʔϧ͕͋ͬͯ4FNWFS.BKPSʹ ͳͬͯ͠·͏໰୊͕ൃੜɻ w ౷Ұతʹ&SSPSDPEFΛ෇༩ɻϝοηʔδमਖ਼ͷࣗ༝౓Λߴ͘

    ͨ͠ɻ DPOTUIUUQSFRVJSF IUUQ  DPOTUQPSU DPOTUTFSWFSIUUQDSFBUF4FSWFS MJTUFO QPSU  \ DPOTPMFMPH -JTUFOJOHPO QPSU  ^ PO FSSPS  F \ JG FNFTTBHFMJTUFO&"%%3*/64& QPSU \ DPOTPMFFSSPS QPSU JTVTFE  ^ ^  DPOTUIUUQSFRVJSF IUUQ  DPOTUQPSU DPOTUTFSWFSIUUQDSFBUF4FSWFS MJTUFO QPSU  \ DPOTPMFMPH -JTUFOJOHPO QPSU  ^ PO FSSPS  F \ JG FDPEF&"%%3*/64& \ DPOTPMFFSSPS QPSU JTVTFE  ^ ^ 
  9. 4USFBNpOJTIFE TUSFBN DC w TUSFBN్͕தͰBCPSU͞ΕΔͱFOE΍pOJTIΠϕϯ τ͕FNJU͞Εͳ͍ɻ w TUSFBN͕SFBEBCMF XSJUBCMFͰͳ͘ͳͬͨ͜ͱΛͪΌ ΜͱDBMMCBDL௨஌Ͱ͖ΔΑ͏4USFBNpOJTIFEΛಋೖ

    DPOTUIUUQSFRVJSF IUUQ  DPOTUVSMOFX63- IUUQIUNMPIUTVPSH  DPOTUDMJFOUIUUQHFU VSM  SFT \ SFTSFTVNF  ^ PO pOJTI  \ DPOTPMFMPH pOJTIFE  ^  DMJFOUBCPSU  DPOTU\pOJTIFE^SFRVJSF TUSFBN  DPOTUIUUQSFRVJSF IUUQ  DPOTUVSMOFX63- IUUQIUNMPIUTVPSH  DPOTUDMJFOUIUUQHFU VSM  SFT \ SFTSFTVNF  ^ PO pOJTI  \ DPOTPMFMPH pOJTIFE  ^  pOJTIFE DMJFOU  FSS \ DPOTPMFMPH pOJTIFEFSSPS FSSNFTTBHF  ^  DMJFOUBCPSU  OPEFTUSFBN@pOJTIFEKT  OPEFTUSFBN@pOJTIFEKT pOJTIFEFSSPS1SFNBUVSFDMPTF
  10. 4USFBNQJQFMJOF TUSFBNT DC w ैདྷͷQJQFͰ͸FSSPSQSPQBHBUJPOʹ໰୊͕͋ͬͨɻ w pOJTIFEΛ͔·͢͜ͱͰɺQJQFMJOFͰFSSPSॲཧ͕Մೳʹ DPOTUGTSFRVJSF GT 

    DPOTU[MJCSFRVJSF [MJC  DPOTUpMFOPU@FYJTUUYU GTDSFBUF3FBE4USFBN pMF  QJQF [MJCDSFBUF([JQ  QJQF GTDSFBUF8SJUF4USFBN pMF H[  PO FSSPS  F \ DPOTPMFMPH &SSPS FNFTTBHF  ^  DPOTUGTSFRVJSF GT  DPOTU[MJCSFRVJSF [MJC  DPOTU\QJQFMJOF^SFRVJSF TUSFBN  DPOTUpMFOPU@FYJTUUYU QJQFMJOF  GTDSFBUF3FBE4USFBN pMF  [MJCDSFBUF([JQ  GTDSFBUF8SJUF4USFBN pMF H[   F \ JG F  DPOTPMFMPH &SSPS FNFTTBHF  ^  OPEFTUSFBN@QJQFKT FWFOUTKT UISPXFS6OIBOEMFEFSSPSFWFOU ? &SSPS&/0&/5OPTVDIpMFPSEJSFDUPSZ PQFOOPU@FYJTUUYU &NJUUFEFSSPSFWFOUBU BUGTKT BU'43FR8SBQPODPNQMFUF GTKT OPEFTUSFBN@QJQFMJOFKT &SSPS&/0&/5OPTVDIpMFPSEJSFDUPSZ PQFOOPU@FYJTUUYU
  11. SFBEBCMF<4ZNCPMBTZOD*UFSBUPS> w SFBEBCMFTUSFBN͕શ෦"TZOD*UFSBUPSʹ w GPSBXBJUPG͕࢖͑Δ &YQFSJNFOUBM"1* DPOTUGTSFRVJSF GT  DPOTUpMFIPHFUYU

    BTZODGVODUJPOQSJOU SFBEBCMF \ SFBEBCMFTFU&ODPEJOH VUG  MFUEBUB GPSBXBJU DPOTULPGSFBEBCMF \ EBUB L ^ DPOTPMFMPH EBUB  ^ QSJOU GTDSFBUF3FBE4USFBN pMF DBUDI DPOTPMFMPH  OPEFTUSFBN@BTZODJUFSBUPSKT OPEF &YQFSJNFOUBM8BSOJOH3FBEBCMF<4ZNCPMBTZOD*UFSBUPS>JTBOFYQFSJNFOUBMGFBUVSF5IJTGFBUVSFDPVMEDIBOHFBUBOZUJNF BBBB
  12. DPOTUIUUQSFRVJSF IUUQ  DPOTUVSMOFX63- IUUQIUNMPIUTVPSH  GVODUJPOQSPNJTJpFE(FU VSM \ SFUVSOOFX1SPNJTF

    SFTPMWF SFKFDU \ IUUQHFU VSM  SFT \ SFTTUBUVT$PEF SFTPMWF SFT SFKFDU OFX&SSPS /PSFTQPOTFEBUB  ^  ^  ^ BTZODGVODUJPOBTZOD)UUQ(FU VSM \ MFUSFT USZ\ SFTBXBJUQSPNJTJpFE(FU VSM  ^DBUDI F \ DPOTPMFMPH FSSPS FNFTTBHF  SFUVSO ^ MFUEBUB SFTTFU&ODPEJOH VUG  GPSBXBJU DPOTUDIVOLPGSFT \ EBUB DIVOL ^ DPOTPMFMPH EBUB  ^ BTZOD)UUQ(FU VSM  readable[Symbol.asyncIterator] HTTP GETͷαϯϓϧίʔυ શͯͷ3FBEBCMF4USFBN͕ BTZOD*UFSBUPSγϯϘϧΛ࣋ ͭͷͰGPSBXBJU PG Ͱ PO EBUB  ͷΠϕϯτͰ SFTPMWF͕Ͱ͖Δɻ ैདྷ૬ੑ͕ѱ͔ͬͨTUSFBN ͱ1SPNJTFͱͷؔ܎͕վળɻ ͖ͬ͢Γɺ͖Ε͍ʂʂ &YQFSJNFOUBM"1*
  13. DPOTUIUUQSFRVJSF IUUQ  DPOTUQJQFMJOFSFRVJSF VUJM QSPNJTJGZ SFRVJSF TUSFBN QJQFMJOF 

    DPOTUNBY4J[F GVODUJPOQSPNJTJpFE(FU VSM \ SFUVSOOFX1SPNJTF SFTPMWF SFKFDU \ DPOTUDMJFOUIUUQHFU VSM  SFT \ JG SFTIFBEFST<DPOUFOUMFOHUI>NBY4J[F \ SFTPMWF SFT  ^FMTF\ DMJFOUBCPSU  SFKFDU OFX&SSPS 3FTQPOTFEBUBJTUPPMBSHF  ^ ^ ^  ^ BTZODGVODUJPOBTZOD1JQFMJOF VSM TFSWFS@SFT \ DPOTUDMJFOU@SFTBXBJUQSPNJTJpFE(FU VSM  TFSWFS@SFTXSJUF)FBE  \ 5SBOTGFS&ODPEJOHDIVOL $POUFOU&ODPEJOHH[JQ  $POUFOU5ZQFDMJFOU@SFTIFBEFST<DPOUFOUUZQF>^  BXBJUQJQFMJOF  DMJFOU@SFT  SFRVJSF [MJC DSFBUF([JQ  TFSWFS@SFT   DPOTPMFMPH 1JQFMJOFTVDDFFEFE  ^ DPOTUTFSWFSIUUQDSFBUF4FSWFS SFR SFT \ DPOTUVSMOFX63- IUUQIUNMPIUTVPSH  BTZOD1JQFMJOF VSM SFT DBUDI F \ DPOTPMFFSSPS 1JQFMJOFFSSPS FNFTTBHF  SFTXSJUF)FBE  \$POUFOU5ZQFUFYUQMBJO^  SFTFOE FNFTTBHF ^ MJTUFO   "TZOD4USFBNQJQFMJOF ͷαϯϓϧίʔυ w όοΫΤϯυ͔ΒίϯςϯπΛऔಘͯ͠ ѹॖͯ͠ΫϥΠΞϯτʹฦ͢؆୯ͳ 3FWFSTF1SPYZ w L#Ҏ্ͷίϯςϯπ͸αΠζ௒աͰ Τϥʔʹ͢Δ࢓༷ɻ్தͰIUUQBCPSU ͤ͞Δɻ w VUJMQSPNJTJGZͰ4USFBNQJQFMJOFΛ 1SPNJTFԽ w QJQFͰͭͳ͙TUSFBNΛQJQFMJOFͰฒ΂ͯ 1SPNJTFͷղܾΛ଴ͭ w QJQFதͷTUSFBNͰͷΤϥʔ SFKFDU Λ QJQFMJOF͔ΒͪΌΜͱDBUDIͯ͠ϋϯυ ϦϯάͰ͖Δ
  14. IUUQ DPOTUIUUQSFRVJSF IUUQ  DPOTUTFSWFSIUUQDSFBUF4FSWFS SFR SFT \ SFTXSJUF1SPDFTTJOH 

    SFTXSJUF)FBE  \DPOUFOUUZQFUFYUQMBJO^  SFTFOE %POF  ^ MJTUFO   \ DPOTUDMJFOUIUUQHFU \QPSUTFSWFSBEESFTT QPSU^  SFT \ SFTSFTVNF  SFTPO FOE  \ TFSWFSDMPTF  ^  ^  DMJFOUPO JOGPSNBUJPO  SFT \ DPOTPMFMPH SFTTUBUVT$PEF  ^  ^  StatusCode 102 Processing ΛૹΔ 10XͷϨεϙϯεͷΠϕϯτ͕औΕΔ • 100 Continue, RFC7231 • 102 Processing, RFC2518 • 103 Early Hints, RFC8297 ͨͩ͠101 Switching Protocols (Upgrade) ͸ର৅֎
  15. GTQSPNJTFT w GTܥͷ"1*Λશͯ1SPNJTFԽ w "TZOD'VODUJPOͰฦͬͯ͘Δ w 1SPNJTF"TZODؔ਺ͷωΠςΟϒԽɺੑೳ޲্Ͱ&YQFSJNFOUBM"1*ʹ &YQFSJNFOUBM"1* DPOTU\TUBU^SFRVJSF GT

     DPOTUpMFIPHFUYU GVODUJPOQSPNJTJpFE'T4UBU pMF \ SFUVSOOFX1SPNJTF SFTPMWF SFKFDU \ TUBU pMF  FSS T \ JG FSS \ SFTPMWF T  ^FMTF\ SFKFDU FSS  ^ ^  ^  ^ QSPNJTJpFE'T4UBU pMF UIFO T \ DPOTPMFMPH TTJ[F  ^ DBUDI F \ DPOTPMFMPH FNFTTBHF  ^  DPOTU\TUBU^SFRVJSF GT  DPOTUVUJMSFRVJSF VUJM  DPOTUpMFIPHFUYU QSPNJTJpFE'T4UBUVUJMQSPNJTJGZ TUBU  QSPNJTJpFE'T4UBU pMF UIFO T \ DPOTPMFMPH TTJ[F  ^ DBUDI F \ DPOTPMFMPH FNFTTBHF  ^  DPOTU\TUBU^SFRVJSF GTQSPNJTFT  DPOTUpMFIPHFUYU TUBU pMF UIFO TUBU \ DPOTPMFMPH TUBUTJ[F  ^ DBUDI F \ DPOTPMFMPH FNFTTBHFT  ^  ΂ͨ VUJMQSPNJTJGZ GTQSPNJTFT
  16. BTTFSUTUSJDU w BTTFSUͷTUSJDUNPEF͕ಋೖ͞ΕΔ w TUSJDUNPEFͰ͸શͯTUSJDUFRVBMͰ൑ఆ w -FHBDZ.PEFSFRVJSF BTTFSU ͸EFQSFDUFE %PDPOMZ

    DPOTUBTTFSUSFRVJSF BTTFSU  USZ\ BTTFSUFRVBM OVMM VOEFpOFE  ^DBUDI F \ DPOTPMFMPH FNFTTBHF  ^ DPOTUBTTFSUSFRVJSF BTTFSU TUSJDU USZ\ BTTFSUFRVBM OVMM VOEFpOFE  ^DBUDI F \ DPOTPMFMPH FNFTTBHF  ^ OPEFBTTFSU@TUSJDUKT  OPEFBTTFSU@TUSJDUKT *OQVU"FYQFDUFEUPTUSJDUMZFRVBMJOQVU# FYQFDUFEBDUVBM OVMM VOEFpOFE
  17. DPOTUVUJMSFRVJSF VUJM  BTZODGVODUJPOIPHF"TZOD \^ GVODUJPONZ*T"TZOD'VODUJPO GVOD \ SFUVSO0CKFDUQSPUPUZQFUP4USJOHDBMM GVOD

    <PCKFDU"TZOD'VODUJPO> ^ DPOTPMFMPH NZ*T"TZOD'VODUJPO IPHF"TZOD USVF DPOTPMFMPH VUJMUZQFTJT"TZOD'VODUJPO IPHF"TZOD USVF VUJMUZQFTJT 7ωΠςΟϒʹΑΔνΣοΫ JT"SHVNFOUT0CKFDU JT"TZOD'VODUJPO JT#PPMFBO0CKFDU JT%BUB7JFX JT%BUF JT&YUFSOBM JT(FOFSBUPS'VODUJPO JT(FOFSBUPS0CKFDU JT.BQ JT.BQ*UFSBUPS  JT/BUJWF&SSPS JT/VNCFS0CKFDU JT1SPNJTF JT1SPYZ JT3FH&YQ JT4FU JT4FU*UFSBUPS JT4IBSFE"SSBZ#V⒎FS JT4USJOH0CKFDU JT4ZNCPM0CKFDU JT8FBL.BQ  JT8FBL4FU JT8FC"TTFNCMZ$PNQJMFE.PEVMF +4ʹΑΔνΣοΫ JT"SSBZ#V⒎FS JT5ZQFE"SSBZ JT6JOU"SSBZ JT6JOU$MBNQFE"SSBZ JT6JOU"SSBZ JT6JOU"SSBZ JT*OU"SSBZ JT*OU"SSBZ JT*OU"SSBZ  JT'MPBU"SSBZ JT'MPBU"SSBZ JT"OZ"SSBZ#V⒎FS +4ॲཧͷΦʔόϔου 7ωΠςΟϒ w Ҏલ͔ΒQSPDFTTCJOEJOH VUJM JT Ͱ಺෦ར༻͞Ε͖ͯͨ w উखʹ࢖͍ͬͯΔϞδϡʔϧ͕ଟ͍ w VUJMUZQFTJT ͱͯ͠ެ։"1*Խɻͦͷ୅ΘΓQSPDFTTCJOEJOHͷํ͸ EFQSFDBUFE
  18. 63- 63-4FBSDI1BSBNT͕ άϩʔόϧʹ w ϒϥ΢βʔͱಉ͘͡8)"58(ͷ63- 63-4FBSDI1BSBNT ͕άϩʔόϧʹ w কདྷతʹVSMQBSTF ͷஔ͖׵͑ɺW΁ͷόοΫϙʔτ΋ݕ

    ౼த DPOTUIUUQSFRVJSF IUUQ  DPOTUVSMOFX63- IUUQIUNMPIUTVPSH  IUUQHFU VSM  SFT \ SFTSFTVNF  DPOTPMFMPH SFTTUBUVT$PEF  ^ 
  19. ͦͷଞ w /"1*͕4UBCMFʹ w FYQFSJNFOUBMWNNPEVMFT&4NPEVMF w FYQFSJNFOUBMSFQMBXBJU w USBDFFWFOU͕Φϓγϣϯϑϥάແ͠Ͱར༻Մɻಈతʹ੾ Γସ͑ͨΓɺػೳ΋௥Ճɻ

    w DPOTPMFUBCMF  w QSPDFTTQQJE w GTSFBMQBUIOBUJWFGTSFBMQBUI4ZODOBUJWF w NPEVMFCVJMUJO.PEVMFT w JNNFEJBUFSFG VOSFG  w UMT4PDLFUHFU'JOJTIFE HFU1FFS'JOJTIFE ଞʹ΋͍Ζ͍Ζ
  20. ৼΓฦΓ w ೥SZʹΑΔ/PEFKT஀ੜ ʙW  w ೥ʙ೥+PZFOU/PEF WʙW  w

    ೥݄/PEFֶԂ࣌ݶ໨ w ೥JPKT෼྾ɺ౷߹ɻ/PEF'PVOEBUJPOઃཱ w ೥݄/PEFW-54 "SHPO ϦϦʔε w ೥݄೔/PEFW&0- /PEF'PVOEBUJPOମ੍ʹͳͬͯॳΊͯ-54ϦϦʔεϥΠϯΛશ͏ͨ͠ɻ
  21. มΘͬͨ͜ͱ 1SPT w ࢀՃऀͷ૿େɺຽओԽ w Ұ෦ͷఱ࠽త։ൃऀ͚ͩ͡Όͳͯ͘΋ϝϯςՄೳ w ߹ҙܗ੒ͷϧʔϧ࡞Γ͕੔උ w 4FNWFSͷపఈԽ

    "1*มߋϧʔϧͷపఈʣɺ-54ͷ҆ఆԽ w *OUFSOFU(JBOUT%JTUSJCVUPSͷίϛοτ w (PPHMFͷڠྗ͕ඇৗʹେ͖͍ɻ/PEF͕7ͷpSTUDMBTTʹ w $* υΩϡϝϯτͳͲ։ൃ؀ڥͷ੔උɺॆ࣮ $POT w ΍ͬͺΓେม ଟ͘ͷJTTVFͱ෯޿͍ػೳɺߴ͍඼࣭ཁٻ  w ৽ͨͳࣄΛ΍Δͷ͕େม &14 /(ͷ࠳ં