$30 off During Our Annual Pro Sale. View Details »

AWSが支えるEightリコメンデーションエンジンの裏側

 AWSが支えるEightリコメンデーションエンジンの裏側

AWS Dev Dey Tokyo 2017 Day4(Serverless evolution day) 講演資料
- Eightのリコメンデーションについて
- サーバーレスを用いたアーキテクチャ刷新
- AWS Step Functions を用いたリコメンドデータ洗い替え

## 動画
https://www.youtube.com/watch?v=e6afrxI6p04

Yasunori Suzuki

June 05, 2017
Tweet

More Decks by Yasunori Suzuki

Other Decks in Technology

Transcript

  1. "84͕ࢧ͑Δ &JHIUϦίϝϯσʔγϣϯΤϯδϯ ͷཪଆ 4BOTBOגࣜձࣾɹ&JHIUࣄۀ෦
 ླ໦߁׮  "84%FW%BZ5PLZP %BZ

  2. 

  3. 

  4. ླ໦߁׮ w 3VCZͰαʔϏεج൫΍"1*࡞ͬͨΓ w ࠷ۙ͸1ZUIPOͰ-BNCEB࣮૷ͱ͔ w ւ֎ཱྀߦ޷͖ ϦίϝϯσʔγϣϯνʔϜ νʔϜϦʔμ݉ςΫχΧϧɾΞʔΩςΫτ 

  5. 

  6. ܭαʔϏεҎ্ 

  7. αʔόʔϨε Ϗοάσʔλ º 

  8. ΞδΣϯμ &JHIUʹ͓͚ΔϦίϝϯσʔγϣϯ ϦίϝϯυΞʔΩςΫνϟ࡮৽ Ϧίϝϯυσʔλચ͍ସ͑ 

  9. &JHIUʹ͓͚Δ Ϧίϝϯσʔγϣϯ 

  10. ݸ ਓ ޲ ͚ ໊ ࢗ Ξ ϓ Ϧ 

  11. ʮ ໊ ࢗ Λ Ϗ δ ω ε ͷ ͭ

    ͳ ͕ Γ ʯ ʹ ม ͑Δ 
  12. ໊ ࢗ ͷ σ ʔ λ Խ 

  13. ͭ ͳ ͕ ͬ ͨ ૬ ख ͱ ί ϛ

    ϡ χέ ʔ γ ϣ ϯ 
  14. ໊ࢗަ׵ 

  15. - - - ೥໊ؒࢗަ׵"
 ໿ 

  16. - - -  ໿ ԯຕ

  17. Ϗοάσʔλ 

  18. ໊ࢗ؅ཧ͔Β ϏδωεωοτϫʔΫ΁ 

  19. ͭͳ͕Γ 

  20. w ໊ࢗ৘ใͷΞοϓσʔτ w ϑΟʔυ౤ߘӾཡ w ϝοηʔδૹड৴ ωοτϫʔΫ ׆ੑԽ  ͭͳ͕Δ͜ͱͰ

  21. ͭͳ͕ΓΛՃ଎ͤ͞Δٕज़ 

  22. ར༻ऀҰਓͻͱΓͷᅂ޷ʹ߹Θͤ
 ίϯςϯπΛਪન Ϧίϝϯσʔγϣϯ 

  23. ਓ෺Λਪન 

  24. ໊ࢗަ׵ϦΫΤετ⬆ ͭͳ͕Γ⬆ ঝೝ⬆ ʮͭͳ͕ΓʯΛޮ཰తʹੜΈग़͢ 

  25. Ϧίϝϯσʔγϣϯ Τϯδϯ 

  26. ࣮͸ɺ
 ೥΄Ͳલ͔Βಋೖ 

  27. چϦίϝϯσʔγϣϯΤϯδϯ ໊ࢗ௥Ճ ͭͳ͕ͬͨ ੜ ੒ ୭͕୭ʹԿΛ͔ͨ͠ ϢʔβʔΞΫςΟϏςΟ Ϧίϝϯυ
 ܭࢉΤϯδϯ ຖ೔

    ຖि Ұ౓ɺόονॲཧͰߋ৽ 
  28. ͔͠͠ɺ 

  29. 3FETIJGU w ແବʹෳࡶͳΫΤϦ  $MPVE4FBSDI w શจݕࡧͱͯ͠࢖ͬͯͳ͔ͬͨ@TDPSF w ߋ৽·ͰͷϨΠςϯγʔ

  30. ͭ͗͸͗ ΞʔΩςΫνϟ 

  31. ૿͑ͳ͍ ͭͳ͕Γ 

  32. w ύϑΥʔϚϯε⬇ w ΦϖϨʔγϣϯίετ⬆ 

  33. ࠷దͳ"84αʔϏε બఆͷॏཁੑ 

  34. Ϧίϝϯυ ΞʔΩςΫνϟ࡮৽ 

  35. ࡮৽ͷνϟϯε౸དྷ  ࡢ೥݄

  36. Ϧίϝϯυʹ࠷దͳ ΞʔΩςΫνϟઃܭͱ͸ 

  37. Ϧίϝϯσʔγϣϯͷཁ σʔλ෼ੳ ΞϧΰϦζϜ ϦΞϧλΠϜϑΟʔυόοΫ  γχΞσʔλαΠΤϯςΟετᐌ͘

  38. ௚ۙͷग़ձ͍Λେࣄʹ  σʔλͷ઱౓͕ྑ͍΄Ͳɺ Ϣʔβʔ͸ϦΫΤετঝೝΛ͠΍͘͢ͳΔ ͭͳ͕Δ

  39. lϦΞϧλΠϜz 
 ϦίϝϯσʔγϣϯΤϯδϯ 

  40. ։ൃظؒ
 ϲ݄ 

  41. ৚݅ • 2ϲ݄Ͱ͖Δ͜ͱʹϑΥʔΧε ɾεέʔϥϏϦςΟ  ˠϦΞϧλΠϜੑΛ୲อ͠ɺ๲େͳσʔλΛॲཧͰ͖Δ͜ͱ

  42. ϨʔςΟϯάσʔλ  ୭͕୭ʹԿΛ͔ͨ͠ ϢʔβʔΞΫςΟϏςΟ ϦΞϧλΠϜੑΛ୲อ͢ΔͨΊʹ தؒσʔλΛ࣋ͭ ੜϩά Ϩίʔυʹ৘ใΛ·ͱΊΔ ୭͕ "͞Μ

    9͞Μ ୭ʹ #͞Μ :͞Μ ͭͳ͕Γঢ়ଶ ͭͳ͕͍ͬͯΔ ʜ ͍͍Ͷճ਺ ճ ʜ ϝοηʔδճ਺ ճ ʜ ౤ߘγΣΞճ਺ ճ ʜ '#ͭͳ͕Γ ͳ͠ ʜ
  43. ߏ૝ ɾϩά෦෼͸طଘͷ3FETIJGUͷσʔλΛ׆༻ wதؒσʔλߋ৽ʹ,JOFTJT -BNCEB͕࢖͑ͦ͏ w஌ݟ͕͋Δ%ZOBNP%#ΛετϨʔδʹ wγϟʔυ਺ΩϟύγςΟΛ্͛Δ͜ͱͰεέʔϧ 

  44. ͜Ε᷿ͬͯͰ࿩୊ͷ 

  45.  αʔόʔϨε ΞʔΩςΫνϟ

  46. ܹಈͷϲ݄Λܦͯ ɻɻɻ ৭ʑলུ 

  47. ৽ Ϧίϝϯσʔγϣϯ Τϯδϯ ஀ੜ 

  48. ར༻"84αʔϏε ετϨʔδ ίϯγϡʔϚ -BNCEB %ZOBNP%# &MBTUJ$BDIF 3FETIJGU  ετϦʔϜ %ZOBNP%#

    4USFBNT ,JOFTJT4USFBNT
  49. logging Streaming Triggered Write Send Message Polled Get Write Triggered

    Set Ϣʔβʔ ΞΫςΟϏςΟ Get Set 8FCαʔόʔ #BUDIαʔόʔ Ϧίϝϯυ ݁Ռ Triggered ϩάऩू ϨʔςΟϯάσʔλ
 தؒσʔλ ੜ੒ ϨʔςΟϯάσʔλ
 Ωϟογϡੜ੒ ਪનσʔλܭࢉɾ ੜ੒ Triggered 
  50. ΄΅  αʔόʔϨε ΞʔΩςΫνϟ 

  51. Ϧίϝϯυ݁Ռ͕ ϦΞϧλΠϜͰੜ੒͞ΕΔ 

  52. ΄Ͳɺ ؁͘͸ͳ͔ͬͨʂʂ 

  53. αʔόʔϨε͸
 ເͷπʔϧͰ͸ͳ͔ͬͨ 

  54. αʔόϨεʹର͢Δޡղ w ύϑΥʔϚϯε⬆ w ΦϖϨʔγϣϯίετ⬇ 

  55. αʔόϨεʹର͢Δޡղ w ύϑΥʔϚϯε⬆ w ΦϖϨʔγϣϯίετ⬇ ❌ ❌ 

  56. ύϑΥʔϚϯε 

  57. ύϑΥʔϚϯε໰୊ ϢʔβΞΫςΟϏςΟ ϨʔςΟϯάσʔλ  ෼ؒͷΞΫςΟϏςΟ͕ ࣌ؒͨͬͯ΋ॲཧͰ͖ͳ͍ ໿݅NJO

  58. Ͳ͏͔ͨ͠ʁ 

  59. ղܾํ๏  ,JOFTJT 4USFBNT 1VU3FDPSETͰϦΫΤετΛ·ͱΊΔ -BNCEB ϝϞϦઃఆͰϦιʔεΛ૿΍͢ %ZOBNP%# #BUDIXSJUFͰ·ͱΊͯॻ͖ࠐΈ

  60. 1VUSFDPSETͰ·ͱΊͯϦΫΤετ Put record Put records #FGPSF "GUFS 

  61. ϝϞϦઃఆ͸ίϯϐϡʔςΟϯάϦιʔεͷઃఆ .# .# 

  62. #BUDIXSJUFͰҰׅอଘ Put item Batch write item #FGPSF "GUFS 

  63. ύϑΥʔϚϯε վળ✨ 

  64. ΦϖϨʔγϣϯ ίετ 

  65. 'VODUJPO਺ͷ૿Ճ໰୊ ॲཧͷ୯७Խ͍ͨ͠ 'VODUJPO਺ͷ૿Ճ ؅ཧ͖͠Εͳ͍ ιʔείʔυ؅ཧͱ'VODUJPO਺ͷ τϨʔυΦϑΛղܾ͢Δ 

  66. ετϦʔϜίϯγϡʔϚ໰୊ ετϦʔϜͱίϯγϡʔϚͷόϥϯεΛͱΔ 3FBE1SPWJTJPOFE 5ISPVHIQVU&YDFFEFE͕ ൃੜ͠΍͘͢ͳΔ ετϦʔϜ਺ͷ૿Ճ ؅ཧ͖͠Εͳ͍ ίετ૿ 

  67. Ͳ͏͔ͨ͠ʁ 

  68. ղܾํ๏  -BNCEB ετϦʔϜͷ൑ผʹΑΓɺ -BNCEBΛ࡟ݮ͢Δ ,JOFTJT 4USFBNT ֨ೲ͢ΔύϥϝʔλΛ޻෉ͯ͠ɺ
 4USFBNͱ-BNCEBΛ࡟ݮ͢Δ

  69. ετϦʔϜͷ ൑ผ✨ 

  70. ҟͳΔετϦʔϜ͔Β ಉ͡Α͏ͳॲཧΛ͍ͤͨ͞έʔε ͲͷετϦʔϜ͔Λ൑ผ͠ɺॲཧΛ෼ذ -BNCEBΛ·ͱΊɺετϦʔϜΛ൑ผ { ‘eventSource’: ‘aws:kinesis’, ‘eventSourceARN’: ‘arn:aws:kinesis:Stream1’, }

    { ‘eventSource’: ‘aws:dynamodb’, ‘eventSourceARN’: ‘arn:aws:dynamodb:xxxx’, } { ‘eventSource’: ‘aws:kinesis’, ‘eventSourceARN’: ‘arn:aws:kinesis:Stream2’, } 
  71. ύϥϝʔλΛ ޻෉✨ 

  72. ಉ͡ύϥϝʔλͰ ҟͳΔॲཧΛ͍ͤͨ͞έʔε {‘data’: 1} {‘data’: 1} {‘data’: 1} {‘key’: ‘func1’,

    ’data’: 1} {‘key’: ‘func2’, ’data’: 1} {‘key’: ‘func3’, ’data’: 1} ύϥϝʔλʹΑΓॲཧΛ෼ذ {’data’: 1} 4USFBNΛॻ͖໭͢ ෼਎ͷज़ 
  73. ࠷খݶͰ ؅ཧ͠΍͘͢✨ 

  74. w ύϑΥʔϚϯε⬆ w ΦϖϨʔγϣϯίετ⬇ 

  75. αʔόʔϨεԽ ϦΞϧλΠϜԽ 

  76. lϦΞϧλΠϜz 
 ϦίϝϯσʔγϣϯΤϯδϯ 

  77. Ϧίϝϯυσʔλ ચ͍ସ͑ 

  78. ϨʔςΟϯάσʔλ ͷ௠෗Խ  ࢒Δ՝୊

  79.  &JHIUຊαʔϏεଆͷσʔλߏ଄ͷมߋ  σʔλෆ੔߹ͷൃੜ  ϦίϝϯυΞϧΰϦζϜͷมߋ  ݪҼ

  80. ࣮ࡍʹൃੜ 

  81. ୭͕ "͞Μ 9͞Μ ୭ʹ #͞Μ :͞Μ ͭͳ͕Γঢ়ଶ ͭͳ͕͍ͬͯΔ ʜ ͍͍Ͷճ਺

    ճ ʜ ϝοηʔδճ਺ ճ ʜ ౤ߘγΣΞճ਺ ճ ʜ '#ͭͳ͕Γ ͳ͠ ʜ ࠓ·Ͱؤுͬͯ஝ੵͨ͠΋ͷ͸ແʹؐΔ ❌  ALTER TABLE ͱ͔ͳ͍ͷͰ
  82. Ͳ͏͔ͨ͠ʁ 

  83. શաڈϩάΛूܭͯ͠ ϨʔςΟϯάσʔλΛ ࡞Γ௚͢✨ 

  84. %BUB1JQFMJOFΛར༻ چςʔϒϧ
 ෆཁʹͳͬͨΒ࡟আ ৽ςʔϒϧ 3FETIJGU ❌ Redshift Copy Activity Hive

    Activity  ૯*UFN਺ສ௒ 8SJUF$BQBDJUZ  ʹઃఆͯ͠ ਺͔͔࣌ؒΔ

  85. γεςϜશମͰߟ͑Δͱ 

  86. logging Streaming Triggered Write Send Message Polled Get Write Triggered

    Set Ϣʔβʔ ΞΫςΟϏςΟ Get Set 8FCαʔόʔ #BUDIαʔόʔ Ϧίϝϯυ ݁Ռ Triggered Triggered 
  87. logging Streaming Triggered Write Send Message Polled Get Write Triggered

    Set Ϣʔβʔ ΞΫςΟϏςΟ Get Set 8FCαʔόʔ #BUDIαʔόʔ Ϧίϝϯυ ݁Ռ Triggered Triggered -BNCEBఀࢭ   
  88. logging Streaming Triggered Write Send Message Polled Get Write Triggered

    Set Ϣʔβʔ ΞΫςΟϏςΟ Get Set 8FCαʔόʔ #BUDIαʔόʔ Ϧίϝϯυ ݁Ռ Triggered Triggered -BNCEBఀࢭ ৽σʔλੜ੒   
  89. logging Streaming Triggered Write Send Message Polled Get Write Triggered

    Set Ϣʔβʔ ΞΫςΟϏςΟ Get Set 8FCαʔόʔ #BUDIαʔόʔ Ϧίϝϯυ ݁Ռ Triggered Triggered -BNCEBఀࢭ Replace ςʔϒϧೖΕସ͑ ৽σʔλੜ੒   
  90. logging Streaming Triggered Write Send Message Polled Get Write Triggered

    Set Ϣʔβʔ ΞΫςΟϏςΟ Get Set 8FCαʔόʔ #BUDIαʔόʔ Ϧίϝϯυ ݁Ռ Triggered Triggered -BNCEBఀࢭ Replace ςʔϒϧೖΕସ͑ ৽σʔλੜ੒ Ωϟογϡ ɹ΢ΥʔϜΞοϓ    
  91. logging Streaming Triggered Write Send Message Polled Get Write Triggered

    Set Ϣʔβʔ ΞΫςΟϏςΟ Get Set 8FCαʔόʔ #BUDIαʔόʔ Ϧίϝϯυ ݁Ռ Triggered Triggered -BNCEBఀࢭ Replace ςʔϒϧೖΕସ͑ -BNCEB࠶։ ৽σʔλੜ੒ Ωϟογϡ ɹ΢ΥʔϜΞοϓ  
  92. ৺ଁόΠύεखज़ͷΑ͏ 

  93. ͔͠΋ 

  94. ର৅͸ςʔϒϧଘࡏ ࢦఆͨ͠΋ͷ͚ͩચ͍ସ͍͑ͨ  ϨʔςΟϯάσʔλ
 *UFN਺໿ສ ϨʔςΟϯάσʔλ *UFN਺໿ສ ϨʔςΟϯάσʔλ
 *UFN਺໿ສ

  95. ͜Μͳͷ खͰ ΍ͬͯΒΕͳ͍ 

  96. μ΢ϯλΠϜແ͠Ͱߦ͏ʹ͸ ϫʔΫϑϩʔ؅ཧ͕ඞਢ 

  97. αʔόʔϨεͰઈର׬͍݁ͨ͠ 

  98. ࡢ೥ ݄ 

  99. ح੻తͳλΠϛϯάͰ ਆΞοϓσʔτʂʂ 

  100. 4UFQ'VODUJPOT✨ 

  101. ෳ਺ͷ-BNCEBॲཧΛ·ͱΊͯ ϫʔΫϑϩʔ؅ཧͰ͖ΔΑ͏ʹ͢ΔαʔϏε 

  102. %BUB1JQFMJOF͸ ׆͔͍ͨ͠ 

  103. 0O %BUB1JQFMJOF 4UFQ'VODUJPOT αʔόʔϨεͰσʔλચ͍ସ͑ 

  104. ՝୊ w 4UFQ'VODUJPOT͔Β%BUB1JQFMJOFͷঢ়ଶ؅ཧ w -BNCEBͷ5JNFPVU໰୊ w ચ͍ସ͑ର৅ςʔϒϧͷࢦఆํ๏ w Ωϟογϡͷ΢ΥʔϜΞοϓ໰୊ w

    μ΢ϯλΠϜແ͠Ͱચ͍ସ͑ 
  105. Ͳ͏͔ͨ͠ʁ 

  106. ղܾํ๏  %BUB1JQFMJOFͷঢ়ଶ؅ཧ %BUB1JQFMJOFͷঢ়ଶΛอ࣋ -BNCEBͷ5JNFPVU໰୊ 3FUSZΛ׆༻ ચ͍ସ͑ର৅ςʔϒϧͷ ࢦఆํ๏ 1BSBMMFM$IPJDFΛ׆༻ Ωϟογϡͷ

    ΢ΥʔϜΞοϓ໰୊ ɹɹ Ͱߴ଎ʹ΢ΥʔϜΞοϓ μ΢ϯλΠϜແ͠Ͱ ચ͍ସ͑ "U5JNFTUBNQࢦఆͰτϦΨʔઃఆ
  107. %BUB1JQFMJOFͷ ঢ়ଶ؅ཧ 

  108.  4UFQ'VODUJPOT ಺෦ͷঢ়ଶ͔͠஌Βͳ͍ Step1 Step2 Step3 ❓

  109. %ZOBNP%#ʹ %BUB1JQFMJOFͷ׬ྃঢ়ଶΛ࣋ͨͤΔ Activate Alarm Trigger Put record Polling  Step1

    Step2 Step3 %BUB1JQFMJOFঢ়ଶอ࣋ςʔϒϧ
  110. -BNCEBͷ λΠϜΞ΢τ໰୊ 

  111.  Step1 Step2 Step3 σʔλͷΠϯϙʔτʹ ਺͔͔࣌ؒΔ λΠϜΞ΢τൃੜ

  112. ׬͍ྃͯ͠ͳ͍৔߹͸ Τϥʔѻ͍ͱ͠ɺఆִؒͰϦτϥΠ Polling "Retry" : [{ "ErrorEquals": [ "States.ALL" ],

    "IntervalSeconds": 300, "MaxAttempts": 100, "BackoffRate": 1.0 }], If: error  Step1 Step2 Step3 else: success %BUB1JQFMJOF ঢ়ଶอ࣋ςʔϒϧ Retry
  113. ચ͍ସ͑ର৅ͷ ࢦఆํ๏ 

  114. Choice Choice Choice Parallel  1BSBMMFMΛ࢖༻͠ฒྻʹ $IPJDFͰॲཧΛ෼ذ ϨʔςΟϯά ςʔϒϧ ϨʔςΟϯά

    ςʔϒϧ ϨʔςΟϯά ςʔϒϧ
  115. ೖྗ͢Δ+40/Λ޻෉͠ɺ ࢦఆςʔϒϧͷΈચ͍ସ͑ Choice Choice Choice Parallel  { "RatingTable1": false,

    "RatingTable2": true, "RatingTable3": false }
  116. Ωϟογϡͷ ΢ΥʔϜΞοϓ໰୊ 

  117. Ϣʔβʔ ΞΫςΟϏςΟ 8FCαʔόʔ Ϧίϝϯυ ݁Ռ  Get %ZOBNP%#ʹ ϑΣʔϧΦʔόʔ ❌

    4MPXEPXO⬇ Get Item ΢ΥʔϜΞοϓ ͍ͯ͠ͳ͍ͱ
  118. %BUB1JQFMJOF  %ZOBNP%#4USFBN  -BNCEB✨ 

  119. ΩʔσʔλΛ ҰׅΠϯϙʔτ͠ɺ ετϦʔϜʹҰؾʹྲྀ͢ %ZOBNP%#4USFBNܦ༝Ͱ ΩϟογϡΛͻͨ͢Βߴ଎ੜ੒ Triggered Caching  [ :key1,

    :key2, :key3, :key4, ], Rating data table )BTILFZ DPVOU TDPSF LFZ   LFZ   LFZ   LFZ   Get by :key1 {hash_key: :key1, count:1, score:1} -BNCEB͕ෳ਺ىಈ ΢ΥʔϜΞοϓ༻
 ςϯϙϥϦςʔϒϧ
  120. μ΢ϯλΠϜແ͠ Ͱચ͍ସ͑ 

  121. -BNCEBఀࢭલ -BNCEB࠶։ޙ  શաڈϩά͔Β%BUB1JQFMJOFͰ ϨʔςΟϯάσʔλΛҰׅੜ੒ ετϦʔϜ͔Β-BNCEBͰ ϨʔςΟϯάσʔλΛ౎౓ੜ੒

  122. "U5JNFTUBNQͰτϦΨʔઃఆ  Latest Oldest refreshed_at Starting Position: At Timestamp =

    refreshed_at ࢦఆ࣌ࠁ SFGSFTIFE@BU ΑΓ΋ ৽͍͠΋ͷΛॲཧ
  123. σʔλҰׅੜ੒ͱ-BNCEBॲཧ ͷ଍ฒΈΛἧ͑Δ SFGSFTIFE@BU SFGSFTIFE@BU Starting Position: 
 At Timestamp import

    all put each 
  124.  ͍ͭʹ શࣗಈԽ

  125.  ࣄલ४උ
 ɾ-BNCEBఀࢭ ϨʔςΟϯάσʔλચ͍ସ͑ ɾ৽σʔλҰׅੜ੒
 ɾ%ZOBNP%#ςʔϒϧ࡞੒
 ɾσʔλΠϯϙʔτ ɾςʔϒϧ੾Γସ͑ Ωϟογϡ΢ΥʔϜΞοϓ ɾϋογϡΩʔςʔϒϧ࡞੒

    ɾϋογϡΩʔΠϯϙʔτ ɾ΢ΥʔϜΞοϓ࣮ߦ ࣄޙॲཧ
 ɾ-BNCEB࠶։ ɾෆཁϦιʔε࡟আ
  126.  w ܭສ݅ w ໿࣌ؒ

  127. ΞʔΩςΫνϟͷ શ๴͕ 

  128. logging Streaming Triggered Write Send Message Polled Get Write Triggered

    Set Ϣʔβʔ ΞΫςΟϏςΟ Get Set 8FCαʔόʔ #BUDIαʔόʔ Ϧίϝϯυ ݁Ռ Triggered Triggered Replace  σʔλચ͍ସ͑ػߏ 4UFQ'VODUJPOT
  129. ·ͱΊ 

  130. αʔόʔϨεͷՄೳੑ 

  131. αʔόʔϨεͷར఺ ؾܰ͞ εέʔϥϏϦςΟ ॊೈੑ 

  132. ਖ਼͘͠࢖͏͜ͱͷՁ஋ 

  133.