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

オンライン予約徹底解説 #railsdm2019

オンライン予約徹底解説 #railsdm2019

Rails Developers Meetup 2019 https://railsdm.github.io/ での発表資料です

Masato Nakamura

March 22, 2019
Tweet

More Decks by Masato Nakamura

Other Decks in Programming

Transcript

  1. ΦϯϥΠϯ༧໿పఈղઆ
    גࣜձࣾτϨλதଜਅਓ !N@OBLBNVSB

    View full-size slide

  2. w தଜਅਓ !N@OBLBNVSB

    w αʔόαΠυΤϯδχΞ
    w τϨλͷશͯͷ"1*ͷ։ൃɾӡ༻
    w τϨλ/PXͷ։ൃɾӡ༻
    ࣗ ݾ ঺ հ

    View full-size slide

  3. 21 00
    4 ໊
    ։࢝
    21 15

    ϨετϥϯτϨλ
    ༧ࢉͷ໨҆ ϥετΦʔμʔ
    ¥6,000 23 00
    ϑϨϯν
    ͓ళʹి࿩ ϧʔτ࠶ݕࡧ ڞ༗ ళฮ৘ใ ༧໿औফ
    Ҡಈத
    STEP 3
    ϑϨϯν
    ϨετϥϯτϨλ
    ༧ࢉͷ໨҆
    ڑ཭ͷ໨҆ ϥετΦʔμʔ
    ¥6,000
    5෼ 23 00
    ॅॴ ౦ژ౎඼઒۠੢ޒ൓ా
    ళฮ৘ใ
    མͪண͍ͨงғؾͷதͰɺ৺Ώ͘·Ͱ৯ࣄΛຯΘͬͯ
    ͍ͩ͘͞ɻ
    ͓ళͷઆ໌
    ύελͷछྨ๛෋ɻύελҎ֎ʹ΋ɺ೑ɺνʔζɺ໺
    ࡊ΍ΩϊίͳͲʮࢁʯͷΠλϦΞϯ
    ྉཧͷઆ໌
    εϓϚϯςɺ੺ϫΠϯɺനϫΠϯɺੜϏʔϧɺϋΠ
    υϦϯΫͷઆ໌
    ։໊࢝Ͱ༧໿͢Δ
    STEP 2
    ۙ͘ͷ͓ళΛ୳͢
    21 15 ։࢝
    3
    2 5 6
    4
    ͝ར༻ਓ਺Λબ୒͍ͯͩ͘͠͞ɻ
    21 00
    STEP 1

    View full-size slide

  4. ҿ৯ళͷΦϯϥΠϯ༧໿͸೉͍͠

    View full-size slide

  5. ࢴͷ༧໿୆ா
    ҿ ৯ ళ ͷ Φ ϯ ϥ Π ϯ ༧ ໿
    ΋ͱ΋ͱҿ৯ళͰ࢖ΘΕ͍ͯͨ

    View full-size slide

  6. ෳ਺ͷάϧϝϝσΟΞͷࡏݿΛૢ࡞
    ҿ ৯ ళ ͷ Φ ϯ ϥ Π ϯ ༧ ໿

    View full-size slide

  7. ֤άϧϝαΠτ΁ͷࡏݿܝग़
    ྫɿ੮਺͕੮ͷళฮ
    Χ΢ϯλʔ º
    ໊ςʔϒϧ º
    ໊ςʔϒϧ º
    ߹ܭ੮

    άϧϝϝσΟΞ"

    άϧϝϝσΟΞ#

    άϧϝϝσΟΞ$

    άϧϝϝσΟΞ%

    άϧϝϝσΟΞ&
    ҿ ৯ ళ ͷ Φ ϯ ϥ Π ϯ ༧ ໿

    View full-size slide

  8. ҿ ৯ ళ ͷ Φ ϯ ϥ Π ϯ ༧ ໿
    ༧໿୆ாͷσδλϧԽͱసه࡞ۀͷࣗಈԽ
    ׬શͳΦϯϥΠϯ༧໿ͷͨΊʹඞཁͳͷ͸

    View full-size slide

  9. $0/'*%&/5*"-5PSFUB*OD "MM3JHIU3FTFSWFE
    ҿ ৯ ళ ͷ Φ ϯ ϥ Π ϯ ༧ ໿

    View full-size slide

  10. τϨλͷ༧໿ΦϖϨʔγϣϯ

    View full-size slide

  11. ͋ΒΏΔํ๏ͰτϨλʹ༧໿ΛೖΕΔ
    τ Ϩ λ ͷ ༧ ໿ Φ ϖ Ϩ ʔ γ ϣ ϯ

    View full-size slide

  12. (PPHMFͰ༧໿
    τ Ϩ λ ͷ ༧ ໿ Φ ϖ Ϩ ʔ γ ϣ ϯ

    View full-size slide

  13. ༧໿৘ใ ސ٬৘ใ
    DB DB
    ి࿩༧໿

    ໿


    ༧໿ͷσʔλԽ
    ి࿩༧໿ͷ߹ཧԽ
    τ Ϩ λ ͷ α ʔ Ϗ ε ߏ ଄
    τϨλϑΥϯ
    ίϯλΫτηϯλʔ
    *73
    Φ΢ϯυϝσΟΞ
    τϨλ΢Σϒ༧໿
    3FTFSWBUJPO"1*
    Φ΢ϯυڧԽ
    ސ٬઀఺ͷڧԽ
    άϧϝαΠτ
    (PPHMFͰ༧໿
    τϨλOPX
    ϝσΟΞίωΫτ
    ϝσΟΞίϯτϩʔϥʔ
    ΦϯϥΠϯ༧໿ීٴ
    ू٬ࢧԉ
    $3.
    ϝοηʔδϯά
    ސ٬Ϧαʔν
    جװγεςϜ࿈ܞ
    ݱ৔ࢧԉ
    $3.ڧԽ
    ސ٬ߦಈσʔλ
    $3.ڧԽ
    άϧϝαΠτ
    104ίωΫτ

    View full-size slide

  14. ༧໿৘ใ ސ٬৘ใ
    DB DB
    ి࿩༧໿

    ໿


    ༧໿ͷσʔλԽ
    ి࿩༧໿ͷ߹ཧԽ
    τ Ϩ λ ͷ α ʔ Ϗ ε ߏ ଄
    τϨλϑΥϯ
    ίϯλΫτηϯλʔ
    *73
    Φ΢ϯυϝσΟΞ
    τϨλ΢Σϒ༧໿
    3FTFSWBUJPO"1*
    Φ΢ϯυڧԽ
    ސ٬઀఺ͷڧԽ
    άϧϝαΠτ
    (PPHMFͰ༧໿
    τϨλOPX
    ϝσΟΞίωΫτ
    ϝσΟΞίϯτϩʔϥʔ
    ΦϯϥΠϯ༧໿ීٴ
    ू٬ࢧԉ
    $3.
    ϝοηʔδϯά
    ސ٬Ϧαʔν
    جװγεςϜ࿈ܞ
    ݱ৔ࢧԉ
    $3.ڧԽ
    ސ٬ߦಈσʔλ
    $3.ڧԽ
    άϧϝαΠτ
    104ίωΫτ

    View full-size slide

  15. ༧໿৘ใ ސ٬৘ใ
    DB DB
    ి࿩༧໿

    ໿


    ༧໿ͷσʔλԽ
    ి࿩༧໿ͷ߹ཧԽ
    τ Ϩ λ ͷ α ʔ Ϗ ε ߏ ଄
    τϨλϑΥϯ
    ίϯλΫτηϯλʔ
    *73
    Φ΢ϯυϝσΟΞ
    τϨλ΢Σϒ༧໿
    3FTFSWBUJPO"1*
    Φ΢ϯυڧԽ
    ސ٬઀఺ͷڧԽ
    άϧϝαΠτ
    (PPHMFͰ༧໿
    τϨλOPX
    ϝσΟΞίωΫτ
    ϝσΟΞίϯτϩʔϥʔ
    ΦϯϥΠϯ༧໿ීٴ
    ू٬ࢧԉ
    $3.
    ϝοηʔδϯά
    ސ٬Ϧαʔν
    جװγεςϜ࿈ܞ
    ݱ৔ࢧԉ
    $3.ڧԽ
    ސ٬ߦಈσʔλ
    $3.ڧԽ
    άϧϝαΠτ
    104ίωΫτ

    View full-size slide

  16. ༧໿৘ใ ސ٬৘ใ
    DB DB
    ి࿩༧໿

    ໿


    ༧໿ͷσʔλԽ
    ి࿩༧໿ͷ߹ཧԽ
    τ Ϩ λ ͷ α ʔ Ϗ ε ߏ ଄
    τϨλϑΥϯ
    ίϯλΫτηϯλʔ
    *73
    Φ΢ϯυϝσΟΞ
    τϨλ΢Σϒ༧໿
    3FTFSWBUJPO"1*
    Φ΢ϯυڧԽ
    ސ٬઀఺ͷڧԽ
    άϧϝαΠτ
    (PPHMFͰ༧໿
    τϨλOPX
    ϝσΟΞίωΫτ
    ϝσΟΞίϯτϩʔϥʔ
    ΦϯϥΠϯ༧໿ීٴ
    ू٬ࢧԉ
    $3.
    ϝοηʔδϯά
    ސ٬Ϧαʔν
    جװγεςϜ࿈ܞ
    ݱ৔ࢧԉ
    $3.ڧԽ
    ސ٬ߦಈσʔλ
    $3.ڧԽ
    άϧϝαΠτ
    104ίωΫτ

    View full-size slide

  17. ༧໿৘ใ ސ٬৘ใ
    DB DB
    ి࿩༧໿

    ໿


    ༧໿ͷσʔλԽ
    ి࿩༧໿ͷ߹ཧԽ
    τ Ϩ λ ͷ α ʔ Ϗ ε ߏ ଄
    τϨλϑΥϯ
    ίϯλΫτηϯλʔ
    *73
    Φ΢ϯυϝσΟΞ
    τϨλ΢Σϒ༧໿
    3FTFSWBUJPO"1*
    Φ΢ϯυڧԽ
    ސ٬઀఺ͷڧԽ
    άϧϝαΠτ
    (PPHMFͰ༧໿
    τϨλOPX
    ϝσΟΞίωΫτ
    ϝσΟΞίϯτϩʔϥʔ
    ΦϯϥΠϯ༧໿ීٴ
    ू٬ࢧԉ
    $3.
    ϝοηʔδϯά
    ސ٬Ϧαʔν
    جװγεςϜ࿈ܞ
    ݱ৔ࢧԉ
    $3.ڧԽ
    ސ٬ߦಈσʔλ
    $3.ڧԽ
    άϧϝαΠτ
    104ίωΫτ

    View full-size slide

  18. ༧໿৘ใ ސ٬৘ใ
    DB DB
    ి࿩༧໿

    ໿


    ༧໿ͷσʔλԽ
    ి࿩༧໿ͷ߹ཧԽ
    τ Ϩ λ ͷ α ʔ Ϗ ε ߏ ଄
    τϨλϑΥϯ
    ίϯλΫτηϯλʔ
    *73
    Φ΢ϯυϝσΟΞ
    τϨλ΢Σϒ༧໿
    3FTFSWBUJPO"1*
    Φ΢ϯυڧԽ
    ސ٬઀఺ͷڧԽ
    άϧϝαΠτ
    (PPHMFͰ༧໿
    τϨλOPX
    ϝσΟΞίωΫτ
    ϝσΟΞίϯτϩʔϥʔ
    ΦϯϥΠϯ༧໿ීٴ
    ू٬ࢧԉ
    $3.
    ϝοηʔδϯά
    ސ٬Ϧαʔν
    جװγεςϜ࿈ܞ
    ݱ৔ࢧԉ
    $3.ڧԽ
    ސ٬ߦಈσʔλ
    $3.ڧԽ
    άϧϝαΠτ
    104ίωΫτ

    View full-size slide

  19. τϨλʹࣗಈతʹ༧໿͕ೖΔ
    Ӧۀத͸τϨλͷը໘͚ͩΛݟΕ͹0,
    ΦϖϨʔγϣϯ͕؆୯ʹͳͬͨ
    τ Ϩ λ ͷ ༧ ໿ Φ ϖ Ϩ ʔ γ ϣ ϯ

    View full-size slide

  20. 8FC༧໿ઃఆͷྺ࢙

    View full-size slide

  21. ༧໿ͷೖΕํΛ޻෉͢Δͱ
    ച্্͕͕Δ
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  22. ੮ࡏݿʹ͸ۭؒత੍໿ͱ࣌ؒత੍໿ͷ
    ͭͷ৚͕݅͋Δ
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  23. ۭؒత੍໿ͷม਺
    ςʔϒϧ
    ༧໿ਓ਺
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  24. ҿ৯ళʹͱͬͯ੮ޮ཰͸
    ച্࠷େԽͷͨΊʹେࣄͳཁૉͷͭ
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  25. ҿ৯ళʹ͓͚Δ੮ࡏݿͷߟ͑ํ
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  26. ຊདྷͷ੮ɾςʔϒϧ୯Ґͷ৔߹
    Χ΢ϯλʔʹ੮
    ςʔϒϧʹ੮
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙
    ҿ৯ళʹ͓͚Δ੮ࡏݿͷߟ͑ํ

    View full-size slide

  27. ੮ɾςʔϒϧΛ݁߹͢Δ৔߹
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙
    ҿ৯ళʹ͓͚Δ੮ࡏݿͷߟ͑ํ

    View full-size slide

  28. ੮ɾςʔϒϧΛ݁߹͢Δ৔߹
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙
    ҿ৯ళʹ͓͚Δ੮ࡏݿͷߟ͑ํ

    View full-size slide

  29. ࣌ؒత੍໿ͷม਺
    Ӧۀ೔
    Ӧۀ࣌ؒ
    ༧໿ͷ଺ࡏ࣌ؒ
    8FC༧໿։࢝࣌ؒ
    8FC༧໿ड෇ظؒ
    8FC༧໿ड͚෇͚క੾࣌ؒ
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  30. Ӧ ۀ ೔ ઃ ఆ

    View full-size slide

  31. Ӧ ۀ ࣌ ؒ ઃ ఆ

    View full-size slide

  32. ॳظͷ8FC༧໿ࡏݿͷࢥ૝
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  33. ۭؒతɾ࣌ؒత੍໿Λ
    Ծ૝తͳςʔϒϧͰදݱ
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  34. ࡏݿͷ࿮Λ࡞Δ
    ࿮Ҏ֎ͷۭ͖ʹ͸༧໿͸ೖΒͳ͍
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  35. 8FC༧໿ςʔϒϧ 8FC༧໿ςʔϒϧ
    8FC༧໿ςʔϒϧ
    8FC༧໿ςʔϒϧ
    8FC༧໿ςʔϒϧ
    8FC༧໿ςʔϒϧ
    8FC༧໿ςʔϒϧ
    8FC༧໿ςʔϒϧ 8FC༧໿ςʔϒϧ
    8FC༧໿ςʔϒϧ 8FC༧໿ςʔϒϧ

    View full-size slide

  36. ೖͬͯ͘Δ༧໿Λ͓ళଆ͕ίϯτϩʔϧՄೳ
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  37. ൟ੝ళ޲͚ͷ
    ߴ౓ͳςʔϒϧϚωδϝϯτΛ࣮ݱ
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  38. ࡏݿͷ࣮૷ํ๏
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  39. ඞཁʹͳΔͱ͖ʹࡏݿΛܭࢉ͢Δ
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  40. ࡏݿΛܭࢉ͢Δ
    ࡏݿͷࢀরස౓͸ଟ͘ͳ͍
    ӬଓԽ͠ͳ͍
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  41. ࡏݿΛࢀর͢ΔλΠϛϯά
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  42. ༧໿৘ใ ސ٬৘ใ
    DB DB
    ి࿩༧໿

    ໿


    σʔλ׆༻
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙
    τϨλϑΥϯ
    ίϯλΫτηϯλʔ
    *73
    Φ΢ϯυϝσΟΞ
    τϨλ΢Σϒ༧໿
    3FTFSWBUJPO"1*
    άϧϝαΠτ
    (PPHMFͰ༧໿
    τϨλOPX
    ϝσΟΞίωΫτ
    ϝσΟΞίϯτϩʔϥʔ
    $3.
    ϝοηʔδϯά
    ސ٬Ϧαʔν
    جװγεςϜ࿈ܞ
    άϧϝαΠτ
    104ίωΫτ

    View full-size slide

  43. ॳظ͸ಋೖళฮ͕ൟ੝ళͩͬͨͷͰ
    ͜ͷઃܭࢥ૝͕ϑΟοτͨ͠
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  44. ಋೖళฮ਺૿Ճ
    ͜ͷઃܭͰ͸ಋೖͮ͠Β͍ళฮ΋૿͖͑ͯͨ
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  45. ৗʹ༧໿͕ຒ·ΔΘ͚Ͱ͸ͳ͍ళฮ
    େख๏ਓҰׅಋೖ
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  46. 8FC༧໿ͷઃఆίετ͕ߴ͍
    ΦϯϘʔσΟϯά͕Ͱ͖ͳ͍ͷͰઃఆΛ୅ߦ
    ࣾ಺ίετ͕૿Ճ
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  47. ࡏݿ৘ใΛ࢖ͬͨϏδωε
    ࡏݿσʔλͷࢀরස౓͕૿Ճ
    ࡏݿ৘ใͷӬଓԽͷཁ๬͕૿Ճ
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  48. ݱࡏͷχʔζʹԊͬͨ
    8FC༧໿ઃఆ͕ඞཁ
    8 F C ༧ ໿ ઃ ఆ ͷ ྺ ࢙

    View full-size slide

  49. ࡏݿϞσϧͷಋೖ

    View full-size slide

  50. 8FC༧໿ࡏݿͷઃܭࢥ૝ͷมߋ
    ࡏ ݿ Ϟ σ ϧ ͷ ಋ ೖ

    View full-size slide

  51. ۭ͖ͷ෦෼͸ࡏݿͱͯ͠ग़͢
    ग़ͨ͘͠ͳ͍෦෼Λด͡Δ
    ࡏ ݿ Ϟ σ ϧ ͷ ಋ ೖ

    View full-size slide

  52. ։์͠ͳ͍
    8FC༧໿ςʔϒϧ
    8FC༧໿ςʔϒϧ
    8FC༧໿ςʔϒϧ 8FC༧໿ςʔϒϧ
    ։์͠ͳ͍
    ςʔϒϧάϧʔϓ

    View full-size slide

  53. ࡏݿϞσϧͷܭࢉํ๏
    ࡏ ݿ Ϟ σ ϧ ͷ ಋ ೖ

    View full-size slide

  54. ࡏݿϞσϧͷܭࢉม਺
    ༧໿
    ςʔϒϧ
    ςʔϒϧάϧʔϓ
    Ӧۀ೔
    Ӧۀ࣌ؒ
    ΫΤϦͷ
    Өڹൣғ


    ૢ࡞ස౓
    ߴ
    ௿
    ࡏ ݿ Ϟ σ ϧ ͷ ಋ ೖ

    View full-size slide

  55. ςʔϒϧάϧʔϓ
    Ӧۀ೔
    Ӧۀ࣌ؒ
    ςʔϒϧ
    ༧໿

    View full-size slide

  56. ܭࢉม਺͕࡞੒ɾߋ৽ɾ࡟আ͞ΕͨΒ
    "DUJWF3DPSEDBMMCBDLͰ
    ࡏݿܭࢉ༻4JEFLJRXPSLFSΛFORVFVF
    ࡏ ݿ Ϟ σ ϧ ͷ ಋ ೖ

    View full-size slide

  57. 21 00
    4 ໊
    ։࢝
    21 15

    ϨετϥϯτϨλ
    ༧ࢉͷ໨҆ ϥετΦʔμʔ
    ¥6,000 23 00
    ϑϨϯν
    ͓ళʹి࿩ ϧʔτ࠶ݕࡧ ڞ༗ ళฮ৘ใ ༧໿औফ
    Ҡಈத
    STEP 3
    ϑϨϯν
    ϨετϥϯτϨλ
    ༧ࢉͷ໨҆
    ڑ཭ͷ໨҆ ϥετΦʔμʔ
    ¥6,000
    5෼ 23 00
    ॅॴ ౦ژ౎඼઒۠੢ޒ൓ా
    ళฮ৘ใ
    མͪண͍ͨงғؾͷதͰɺ৺Ώ͘·Ͱ৯ࣄΛຯΘͬͯ
    ͍ͩ͘͞ɻ
    ͓ళͷઆ໌
    ύελͷछྨ๛෋ɻύελҎ֎ʹ΋ɺ೑ɺνʔζɺ໺
    ࡊ΍ΩϊίͳͲʮࢁʯͷΠλϦΞϯ
    ྉཧͷઆ໌
    εϓϚϯςɺ੺ϫΠϯɺനϫΠϯɺੜϏʔϧɺϋΠ
    υϦϯΫͷઆ໌
    ։໊࢝Ͱ༧໿͢Δ
    STEP 2
    ۙ͘ͷ͓ళΛ୳͢
    21 15 ։࢝
    3
    2 5 6
    4
    ͝ར༻ਓ਺Λબ୒͍ͯͩ͘͠͞ɻ
    21 00
    STEP 1

    View full-size slide

  58. 8FC༧໿ઃఆͷࠓޙ

    View full-size slide

  59. طଘͷ8FC༧໿ςʔϒϧͱ
    ࡏݿϞσϧͷ༥߹
    8 F C ༧ ໿ ઃ ఆ ͷ ࠓ ޙ

    View full-size slide

  60. શͯͷ༧໿ͷೖΓޱͷࡏݿࢀরํ๏ͷ౷Ұ
    8 F C ༧ ໿ ઃ ఆ ͷ ࠓ ޙ

    View full-size slide

  61. ༧໿৘ใ ސ٬৘ใ
    DB DB
    ి࿩༧໿

    ໿


    τ Ϩ λ ͷ α ʔ Ϗ ε ߏ ଄
    τϨλϑΥϯ
    ίϯλΫτηϯλʔ
    *73
    Φ΢ϯυϝσΟΞ
    τϨλ΢Σϒ༧໿
    3FTFSWBUJPO"1*
    άϧϝαΠτ
    (PPHMFͰ༧໿
    τϨλOPX
    ϝσΟΞίωΫτ
    ϝσΟΞίϯτϩʔϥʔ
    $3.
    ϝοηʔδϯά
    ސ٬Ϧαʔν
    جװγεςϜ࿈ܞ
    άϧϝαΠτ
    104ίωΫτ
    8FC༧໿ςʔϒϧ
    ࡏݿϞσϧ

    View full-size slide