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

高集積コンテナホスティングにおけるボトルネックとその解法

 高集積コンテナホスティングにおけるボトルネックとその解法

話し手の所属するGMOペパボではロリポップ!マネージドクラウドというコンテナホスティングサービスを提供しており、1台のサーバに数千のコンテナを起動します。

コンテナはプロセスであるという認識は一般的になりつつありますが、コンテナプロセスを起動するにはネームスペースの作成や、マウントなどいくつもの処理が行われてプロセスを起動する必要があり、通常のプロセス起動と違う箇所にボトルネックが現れます。またコンテナ技術はLinuxのカーネルレイヤに近い領域で実装されているためそのボトルネックの解消には深いLinuxに対する理解が必要です。

本セッションにおいては話し手が1台のサーバで数千のコンテナを起動する際に直面したボトルネック、その調査方法、そして解決する方法を共有したいと思います。

昨今k8sの台頭により、あらゆるサービスでコンテナ技術が利用されつつありますが、コンテナ技術の深い理解は、今後のエンジニアのあらゆる開発において有用な知識となるはずです。ぜひ本セッションに足を運んでいただき、一歩進んだコンテナ利用をしていきましょう。

Kazuhiko Yamashita

September 08, 2018
Tweet

More Decks by Kazuhiko Yamashita

Other Decks in Technology

Transcript

  1. ʙ࣋ͯ༨ͯ͠ΔϑϥετϨʔγϣϯɺ:PVWFHPUBOFBTZEBZʙ !QZBNB(.01FQBCP *OD CVJMEFSTDPOUPLZP ߴूੵίϯςφϗεςΟϯάʹ ͓͚ΔϘτϧωοΫͱͦͷղ๏

  2. γχΞɾϓϦϯγύϧΤϯδχΞ ࢁԼ࿨඙!QZBNB ϗεςΟϯάࣄۀ෦νʔϑςΫχΧϧϦʔυ

  3. None
  4. IUUQTUFOTOBQPODPNBSDIJWFT

  5. -JOVYͷ౷߹Ϣʔβʔ؅ཧ 50.-ܗࣜ )551 +40/ -%"1΍%#ͷ؅ཧ͕ෆཁ ѻ͍΍͍͢ϑΥʔϚοτ ൚༻ੑɾ֦ுੑ IUUQTTUOTKQ

  6. -JOVY MJCOTTTUOT JEFYBNQMF VJE FYBNQMF HJE FYBNQMF HSPVQT FYBNQMF VTFS

    OBNFFYBNQMF <\ OBNFFYBNQMF  JE   ^> γϯϓϧͰࣗ༝౓ͷߴ͍ઃܭ αʔό࣮૷΋͍ΘΏΔ3&45GVM෩ɺMJCOTTTUOT͔Β೚ҙͷίϚϯυΛ࣮ߦͨ͠ ݁ՌΛར༻Ͱ͖Δ࢓૊Έ΋͋ΔͷͰΫϥΠΞϯτଆͷ֦ு΋ࣗ༝ࣗࡏ <VTFSTFYBNQMF> JE LFZT<TTI> [email protected] TUOTDPOG
  7. EPDLFSSVOOBNFTUOTETUOTTUOTMBUFTU EPDLFSFYFDJUTUOTCJOCBTI JEFYBNQMF VJE FYBNQMF HJE FYBNQMF HSPVQT FYBNQMF ͙͢ʹࢼͤ·͢

    DVSMGT4-IUUQTSFQPTUOTKQTDSJQUTZVNSFQPTIcTI DVSMGT4-IUUQTSFQPTUOTKQTDSJQUTBQUSFQPTIcTI EPDLFS $FOU04 VCVOUVEFCJBO
  8. ϗεςΟϯάࣄۀ &$ࢧԉࣄۀ ϋϯυϝΠυɾͦͷଞࣄۀ

  9. ೥ ϩϦϙοϓʂϨϯλϧαʔόαʔϏεఏڙ։࢝ ೥ ೥ ೥ ϔςϜϧαʔϏεఏڙ։࢝ 1ࢁ͕ϖύϘʹೖࣾʂʂ̍ ೥݄೔ ࣛࣇౡݝग़ਫࢢʹ͓͍ͯ1ࢁര஀ʂʂ̍ ೥

    ݱࡏɾ૑ۀ೥໨ ϜʔϜʔυϝΠϯαʔϏεఏڙ։࢝
  10. ϨϯλϧαʔόͱΫϥ΢υͷ͍͍ͱ͜ͲΓ ϩϦϙοϓʂϚωʔδυΫϥ΢υ IUUQTNDMPMJQPQKQ

  11. ίϯςφΤϯδϯʹIBDPOJXBΛ࠾༻ wNSVCZ੡ίϯςφΤϯδϯ w3VCZ%4-ͰίϯςφఆٛՄೳ wϑΥʔΫલޙͳͲ೚ҙͷϑοΫ
 ࣮૷͕Մೳ IUUQTHJUIVCDPNIBDPOJXBIBDPOJXB

  12. ࠓ೔࿩͢͜ͱ w ෼Ͱ͋ͳͨ΋ίϯςφϚΠελʔߨ࠲ w ϝϞϦঢ়ଶىҼͷίϯςφ཯଎໰୊ w γεςϜ্ݶͱਓྨͷر๬ʹ͍ͭͯ w ωοτϫʔΫίϚϯυىҼͷίϯςφ཯଎໰୊ w

    γεςϜௐࠪίϚϯυອஊ w ετϨʔδͷເͱల๬
  13. ෼Ͱ͋ͳͨ΋ ίϯςφϚΠελʔߨ࠲

  14. ίϯςφͷߏ੒ཁૉ OBNFTQBDF DISPPU DHSPVQ DBQBCJMJUZ

  15. ͦ΋ͦ΋ ίϯςφ

  16. ίϯςφʹϓϩηε

  17. OBNFTQBDF IUUQTMJOVYKNPTEOKQIUNM-%[email protected]QBHFTNBOVOTIBSFIUNM SPPU!MPDBMIPTUdJQB MP-001#"$, 61 -08&[email protected]NUVREJTDOPRVFVF MJOLMPPQCBDLCSE JOFUTDPQFIPTUMP FOQT#30"%$"45 .6-5*$"45

    61 -08&[email protected] MJOLFUIFSBCSE⒎⒎⒎⒎⒎⒎ JOFUCSETDPQFHMPCBMFOQT SPPU!MPDBMIPTUdCBTI SPPU!MPDBMIPTUdVOTIBSFOFU SPPU!MPDBMIPTUdJQB MP-001#"$,NUVREJTDOPPQTUBUF%08/HSPVQEFGBVMURMFO MJOLMPPQCBDLCSE
  18. DISPPU IUUQTMJOVYKNPTEOKQIUNM-%[email protected]QBHFTNBODISPPUIUNM NLEJSDPOUBJOFS SPPU!MPDBMIPTUIPNFWBHSBOUDPOUBJOFSDQSCJOMJCMJCDPOUBJOFS DISPPUDPOUBJOFS CBTIMTMUS ESXYSYSY4FQCJO ESXYSYSY4FQMJC ESXYSYSY4FQMJC

  19. DHSPVQ IUUQNBOPSHMJOVYNBOQBHFTNBODHSPVQTIUNM wDQV[email protected]@VT w$16Ϧιʔεͷׂ౰ִؒϚΠΫϩඵ wDQV[email protected]@VT wׂ౰ִؒͷ಺ɺλεΫ͕࣮ߦ͞ΕΔϚΠΫϩඵ ϓϩηε͝ͱʹ$16΍ϝϞϦͳͲͷ
 ϦιʔεΛ੍ݶ [email protected]@VT 

     ඵ  [email protected]@VT  ඵ ˋ
  20. DBQBCJMJUZ IUUQTMJOVYKNPTEOKQIUNM-%[email protected]QBHFTNBODBQBCJMJUJFTIUNM -JOVYͷݖݶ؅ཧͷ࢓૊Έɻϓϩηε΍ ϑΝΠϧ୯ҐͰ෇༩͢Δ͜ͱ͕Ͱ͖Δ QTFGcHSFQBQBDIF SPPU VTSTCJOBQBDIFLTUBSU XXXEBUB VTSTCJOBQBDIFLTUBSU XXXEBUB

    VTSTCJOBQBDIFLTUBSU SPPUQUTHSFQDPMPSBVUPBQBDIF SPPU!MPDBMIPTUdHFUQDBQT $BQBCJMJUJFTGPSA [email protected]  [email protected]@PWFSSJEF  [email protected]@[email protected] 
  21. ܰྔԾ૝Խ؀ڥΛ࣮ݱ͢Δٕज़ -9$ͰֶͿίϯςφೖ໳[email protected] IUUQHJIZPKQBENJOTFSJBM[email protected]

  22. 'BTU$POUBJOFSΞʔΩςΫνϟ

  23. ֮͑ͯ·͔͢ʁ 'BTU$(*

  24. EJTQBUDIFS OHJOY DPOUBJOFS ίωΫγϣϯ νΣοΫ DPOUBJOFS ىಈ τϥϑΟοΫ ϦΫΤετΛܖػʹίϯςφΛىಈ͠ Ұఆ࣌ؒॲཧޙɺࣗಈతʹఀࢭ͢Δ

    'BTU$POUBJOFS IUUQTICNBUTVNPUPSKQFOUSZ
  25. ϢʔβʔσʔλΛετϨʔδʹ࣋ͭ͜ͱͰ εςʔτϑϧͳಈతίϯςφΞʔΩςΫνϟΛ࣮ݱ Ϣʔβʔσʔλ͸ετϨʔδʹ 4FSWFS 4FSWFS 4UPSFHF 6TFS%BUB DPOUBJOFS DPOUBJOFS

  26. աෛՙ࣌ͳͲ΋ࣗಈͰ࣍ͷϦΫΤετ͔Β Φʔτεέʔϧ Φʔτεέʔϧ΋଎ 4FSWFS 4FSWFS 4UPSFHF 6TFS%BUB DPOUBJOFS DPOUBJOFS 4FSWFS

    DPOUBJOFS
  27. ϋʔυ΢ΣΞো֐͕ى͖ͯ΋࣍ͷϦΫΤετ͔Β ۭ͍ͯΔϗετͰىಈ ϋʔυো֐΋ࣗಈͰҠಈ 4FSWFS 4FSWFS 4UPSFHF 6TFS%BUB DPOUBJOFS DPOUBJOFS 4FSWFS

    DPOUBJOFS DPOUBJOFS
  28. 'BTU$POUBJOFSͷ ίΞόϦϡʔ ίϯςφΛ͍͔ʹ଎͘ ىಈͤ͞Δ͔ʁ

  29. 'BTU$POUBJOFSʹ͓͚Δ ίϯςφͷߴ଎ىಈͱ ىಈ਺্ݶͱͷ ઓ͍ͷه࿥

  30. ίϯςφىಈ؀ڥ w $16ίΞ w ϝϞϦ(# w "QBDIF)551%ϓϩηε NBTUFS Ͱίϯςφىಈ͍ͨ͠

  31. ϝϞϦঢ়ଶىҼͷ ίϯςφ཯଎໰୊

  32. ࣄ৅ɿ؂ࢹίϯςφͷμ΢ϯ w ֎ܗ؂ࢹΛߦ͍ͬͯΔίϯςφͷ )551ϨεϙϯελΠϜ͕ᮢ஋௒ӽ

  33. OFUOTBEE [email protected] .PVOUJOH 0,[email protected] 0,[email protected] 0,[email protected] 0,[email protected] 0,[email protected]@OBNFTQBDF 0,[email protected] 0,[email protected]

    0,[email protected] 0,[email protected] $POUBJOFSGPSLTVDDFTT ϩάͰ͸OFUOTͷ௥Ճ͕཯଎
  34. JQOFUOTBEEYYYY JQOFUOTFYFDYYYYZZZZ JQίϚϯυ -JOVYͷ*'पΓͷػೳ͚ͩͰͳ͘ɺOFUOTͷ௥Ճ΍ɺ OFUOTʹର͢Δૢ࡞Λ࣮ݱ͍ͯ͠Δ

  35. ௐࠪํ๏

  36. ೔ຊݹདྷΑΓ఻ΘΔ ఻౷ܳೳ ʮצʯ

  37. None
  38. wϓϩηεͷൃߦ͢ΔγεςϜίʔϧΛτϨʔε TUSBDF SPPU!MPDBMIPTUdTUSBDFUU5T4UJNFJQOFUOTBEEFYBNQMF FYFDWF TCJOJQ <JQ OFUOT BEE FYBNQMF> <

    WBST >   CSL /6-- YF BDDFTT FUDMETPOPIXDBQ '@0, &/0&/5 /PTVDIpMFPS EJSFDUPSZ  NNBQ /6--  [email protected]&"%[email protected]*5& ."[email protected]*7"5&c ."[email protected]"/0/:.064   YGCBD ʜ
  39. TUSBDFUU5TJQOFUOTBEEFYBNQMF

  40. wγεςϜίʔϧͷϘτϧωοΫΛγϯϘϧϨϕϧ·Ͱಛఆ QFSG QFSGUPQ QFSGSFDPSEDBMMHSBQIEXBSGQQJE QFSGSFQPSUH(TUEJP

  41. JQ<LFSOFMLBMMTZNT><L>[email protected]:4$"[email protected]@GBTUQBUI c [email protected]:4$"[email protected]@GBTUQBUI c c[email protected] c[email protected]@OBNFTQBDFT c[email protected]@OBNFTQBDFT c[email protected]@OT cc cc[email protected]

    cc[email protected] ccc ccc[email protected]@[email protected] ccc[email protected]@UBCMF cccc cccc[email protected]@UBCMF cccc[email protected]@UBCMF cccc@@[email protected] cccc@@[email protected] ccccc ccccc@@@[email protected] ccccc[email protected] cccccc cccccc@@[email protected]@TMBCJTSB ccccccVOTIBSF ccccccYB
  42. 4MBC DBUQSPDNFNJOGPcHSFQJTMBC 4MBCL# (ʘ ?P? ʗ

  43. NNTMVCD ָ͘͠ಡΜͰֶͿ-JOVY IUUQTHJUIVCDPNUPSWBMETMJOVY

  44. ͍͑ͬʂ TZODFDIPQSPDTZTWN[email protected] TMBCUPQͰ֬ೝͨ͠ͱ͜ΖɺEFOUSZΩϟογϡ͕ ଟ͔ͬͨͨΊɺΩϟογϡͷΫϦΞ͕༗ޮͱߟ͑ͨ

  45. ߋʹ͜͏͡Όʂʂ̍    CBTIDTZODFDIPa QSPDTZTWN[email protected]

  46. 4MBC͸ංେԽ͢Δͱ ϘτϧωοΫͱͳΔ Ұൠతʹ͸4MBCͷංେԽʹىҼͯ͠4XBQϝϞϦ͕ར༻͞Ε γεςϜશମ͕཯଎ʹͳΔ͜ͱ͕ଟ͍͕ɺ୯७ʹ࢖༻ྔ͕ ଟ͍ͱॳظԽॲཧ࣌ͷϩοΫͰϘτϧωοΫͱͳΔ͜ͱ͕͋Δɻ ·ͨ͜ΕΒͷ04ϨΠϠͷ࢓૊Έͷௐࠪʹ͓͍ͯ͸TUSBDF΍ QFSGΛར༻͢Δ͜ͱͰ͋ͨΓΛ͚ͭɺιʔεΛಡΈࠐΉ͜ͱͰ ݪҼʹର͢ΔԾઃΛཱͯΔ͜ͱ͕Ͱ͖Δɻ

  47. γεςϜ্ݶͱ ਓྨͷر๬ʹ͍ͭͯ

  48. ࣄ৅ɿίϯςφ͕ىಈ͠ͳ͍ w ίϯςφىಈ਺ෛՙݕূதʹ ίϯςφ͕ىಈ͠ͳ͘ͳͬͨ

  49. ίϯςφͷน

  50. DBOUBEE[email protected]@W(MW(W[UPCSJEHFIBDPOJXB&YDIBOHFGVMM SPPU!DPNQVUFdCSDUMTIPXcXDM  CSJEHFͷγεςϜ্ݶʁ

  51. ίϯςφωοτϫʔΫ -JOVY#SJEHF OFUOT DPOUBJOFS WFUIQBJS BQQMZOFUOT IBDPOJXB [email protected]@YYYYYYY [email protected]

  52. ίϯςφωοτϫʔΫ -JOVY#SJEHF OFUOT DPOUBJOFS WFUIQBJS BQQMZOFUOT IBDPOJXB [email protected]@YYYYYYY [email protected] ্ݶ

  53. EFpOF#[email protected]@#*54 EFpOF#[email protected]"[email protected] #[email protected]@#*54  OFUCSJEHF[email protected]I wఆ਺Λมߋ͠ɺΧʔωϧίϯύΠϧ͢Ε͹γεςϜ্ݶ͸ มߋՄೳɻ

  54. ϒϦοδΛ෼ࢄ -JOVY#SJEHF OFUOT DPOUBJOFS WFUIQBJS BQQMZOFUOT IBDPOJXB [email protected]@ [email protected] -JOVY#SJEHF

    IBDPOJXB999 OFUOT [email protected]@ DPOUBJOFS [email protected] BQQMZOFUOT OFUOT DPOUBJOFS WFUIQBJS BQQMZOFUOT [email protected]@ [email protected]   
  55. None
  56. -JOVY#SJEHF͸্ݶ͕͋Δ -JOVY#SJEHFʹ௥ՃͰ͖Δ*'͸ݸ͕γεςϜ্ݶͰ͋Δɻ ճආ͢Δʹ͸ఆ਺ͷ஋Λม͑ͯΧʔωϧίϯύΠϧ͢ΔɺϒϦοδΛ ෼ׂ͢Δɺ0QFOW4XJUDIʹஔ͖׵͑Δͱ͍͏खஈ͕͋Δɻ

  57. ωοτϫʔΫίϚϯυىҼͷ ίϯςφ཯଎໰୊

  58. ࣄ৅ ɿ $16ɾϝϞϦ͸༨༟͕͋Δ͕ -"͚͕ͩߴ͍ w ίϯςφىಈ਺ෛՙݕূதʹίϯ ςφͷىಈ͕஗͘ͳΓɺ-"͕ߴಅ

  59. 1*%64&313/*7*353&44)34$16.&.5*.& $0.."/% SPPUHH4DBEWJTPS SPPU3UPQ VCVOUV3BQBDIF SPPU%SPVUF SPPU3IBDPOJXB SPPU%SPVUF SPPU%SPVUF SPPU%JQ

    SPPU%SPVUF SPPU%JQ SPPU3IBDPOJXB SPPU3IBDPOJXB SPPU3IBDPOJXB SPPU3IBDPOJXB SPPU%SPVUF SPPU3IBDPOJXB UPQ
  60. ༨ஊDBEWJTPS IUUQTHJUIVCDPNHPPHMFDBEWJTPS

  61. UJNFJQOFUOTBEEUFTU 35/&5-*/,BOTXFST*OWBMJEBSHVNFOU 35/&5-*/,BOTXFST*OWBMJEBSHVNFOU  35/&5-*/,BOTXFST*OWBMJEBSHVNFOU 35/&5-*/,BOTXFST*OWBMJEBSHVNFOU SFBMNT VTFSNT TZTNT JQOFUOTBEE͕ࢗ͞Δ

  62. QFSGSFDPSEDBMMHSBQIEXBSGJQOFUOTBEEFYBNQMF QFSGSFQPSUH(TUEJP JQ<LFSOFMLBMMTZNT><L>[email protected]:4$"[email protected]@GBTUQBUI c [email protected]:4$"[email protected]@GBTUQBUI c c[email protected] cc cc[email protected]@PQFO ccc

    ccc[email protected]@PQFO cccc cccc[email protected] ccccc [email protected]͕ࢧ഑త
  63. TUSBDFJQOFUOTBEEFYBNQMF  PQFO WBSSVOOFUOT[email protected]ECB [email protected]%0/-:  TFOENTH  \[email protected] 

    \[email protected]"'@/&5-*/, QJE  HSPVQT^  SFDWNTH  \[email protected]  \[email protected]"'@/&5-*/, QJE  HSPVQT^  DMPTF   PQFO WBSSVOOFUOT[email protected]DGDGEBC [email protected]%0/-:  TFOENTH  \[email protected]  \[email protected]"'@/&5-*/, QJE  HSPVQT^  SFDWNTH  \[email protected]  \[email protected]"'@/&5-*/, QJE  HSPVQT^  DMPTF   طଘͷOFUOT͢΂ͯʹ ໰͍߹Θ͍ͤͯΔ
  64. GSFF UPUBMVTFEGSFFTIBSFECV⒎DBDIFBWBJMBCMF .FN˒ 4XBQUPUBM Ϧιʔεঢ়ଶ wखݩͷ7JSUVBM#PYͰ࠶ݱͤͨ͞ͱ͜ΖϝϞϦ͕
 ރׇঢ়ଶͰ͋ͬͨ

  65. ௐ͔ࠪΒಘΒΕΔԾઆͱଧͪख wϝϞϦ͕ރׇঢ়ଶͰ͋ΔͱPQFO͕ࢧ഑త wTFOENTHͷ಺༰͕ෆཁͰ͋Ε͹ɺطଘͷOFUOTʹ
 ର͢ΔॲཧΛ࡟আ͢Ε͹ɺOFUOTͷϘτϧωοΫ͕֎ͤΔ

  66. HEC͔Β͋ͨΓΛ͚ͭΔ HECJQ HEC CTFOENTH HEC SVOOFUOTBEE[email protected] 4UBSUJOHQSPHSBNTCJOJQOFUOTBEE[email protected]  #SFBLQPJOU TFOENTH

    BUTZTEFQTVOJYTZTDBMMUFNQMBUF4 TZTEFQTVOJYTZTDBMMUFNQMBUF4/PTVDIpMFPSEJSFDUPSZ HEC CU TFOENTH BUTZTEFQTVOJYTZTDBMMUFNQMBUF4 YDCJO[email protected]  YCEJO   YGJO[email protected]@JOJU  YDFJO[email protected]  YJO  
  67. શͯ͸ιʔεʹॻ͍ͯ͋Δ

  68. OFUMJOLΛར༻ͨ͠/4*%औಘ XIJMF FOUSZSFBEEJS EJS /6-- \ JG TUSDNQ FOUSZ[email protected] 

      DPOUJOVF JG TUSDNQ FOUSZ[email protected]    DPOUJOVF OTJE[email protected]@[email protected] FOUSZ[email protected]  JG OTJE  [email protected]@BEE OTJE FOUSZ[email protected]  ^ JQJQOFUOTD
  69. ࠷৽ͷιʔεͰ͸͢Ͱʹύον

  70. OFUOTͷ௥Ճ͕ര଎ʹʂʂ̍ TUSBDFUUTP[email protected]JQOFUOTBEE[email protected] IFBE[email protected] FYFDWF TCJOJQ <JQ OFUOT BEE [email protected]> <

    WBST >   UBJM[email protected]  FYJUFEXJUI  ύοέʔδόʔδϣϯൺֱͰඵ͔ΒඵʹͳΓ ഒ͘Β͍ૣ͘ͳͬͨ TUSBDFUUTP[email protected]JQOFUOTBEE[email protected] IFBE[email protected] FYFDWF TCJOJQ <JQ OFUOT BEE [email protected]> < WBST >   UBJM[email protected]  FYJUFEXJUI CFGPSF BGUFS
  71. IBDPOJXBTPGUJJ[VLBMPMJQPQJPDEQBSFOU<>JQMJOLTFU FUI[email protected]VQ TZTUFNEVEFWE<>$PVMEOPUHFOFSBUFQFSTJTUFOU."$BEESFTTGPS FUI[email protected]/PTVDIpMFPSEJSFDUPSZ ϘτϧωοΫ͕ભҠ͢Δ IUUQTHJUIVCDPNTZTUFNETZTUFNEJTTVFT

  72. ."$"EESFTT1PMJDZͷมߋ FUDTZTUFNEOFUXPSLEFGBVMUMJOL ."$"EESFTT1PMJDZQFSTJTUFODF ."$"EESFTT1PMJDZSBOEPN ."$"EESFTT1PMJDZOPOF ࠶ىಈޙ΋ಉ͡.BDΞυϨεΛ෷͍ग़͢ σόΠε௥Ճ࣌ʹɺϥϯμϜͳ.BDΞυϨεΛ෷͍ग़͢ ΧʔωϧʹΑͬͯ෷͍ग़͞Εͨ.BDΞυϨεΛར༻͢Δ

  73. HECJTศར wطଘͷϓϩηεɺίϚϯυʹ͓͍ͯ͋ͨΓΛ͚ͭΔͱ͖
 όοΫτϨʔε͸େ͖ͳख͕͔ΓʹͳΔ w-JOVYʹࠝแ͞Ε͍ͯΔίϚϯυ͸ͦΕͳΓʹ։ൃ͕
 ଓ͍͓ͯΓɺίϛοτಡΉͱ࠷దԽ͕ਐΜͰ͍Δɻ wNSVCZJQSPVUFཉ͍͠

  74. ίϯςφ

  75. IBDPOJXBXJOUFSLVSPTBLJ<>JQOFUOTBEE[email protected]BEF IBDPOJXBXJOUFSLVSPTBLJ<>JQMJOLBEEFUIBEF@IUZQF WFUIQFFSOBNFFUIBEF@D ࠶ͼɺJQOFUOTBEE͕཯଎ OFUOTͷ௥Ճʹඵ͘Β͍͔͔Δ

  76. JQ<LFSOFMLBMMTZNT><L>[email protected]:4$"[email protected]@GBTUQBUI c [email protected]:4$"[email protected]@GBTUQBUI c c[email protected] cc cc[email protected] ccc cccHSB[email protected] ccc[email protected]@NOU

    cccc cccc[email protected] ccccc ccccc[email protected] cccccc cccccc[email protected] cccccc[email protected] ccccccc ccccccc[email protected] [email protected]͕ࢧ഑త
  77. [email protected] 
 GTOBNFTQBDFD Ϛ΢ϯτ࣌ͷϑϥά͕[email protected]#*/%ͳͱ͖ʹMPPQCBDLϚ΢ϯτ ͯ͠ɺϚ΢ϯτͷπϦʔߏ଄Λίϐʔ͢Δ

  78. XIJMF NPVOU  /&5/[email protected]/@%*3 OPOF [email protected])"3&%c[email protected]&$ /6-- \  'BJMVOMFTTXFOFFEUPNBLFUIFNPVOUQPJOU

     JG FSSOP&*/7"-cc[email protected]@[email protected]@NPVOU \ GQSJOUG TUEFSS NPVOUNBLFTIBSFETGBJMFETaO /&5/[email protected]/@%*3 TUSFSSPS FSSOP  SFUVSO ^  6QHSBEF/&5/[email protected]/@%*3UPBNPVOUQPJOU  JG NPVOU /&5/[email protected]/@%*3 /&5/[email protected]/@%*3 OPOF [email protected]#*/%c[email protected]&$ /6-- \ GQSJOUG TUEFSS NPVOUCJOETTGBJMFETaO /&5/[email protected]/@%*3 /&5/[email protected]/@%*3  TUSFSSPS FSSOP  SFUVSO ^ [email protected]@[email protected]@NPVOU ^ JQJQOFUOTD
  79. XIJMF NPVOU  /&5/[email protected]/@%*3 OPOF [email protected])"3&%c[email protected]&$ /6-- \  'BJMVOMFTTXFOFFEUPNBLFUIFNPVOUQPJOU

     JG FSSOP&*/7"-cc[email protected]@[email protected]@NPVOU \ GQSJOUG TUEFSS NPVOUNBLFTIBSFETGBJMFETaO /&5/[email protected]/@%*3 TUSFSSPS FSSOP  SFUVSO ^  6QHSBEF/&5/[email protected]/@%*3UPBNPVOUQPJOU  JG NPVOU /&5/[email protected]/@%*3 /&5/[email protected]/@%*3 OPOF [email protected]#*/%c[email protected]&$ /6-- \ GQSJOUG TUEFSS NPVOUCJOETTGBJMFETaO /&5/[email protected]/@%*3 /&5/[email protected]/@%*3  TUSFSSPS FSSOP  SFUVSO ^ [email protected]@[email protected]@NPVOU ^ JQJQOFUOTD WBSSVOOFUOTΛ࠶ؼతʹ 4)"3&%Ϛ΢ϯτ
  80. XIJMF NPVOU  /&5/[email protected]/@%*3 OPOF [email protected])"3&%c[email protected]&$ /6-- \  'BJMVOMFTTXFOFFEUPNBLFUIFNPVOUQPJOU

     JG FSSOP&*/7"-cc[email protected]@[email protected]@NPVOU \ GQSJOUG TUEFSS NPVOUNBLFTIBSFETGBJMFETaO /&5/[email protected]/@%*3 TUSFSSPS FSSOP  SFUVSO ^  6QHSBEF/&5/[email protected]/@%*3UPBNPVOUQPJOU  JG NPVOU /&5/[email protected]/@%*3 /&5/[email protected]/@%*3 OPOF [email protected]#*/%c[email protected]&$ /6-- \ GQSJOUG TUEFSS NPVOUCJOETTGBJMFETaO /&5/[email protected]/@%*3 /&5/[email protected]/@%*3  TUSFSSPS FSSOP  SFUVSO ^ [email protected]@[email protected]@NPVOU ^ JQJQOFUOTD WBSSVOOFUOTΛ ࣗ෼ࣗ਎ʹ#*/%Ϛ΢ϯτ͢Δ͜ ͱͰ4)"3&%Մೳʹ͢Δ
  81. JG VOTIBSF $-0/&@/&8/&5  \  GQSJOUG TUEFSS 'BJMFEUPDSFBUFBOFXOFUXPSLOBNFTQBDFaTaTaO 

      OBNF TUSFSSPS FSSOP   HPUP[email protected] ^  #JOEUIFOFUOTMBTUTP*DBOXBUDIGPSJU  JG NPVOU QSPDTFMGOTOFU [email protected] OPOF [email protected]#*/% /6--  \  GQSJOUG TUEFSS #JOEQSPDTFMGOTOFUTGBJMFETaO    [email protected] TUSFSSPS FSSOP   HPUP[email protected] ^ JQJQOFUOTD ͜ͷϓϩηεͷOFUOTΛ෼཭͢Δ
  82. JG VOTIBSF $-0/&@/&8/&5  \  GQSJOUG TUEFSS 'BJMFEUPDSFBUFBOFXOFUXPSLOBNFTQBDFaTaTaO 

      OBNF TUSFSSPS FSSOP   HPUP[email protected] ^  #JOEUIFOFUOTMBTUTP*DBOXBUDIGPSJU  JG NPVOU QSPDTFMGOTOFU [email protected] OPOF [email protected]#*/% /6--  \  GQSJOUG TUEFSS #JOEQSPDTFMGOTOFUTGBJMFETaO    [email protected] TUSFSSPS FSSOP   HPUP[email protected] ^ JQJQOFUOTD [email protected]WBSSVOOFUOTOFUOT໊ ʹ෼཭ͨ͠OFUOTͷ'%Λ#*/%Ϛ΢ϯτ͢Δ ͜ͱͰϓϩηε͕ͳ͘ͳͬͯ΋OFUOT͕࢒Δ
  83. XIJMF NPVOU  /&5/[email protected]/@%*3 OPOF [email protected])"3&%c[email protected]&$ /6-- \  'BJMVOMFTTXFOFFEUPNBLFUIFNPVOUQPJOU

     JG FSSOP&*/7"-cc[email protected]@[email protected]@NPVOU \ GQSJOUG TUEFSS NPVOUNBLFTIBSFETGBJMFETaO /&5/[email protected]/@%*3 TUSFSSPS FSSOP  SFUVSO ^  6QHSBEF/&5/[email protected]/@%*3UPBNPVOUQPJOU  JG NPVOU /&5/[email protected]/@%*3 /&5/[email protected]/@%*3 OPOF [email protected]#*/%c[email protected]&$ /6-- \ GQSJOUG TUEFSS NPVOUCJOETTGBJMFETaO /&5/[email protected]/@%*3 /&5/[email protected]/@%*3  TUSFSSPS FSSOP  SFUVSO ^ [email protected]@[email protected]@NPVOU ^ JQJQOFUOTD [email protected]&$͸࠶ؼతʹߦ͏ͷͰ 0 O ͷ͕͔͔࣌ؒΔ
  84. զʑͷ༻్Ͱ͸[email protected]&$ෆཁ SPPUOBNFTQBDF OFUOTBEE OFUOTEFM GPSL XBJUQJE VOTIBSF DPOUBJOFSOBNFTQBDF QSPDFTT EPOF

  85. QZBNBJQ ίϚϯυര஀

  86. QJQίϚϯυ͸΍Ίͨ΄͏͕͍͍

  87. ίϯςφ

  88. IBDPOJXBUJHIUJJ[VLB<>JQOFUOTBEE[email protected]EF IBDPOJXBUJHIUJJ[VLB<>JQMJOLTFUFUIBE[email protected]OFUOT [email protected]EFVQ IBDPOJXBUJHIUJJ[VLB<>JQOFUOTFYFD[email protected]EFJQBEESBEE EFWFUIBE[email protected] IBDPOJXBUJHIUJJ[VLB<>JQOFUOTFYFD[email protected]EFJQMJOLTFU MPVQ IBDPOJXBUJHIUJJ[VLB<>JQOFUOTFYFD[email protected]EFTCJOSPVUF BEEEFGBVMUHX JQOFUOTFYFD͕཯଎

    ௨৴Ͱ͖ΔΑ͏ʹͳΔ·Ͱඵ͘Β͍͔͔Δ
  89. JQ<LFSOFMLBMMTZNT><L>[email protected]:4$"[email protected]@GBTUQBUI c [email protected]:4$"[email protected]@GBTUQBUI c c[email protected] c[email protected]@OBNFTQBDFT c[email protected]@OBNFTQBDFT c[email protected]@OT cc cc[email protected]

    ccc ccc[email protected] cccc cccc[email protected] ccccc ccccc@@[email protected] cccccc cccccc[email protected] ccccccc ccccccc[email protected]@BSFB cccccccc ccccccccVOTIBSF cccccccc[email protected]
  90.  TOQSJOUG [email protected] TJ[FPG [email protected] TT /&5/[email protected]/@%*3 OBNF  

    OFUOTPQFO [email protected] [email protected]%0/-:c[email protected]$-0&9&$   JG OFUOT \   GQSJOUG TUEFSS $BOOPUPQFOOFUXPSLOBNFTQBDFaTaTaO     OBNF TUSFSSPS FSSOP    SFUVSO  ^  JG TFUOT OFUOT $-0/&@/&8/&5  \   GQSJOUG TUEFSS TFUUJOHUIFOFUXPSLOBNFTQBDFaTaGBJMFETaO     OBNF TUSFSSPS FSSOP    DMPTF OFUOT    SFUVSO  ^ MJCOBNFTQBDFD
  91.  TOQSJOUG [email protected] TJ[FPG [email protected] TT /&5/[email protected]/@%*3 OBNF  

    OFUOTPQFO [email protected] [email protected]%0/-:c[email protected]$-0&9&$   JG OFUOT \   GQSJOUG TUEFSS $BOOPUPQFOOFUXPSLOBNFTQBDFaTaTaO     OBNF TUSFSSPS FSSOP    SFUVSO  ^  JG TFUOT OFUOT $-0/&@/&8/&5  \   GQSJOUG TUEFSS TFUUJOHUIFOFUXPSLOBNFTQBDFaTaGBJMFETaO     OBNF TUSFSSPS FSSOP    DMPTF OFUOT    SFUVSO  ^ MJCOBNFTQBDFD ࡞੒ࡁΈͷOFUOTʹ VOTIBSF
  92.  JG VOTIBSF $-0/&@/&8/4  \   GQSJOUG TUEFSS

    VOTIBSFGBJMFETaO TUSFSSPS FSSOP    SFUVSO  ^   %POUMFUBOZNPVOUTQSPQBHBUFCBDLUPUIFQBSFOU   JG NPVOU   OPOF [email protected]"7&c[email protected]&$ /6-- \   GQSJOUG TUEFSS aNPVOUNBLFSTMBWFaGBJMFETaO     TUSFSSPS FSSOP    SFUVSO  ^ MJCOBNFTQBDFD NPVOUOTΛ෼཭͢Δ
  93.  JG VOTIBSF $-0/&@/&8/4  \   GQSJOUG TUEFSS

    VOTIBSFGBJMFETaO TUSFSSPS FSSOP    SFUVSO  ^   %POUMFUBOZNPVOUTQSPQBHBUFCBDLUPUIFQBSFOU   JG NPVOU   OPOF [email protected]"7&c[email protected]&$ /6-- \   GQSJOUG TUEFSS aNPVOUNBLFSTMBWFaGBJMFETaO     TUSFSSPS FSSOP    SFUVSO  ^ MJCOBNFTQBDFD [email protected]"7&ʹΑͬͯ͜ͷ/4ʹ ͓͚Δ͋ΒΏΔϚ΢ϯτͷมߋΛ ਌ʹ఻ൖ͠ͳ͍
  94.  JG NPVOU OBNF TZT TZTGT NPVOUqBHT /6--  \

      GQSJOUG TUEFSS NPVOUPGTZTGBJMFETaO TUSFSSPS FSSOP    SFUVSO  ^ MJCOBNFTQBDFD TZTGTΛϚ΢ϯτ͢Δ͜ͱͰ ࣮࣭ίϯςφԽ
  95. VOTIBSF OFUOT VOTIBSF NPVOUOT TMBWF SPPUTZTUFN TZT NPVOU JQOFUOTFYFD͸ ίϯςφͰ͋Δ

  96. VOTIBSF OFUOT VOTIBSF NPVOUOT TMBWF SPPUTZTUFN TZT NPVOU JQOFUOTFYFD͸ ίϯςφͰ͋Δ

    OFUOTͷ*'ʹ*1௥ՃͷΈ΍Γ͍ͨ ͷͰίϯςφͷػೳ͸͍Βͳ͍
  97. None
  98. ίϯςφऑͰϝϞϦރׇ ͭ·ΓɺϦιʔε࢖͍੾Εͨ

  99. γεςϜௐࠪίϚϯυອஊ

  100. w HEC5IF(/6%FCVHHFS w TUSBDF5SBDFTZTUFNDBMMTBOETJHOBMT w QFSG1FSGPSNBODFBOBMZTJTUPPMTGPS-JOVY w WBMHSJOEBTVJUFPGUPPMTGPSEFCVHHJOHBOEQSPpMJOHQSPHSBNT

  101. NSVCZ ͷ"1*ΫϥΠΞϯτ͕ ΊͬͪΌϝϞϦ࢖͏ NSVCZ DMJFOU "1*4FSWFS SFTPVSDFFYBNQMF NSVCZͷ$MJFOU͔Β͋Δ"1*Λ࣮ߦͯ͠ .#ͷϨεϙϯεΛऔಘ͢Δ +40/

  102. ॠؒతʹ(CZUF͘Β͍ ϝϞϦ͕ར༻͞ΕΔ

  103. WBMHSJOEͰϝϞϦͷΞϩέʔγϣϯΛݟΔ # valgrind curl http://localhost/resource/example > /dev/null … ==18619== HEAP

    SUMMARY: ==18619== in use at exit: 0 bytes in 0 blocks ==18619== total heap usage: 1,863 allocs, 1,863 frees, 211,125 bytes allocated # valgrind /home/pyama/mruby test.rb … ==12811== HEAP SUMMARY: ==12811== in use at exit: 0 bytes in 0 blocks ==12811== total heap usage: 51,721 allocs, 51,721 frees, 12,028,345,116 bytes allocated
  104. ʗ ?P? ʘ(

  105. TUSBDFͰγεςϜίʔϧͷ౷ܭΛऔΔ # strace -fc /home/pyama/mruby test.rb % time seconds usecs/call

    calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 73.00 0.006317 2 3361 munmap 23.27 0.002014 11 183 brk 2.62 0.000227 0 1734 read 1.11 0.000096 0 3380 mmap 0.00 0.000000 0 3 write 0.00 0.000000 0 16 open 0.00 0.000000 0 23 close NVONBQ͕ࢧ഑త IUUQTMJOVYKNPTEOKQIUNM-%[email protected]QBHFTNBONNBQIUNM
  106. QFSGΛར༻ͯ͠ίʔϧάϥϑΛऔಘ͢Δ # perf record --call-graph dwarf -- /home/pyama/mruby test.rb #

    perf report -g -G —stdio 94.35% 0.03% mruby mruby [.] mrb_str_plus | ---mrb_str_plus | --20.06%-- mrb_vm_exec mrb_vm_run … [email protected]@QMVT͕ࢧ഑త IUUQNSVCZPSHEPDTBQJIFBEFST[email protected]'TUSJOHIIUNM[email protected]@QMVTGVODUJPO
  107. πʔϧΛར༻ͯ͠ूΊͨ৘ใ͔Β ԾઃΛཱͯΔ w ॲཧ͸)551ϦΫΤετͰϨεϙϯεϘσΟ͸αΠζ͕େ͖͍ w ϝϞϦ(#࢖ͬͯΔΦϫλ w NVONBQ͕ࢧ഑తͰճ਺΋ଟ͍͜ͱ͔ΒɺϝϞϦͷ֬อɺղ์͕
 ଟ͍ͷͰ͸ͳ͍͔ʁ w

    [email protected]@QMVT͕ࢧ഑తͰ͋Δ͜ͱ͔Βɺจࣈྻ݁߹͕ଟ͍͜ͱ͕ݪҼʁ [email protected]@QMVTSVCZFbDlBz lCz`
  108. NSVCZTJNQMFIUUQ while (t = socket.read(1024)) if block_given? yield t next

    end response_text += t end CPEZΛCZUFͣͭಡΈɺ จࣈྻ݁߹͍ͯ͠Δ
  109. NSVCZTJNQMFIUUQ while (t = socket.read(4096)) if block_given? yield t next

    end response_text += t end ୯७ʹ͸όοϑΝαΠζΛ֦ு͠ɺ ಡΈࠐΈճ਺ΛݮΒͤ͹ϧʔϓ͸ݮΔ
  110. [email protected]@QMVT MRB_API mrb_value mrb_str_plus(mrb_state *mrb, mrb_value a, mrb_value b) {

    struct RString *s = mrb_str_ptr(a); struct RString *s2 = mrb_str_ptr(b); struct RString *t; t = str_new(mrb, 0, RSTR_LEN(s) + RSTR_LEN(s2)); memcpy(RSTR_PTR(t), RSTR_PTR(s), RSTR_LEN(s)); memcpy(RSTR_PTR(t) + RSTR_LEN(s), RSTR_PTR(s2), RSTR_LEN(s2)); return mrb_obj_value(t); } ݁߹ޙจࣈྻͷϝϞϦΛ Ξϩέʔτ
  111. [email protected]@QMVT B C  BC BC D  BCD BCD

    E  BCDE ϧʔϓ໨ όΠτ ϧʔϓ໨ όΠτ ϧʔϓ໨ όΠτ ݁ՌจࣈྻͷྖҬ͸৽ن࡞੒
  112. BC

  113. [email protected]@DBU MRB_API mrb_value mrb_str_cat(mrb_state *mrb, mrb_value str, const char *ptr,

    size_t len) { struct RString *s = mrb_str_ptr(str); size_t capa; size_t total; ptrdiff_t off = -1; ... resize_capa(mrb, s, capa); memcpy(RSTR_PTR(s) + RSTR_LEN(s), ptr, len); mrb_assert_int_fit(size_t, total, mrb_int, MRB_INT_MAX); RSTR_SET_LEN(s, total); RSTR_PTR(s)[total] = '\0'; /* sentinel */ return str; } ͍ΘΏΔSFBMMPDͰ طଘͷྖҬΛ֦ு͍ͯ͠Δ
  114. [email protected]@DBU B C  BC BC D  BCD BCD

    E  BCDE ϧʔϓ໨ όΠτ ϧʔϓ໨ όΠτ ϧʔϓ໨ όΠτ ݁ՌจࣈྻͷྖҬ͸ݩจࣈྻΛ֦ு
  115. [email protected]@QMVT TUSJOHlBCz TUSJOHlBz TUSJOHlCz  [email protected]@DBU TUSJOHlBCz TUSJOHlBz TUSJOHlCz 

    
  116. ͲΕ͘Β͍͕ࠩ͋Δͷ͔ʁ a = "aaa" b = "bbb" 100000.times do |n|

    a += b end a = "aaa" b = "bbb" 100000.times do |n| a << b end TVEPWBMHSJOENSVCZOFXSC  )&"146.."3: JOVTFBUFYJUCZUFTJOCMPDLT UPUBMIFBQVTBHF   CZUFTBMMPDBUFE TVEPWBMHSJOENSVCZDPODBUSC  )&"146.."3: JOVTFBUFYJUCZUFTJOCMPDLT UPUBMIFBQVTBHF  CZUFTBMMPDBUFE [email protected]@QMVT [email protected]@DPODBU ສϧʔϓͩͱ ϝϞϦΞϩέʔγϣϯഒ
  117. ଟ֯తͳௐࠪΛ͠Α͏ wखʹೃછΉπʔϧΛ͍͔ͭ࣋͘ͱ͏ wϓϩάϥϛϯάݴޠ΋ʮ࣮૷ʯ͕͋ΔͳΒ͹ɺݪҼ͸ ɹΘ͔Δ͜ͱ͕Ͱ͖Δ

  118. w HEC5IF(/6%FCVHHFS w TUSBDF5SBDFTZTUFNDBMMTBOETJHOBMT w QFSG1FSGPSNBODFBOBMZTJTUPPMTGPS-JOVY w WBMHSJOEBTVJUFPGUPPMTGPSEFCVHHJOHBOEQSPpMJOHQSPHSBNT

  119. ετϨʔδͷເͱల๬

  120. ʁʁʁʮຊ൪ͷXPSEQSFTTαΠτʹ BC͔͚ͨΒؔ܎ͳ͍αΠτ͕མͪ·ͨ͠ʯ

  121. ίϯςφͩΑͶʁ w DHSPVQΛར༻ͯ͠$16ɺϝϞϦͱ΋ʹϦιʔε੍ݶঢ়ଶ w Ұͭͷίϯςφͷෛՙ͕γεςϜϫΠυͰӨڹΛٴ΅͢͜ͱ͸ߟ͑ͮΒ͍

  122. QTFGcHSFQBQBDIFcHSFQ9 OTDE BQBDIF%'03&(306/%9 QFSGSFDPSEDBMMHSBQIEXBSGQ QFSGSFQPSUH(TUEJP BQBDIF[email protected]@[email protected]TP<>YCGD c YGEGGD c c;&/%@*/$-6%&@[email protected]&7"[email protected]&[email protected]$0/[email protected])"/%-&3

    c[email protected] cYGEGGD cc cc;&/%@*/$-6%&@[email protected]&7"[email protected]&[email protected]"[email protected])"/%-&3 cc[email protected] ccYGEGGD cc;&/%@*/$-6%&@[email protected]&7"[email protected]&[email protected]"[email protected])"/%-&3 cc[email protected] ccYGEGGD cc;&/%@*/$-6%&@[email protected]&7"[email protected]&[email protected]"[email protected])"/%-&3 cc[email protected] "QBDIF)551%͸9Λ͚ͭΔͱ γϯάϧϞʔυͰىಈ͢Δ
  123. TUSBDFGDQ UJNFTFDPOETVTFDTDBMMDBMMTFSSPSTTZTDBMM  PQFO GTUBU SFBE MTUBU SFDWGSPN XSJUF DMPTF

    TUBU QPMM TUSBDFͰ͸PQFO͕ଟ͍
  124. TUSBDFGDQ UJNFTFDPOETVTFDTDBMMDBMMTFSSPSTTZTDBMM  PQFO MTUBU XSJUFW SFBE XSJUF DMPTF TUBU

    ͨ·ʹΊͬͪΌ஗͍͕࣌͋Δ IUUQTMJOVYKNPTEOKQIUNM-%[email protected]QBHFTNBOTUBUIUNM
  125. ͦ΋ͦ΋1)1ͱετϨʔδ͸ ૬ੑ͕ѱ͍ w 1)1͸௨ৗϑΝΠϧΛ౎౓։͍ͯɺίϯύΠϧ࣮ͯ͠ߦ͢Δ w /"4 /'4 ʹ͓͍ͯখ͍͞ϑΝΠϧΛଟ͘։͘ͱ͍͏ͷ͸
 ύϑΥʔϚϯεతʹͱͯ΋ۤख

  126. Զͨͪͷ1)1ʹ͸ 01DBDIF͕͋Δ

  127. None
  128. ݴ͏ͯ΋ɺѱҙʹऑ͍ w XIJMFʙpOEʙFYFDͱ͔΍ΒΕΔͱ฼؋ϫΠυͰ཯଎ʹͳΔ w TFDDPNQ #1' Λར༻͢ΔͳͲ੍ݶΛݕ౼ SMJNJUͰ΋͍͍͔΋

  129. ࠓޙɺQZBNB͕ ΍͍͖͍ͬͯͨ͜ͱ ͕࣌ؒ͋Ε͹࿩͢

  130. IBDP3%4

  131. %)BDP

  132. ֵ৽తεέδϡʔϥ

  133. ·ͱΊ

  134. ࠓ೔࿩ͨ͜͠ͱͨͪ w ίϯςφͷϘτϧωοΫ͸-JOVYίϚϯυΛۦ࢖ͯ͠ɺݪ Ҽʹ͋ͨΓΛ෇͚ͯɺιʔεΛಡΉͷ͕Ԧಓ w ͦͷγεςϜίʔϧ͕ԿΛ͢Δͷ͔جૅతֶश͕ඞཁ w ίϯςφ͸͋͘·ͰϓϩηεͰ͋Δ

  135. w TMVCɿTMBCPCKFDUͷ࡞੒ॲཧΛݟ͍ͯ͘ IUUQT LFSOIBDLIBUFOBCMPHDPNFOUSZ   w 4ZTUFNEೖ໳  1SJWBUF5NQͷ࣮૷ΛݟΔ

    IUUQ FOBLBJIBUFOBCMPHDPNFOUSZ  ࢀߟจݙ
  136. 5IBOLZPV ࠷৽ͷ࠾༻৘ใΛνΣοΫˠ [email protected]

  137. 2"