開発環境をDockerにしてみませんか? / #phpcon2017

開発環境をDockerにしてみませんか? / #phpcon2017

PHPカンファレンス2017の発表資料です

42305fafd669602e3865a9ac99313257?s=128

TAKAHASHI Kunihiko

October 08, 2017
Tweet

Transcript

  1. ։ൃ؀ڥΛ %PDLFSʹ ͯ͠Έ·ͤΜ͔ʁ QIQDPOLVOJU

  2. ࣗݾ঺հ ✓  !LVOJU ✓ߴڮ๜඙ ✓OFDPNPSJ--$ ✓ʮ1)1ϚχϡΞϧΛಡ΋͏ʯQPEDBTU ✓IUUQQIQNBOVBMOFDPNPSJBTJB ✓QIQPOEPD

  3. ຊ೔ͷൃද͸ɾɾɾ ✓ࠓ͓࢓ࣄͰ͓ੈ࿩ʹͳ͍ͬͯΔ #"4&͞ΜͰͷܦݧ͕ɺ͔ͳΓੜ͔ ͍ͯ͞·͢ ✓IUUQTUIFCBTFJO ✓ઈࢍ։ൃऀืूதͱͷ͜ͱͰ͢ͷ Ͱɺڵຯͷ͋Δํ͸ͥͻͥͻ͓໰͍߹ ΘͤΛʂ

  4. 1)1$POͰ͸ ✓%PDLFSͷηογϣϯ͕ͭ΋͋Γ·͢ɻ ✓։ൃ؀ڥΛ%PDLFSʹͯ͠Έ·ͤΜ͔ʁ ΠϚ ίί ✓%PDLFSͰ1)1ΞϓϦέʔγϣϯΛຊ൪ϦϦʔ ε͢Δ·Ͱ ʙ  ✓1)1ΞϓϦέʔγϣϯʹ͓͚Δ%PDLFSίϯ

    ςφɾΫϥελʔઓུ ʙ  ✓ͦΕͧΕɺΧόʔൣғ͕ҧ͏ͷͰɺ͜͜ʹདྷͪΌͬ ͔ͨΒʹ͸શ෦ฉ͘ͷ͕͍͍͔΋
  5. օ͞Μɺݸਓͷ։ൃ؀ڥ͸ ✓Ͳ͏͍ͯ͠·͔͢ʁ ✓9".11Λ࢖ͬͯߏங ✓.BD1PSUTIPNFCSFXΛ͔ͭͬͯ.BD ্ʹ௚઀ߏங ✓7BHSBOU "OTJCMFͰߏங ✓ϩʔΧϧ؀ڥͰ͸ιʔεͷฤू͸ͯ͠Δ͚Ͳɺ ࣮ࡍͷಈ࡞͸714౳ʹΞοϓͯ͠νΣοΫ ✓714౳ʹ௚઀ϩάΠϯͯ͠ιʔεฤू

  6. 7BHSBOU ✓7BHSBOUpMF౳Λ(JU)VC౳Ͱόʔ δϣϯ؅ཧ͓Αͼڞ༗͢Ε͹νʔϜ಺ Ͱͷ؀ڥߏஙΛڞ௨ԽͰ͖Δ ✓"OTJCMFͰႈ౳ੑΛ୲อ͢Ε͹ಉ͡ ؀ڥΛԿ౓Ͱ΋࡞੒Ͱ͖Δ ✓QSPWJTJPOJOHͯ͠ɺϛυϧ΢ΣΞ ͷόʔδϣϯΞοϓ౳ʹ΋ରԠͰ͖Δ

  7. ͳΜ͍ͯ͏ͷ͸݁ߏເ෺ޠ ✓࢖༻͍ͯ͠Διϑτ΢ΣΞͷόʔδϣϯΞοϓͰಈ࡞͠ͳ͘ͳ ΓɺյΕΔ όʔδϣϯͷ૊Έ߹Θ͕ͤγϏΞ͗͢Δ  ✓7BHSBOU ✓7JSUVBM#PY ✓"OTJCMF ✓QSPWJTJPOίϚϯυΛ࣮ߦͯ͠΋ͳ͔ͥ͏·͍͔͘ͳ͍͜ͱ ͕͋Δ

    ✓ϑΝΠϧͷऔಘʹࣦഊ͢Δͱ͍ͬͨܰඍͳ΋ͷ͔Β΋ͬͱҙ ຯෆ໌ͳίέํͱ͔͍Ζ͍Ζ͋Δɾɾɾ ✓"OTJCMFͷϑΝΠϧͷϝϯςφϯε͕଺Δ ႈ౳ੑΛ୲อ͢Δ ͷ͸݁ߏΊΜͲ͍͘͞
  8. ࠓ೔ͷຊ୊ ✓։ൃ؀ڥͷج൫ͱͯ͠ ✓%PDLFSΛ͔ͭ͏ͷ͸Ͳ ͏Ͱ͠ΐ͏͔ʁ

  9. %PDLFSʹ͍ͭͯ͸ ✓ࠓճͷηογϣϯͰΑ͘Θ͔ΒΜ͔ͬ ͨํ͸ɺͥͻͱ΋લဠ͞ΜͷࢿྉΛࢀ র͍ͯͨͩ͘͠ͷ͕͍͍͔ͱࢥ͍·͢ ✓લဠ͞Μͷࢿྉ͸%PDLFSʹ͍ͭͯ ֶͿͷʹ࠷దͩͱࢥ͍·͢ ࢲ΋େม ͓ੈ࿩ʹͳ͓ͬͯΓ·͢  ✓IUUQTXXXTMJEFTIBSFOFU[FNCVUTV

  10. ͯ͞ɺ%PDLFSͱ͸ ✓%PDLFSࣾ چEPU$MPVE Λத৺ ʹΦʔϓϯιʔεͱͯ͠։ൃ͞Ε͍ͯ ΔίϯςφʔܕԾ૝Խٕज़ ✓ࠓ೥ͷय़ʹόʔδϣϯͷ෇͚ํ͕ มߋ͞Εͯɺ%PDLFS$& ͱ͍ͬͨܗʹͳͬͨ ͦΕ·Ͱ͸ɺ

    %PDLFSΈ͍ͨͳײͩͬͨ͡
  11. 7.ͱͷҧ͍ ✓7.͸࣮ࡍͷϋʔυ΢ΣΞ౳ ΛΤϛϡϨʔγϣϯ͠ɺͦͷ্ Ͱ࣮ࡍͷ04ΛՔಇͤ͞Δ ✓ίϯςφܕԾ૝Խٕज़Ͱ͸ɺ طʹಈ͍͍ͯΔ04ͷϦιʔεΛ ࢖ͬͯɺ৽ͨͳ؀ڥΛىಈ͢Δ

  12. 7.ͱͷҧ͍ )8 04 Ծ૝Խ48 7JSUVBM#PY౳ )8 )8 04 04 "QBDIF

    3FEJT 1)1 "QQT )8 04 .Z42- 7. )8 04 %PDLFS&OHJOF "QBDIF 3FEJT 1)1 "QQT .Z42- %PDLFS
  13. ίϯςφͱ͸ ϓϩηε෼཭ )8 04 "QBDIF  3FEJT  1)1 "QQT

    .Z42-  "QBDIF  1)1 "QQT
  14. ίϯςφͱ͸ ϓϩηε෼཭ )8 04 %PDLFS&OHJOF "QBDIF  3FEJT  1)1

    "QQT .Z42-  %PDLFS "QBDIF  1)1 "QQT
  15. ίϯςφͱ͸ ϑΝΠϧγεςϜ෼཭ )8 04 QBUIUPEPDLFS PT FUD PT FUD PT

    PT FUD FUD
  16. ίϯςφͱ͸ ϑΝΠϧγεςϜ෼཭ )8 04 FUD FUD FUD FUD %PDLFS&OHJOF

  17. ίϯςφͱ͸ 6*%ʗ(*%෼཭ )8 04 VJE  VJE  VJE 

    VJE 
  18. ίϯςφͱ͸ 6*%(*%෼཭ )8 04 VJE  VJE  VJE 

    VJE  %PDLFS&OHJOF
  19. Կ͕خ͍͠ͷʁ ✓ىಈ͕࣌ؒ୹͍ ✓Ծ૝)8͓Αͼ04ͷى ಈ෦෼͕ͳ͍ ✓ফඅϦιʔε͕গͳ͍

  20. ࠷ۙͷಈ޲ ✓ΤίγεςϜ͕ἧ͖ͬͯͨ ✓LT ✓͜ͷ͋ͨΓ͸ଞͷ̎ݸ·Ͱ࿩͕ ͋Δ͸ͣ ✓ར༻͍ͯ͠ΔαʔϏε͕Ͱ͖ͯͨ ✓$JSDMF$*

  21. %PDLFSͷಈ࡞ Registry image container docker pull docker push docker run

    docker commit Dockerfile docker build docker exec
  22. ࣮ࡍͲ͏࢖͏ͷ͔ʁ ✓JNBHFΛ४උ͢Δ 7BHSBOUͰݴ͏ͱCPYʹ͋ͨΔ  ✓CVJMEࡁΈͷJNBHFΛར༻͢Δ ✓ࣗ෼ͰJNBHFΛCVJME͢Δ ✓JNBHFΛ࣮ߦ SVO ͢ΔͱԾ૝؀ڥίϯςφͱͯ͠ಈ࡞ ͢Δ

    ✓7.ͱҧͬͯɺ࣮ߦΛऴྃ͢Δͱίϯςφʹର͢Δมߋ͸ഁ غ͞ΕΔ ✓࣮ߦ͢Δͨͼʹಉ͡ঢ়ଶ͔Βಈ࡞͢Δ ✓ͦΕͰ͸ࠔΔ৔߹ ·͊ɺ΄ͱΜͲ͕ͩ ɺϩʔΧϧͷϑΝ ΠϧγεςϜΛϚ΢ϯτͯͦ͜͠ʹσʔλΛӬଓԽ͢Δ
  23. CVJMEࡁΈͷJNBHF ✓3FHJTUSZαʔϏεͰ഑෍͍ͯ͠Δ΋ͷΛ࢖͏ ✓%PDLFS)VC %PDLFS͕ࣾӡӦ͍ͯ͠Δ3FHJTUSZ  ✓%PDLFS)VCͰ഑෍͞ΕͯΔ΋ͷ ✓$FOU04VCVOUV౳ͷ04ͷJNBHF ✓1)13VCZ౳ͷݴޠؚ͕·ΕΔJNBHF ✓&MBTUJD4FBSDI5FOTPS'MPX౳ͷιϑτ΢ΣΞ͕ ؚ·ΕΔJNBHF

    ✓CVJMEࡁΈͷ΋ͷΛ࢖͏͚ͩͳΒɺEPDLFSίϚϯυΛ ࢖͏͚ͩͰ͍Ζ͍ΖͰ͖Δ
  24. ࣗ෼ͰJNBHFΛCVJME ✓%PDLFS)VCͰ഑෍͞Ε͍ͯΔ JNBHFΛݩʹಠࣗʹΧελϚΠζͨ͠ JNBHFΛ࡞੒͢Δ ✓%PDLFS)VCͰ഑෍͞Ε͍ͯΔ1)1ͷ JNBHF͸൚༻తͳ΋ͷͰɺྫ͑͹JOUM֦ ு͸ೖ͍ͬͯͳ͍ͷͰɺಠࣗCVJME͢Δඞ ཁ͕͋Δ ✓ͦ͏͍ͬͨ৔߹ʹ࢖͏ͷ͕%PDLFSpMF

  25. EPDLFSίϚϯυ Registry image container docker pull docker push docker run

    docker commit Dockerfile docker build docker exec
  26. %PDLFSpMF ✓'30.36/"%%$01:౳ͷগ਺ͷίϚϯυ Λ࢖ͬͯɺJNBHFΛ࡞੒͢ΔखॱΛࣔ͢ϑΝΠϧ ✓ඞཁͳ஌ࣝͱͯ͠͸TIεΫϦϓτΛॻ͘ײ͡ ✓࣮ߦ͍ͯ͘͠ίϚϯυΛॱ൪ʹهड़͍ͯ͘͠ײ͡ ✓͜ͷϑΝΠϧΛݩʹJNBHFΛCVJME͢Δ ✓7BHSBOUͰݴ͏ͱ͜Ζͷ7BHSBOUpMFʹ౰ͨΔ ͕ɺ7BHSBOUpMFͱҧͬͯͰ͖Δ͜ͱ͸গͳ͍ ✓ٯʹݴ͏ͱϑΝΠϧͷن໿ͱ֮ͯ͑͠Δ͜ͱ͸͋ ·Γͳ͍͔Β؆୯ͱ΋ݴ͑Δ

  27. %PDLFSpMFͷྫ  FROM centos:7 MAINTAINER TAKAHASHI Kunihiko COPY ./php.ini /etc/php.ini

    RUN yum -y install epel-release \ && rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm \ && yum -y --enablerepo=remi,remi-php71 install httpd mod_ssl mysql-devel mysql-libs php php-cli php-mbstring php-mcrypt php-xml php-pdo php-mysqlnd php- opcache php-pecl-apcu \ && yum clean all \ && rm -rf /var/cache/yum/* EXPOSE 80 443 CMD /usr/sbin/httpd -DFOREGROUND
  28. %PDLFSpMFͷྫ  FROM php:7.1-apache MAINTAINER TAKAHASHI Kunihiko COPY ./php.ini /usr/local/etc/php/php.ini

    RUN apt-get update \ && apt-get install -y git g++ libmcrypt-dev libicu-dev libmcrypt4 libicu52 zlib1g-dev sqlite3 libsqlite3-dev \ && docker-php-ext-install mbstring mcrypt pdo pdo_sqlite intl zip \ && pecl install xdebug \ && docker-php-ext-enable xdebug \ && apt-get purge --auto-remove -y g++ libmcrypt-dev libicu-dev zlib1g-dev libsqlite3-dev \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ && a2enmod rewrite \ && usermod -u 1000 www-data WORKDIR /var/www
  29. %PDLFSͰ͸ ✓̍ͭͷίϯςφͰ̍ͭͷϓϩηε͚ͩΛى ಈ͢Δ͜ͱ͕ਪ঑͞ΕͯΔ ✓"QBDIF 1)1Ͱ̍ͭɺ.Z42-Ͱͭɺ 3FEJTͰ̍ͭɺͱݴͬͨײ͡ ✓̍ͭͷίϯςφͰෳ਺ͷϓϩηεΛىಈ͢ Δ͜ͱ΋Ͱ͖Δ͕؅ཧ͕໘౗ʹͳΔ ✓ͳͷͰɺෳ਺ͷϓϩηεෳ਺ͷίϯςφ Λಉ࣌ʹىಈ͢Δ͜ͱʹͳΔ

  30. EPDLFSDPNQPTF ✓%PDLFSͰ௨ৗ࢖༻͢ΔίϚϯυ͸EPDLFSίϚϯυͩ ͕ɺ͜ͷίϚϯυ͸̍ͭͷίϯςφʹର͢Δىಈऴ͔ྃ͠Ͱ ͖ͳ͍ ✓ෳ਺ͷίϯςφΛಉ࣌ʹىಈऴྃ͢Δͱ͍ͬͨ͜ͱʹ͸ EPDLFSίϚϯυͰͷӡ༻͸ͭΒ͍ ✓ෳ਺ͷίϯςφΛ؅ཧ͢ΔͨΊͷίϚϯυ͸EPDLFS DPNQPTFίϚϯυ ✓͜ͷίϚϯυ͸EPDLFSDPNQPTFZNMͱ͍͏ϑΝΠϧ Λ࢖༻ͯ͠ɺෳ਺ίϯςφΛ؅ཧ͢Δ

    ✓CVJMEࡁΈͷJNBHFΛ͔ͭͬͯίϯςφىಈ͢Δ͜ͱ΋Ͱ ͖Δ͠ɺͦͷ৔ͰCVJMEͤ͞Δ͜ͱ΋Ͱ͖Δ
  31. EPDLFSDPNQPTFZNMͷྫ version: '3.3' services: db: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=root

    volumes: - ./mysql/data:/var/lib/mysql:cached ports: - "3306:3306" web: build: . image: phpcon2017 volumes: - ../:/app:cached ports: - "8080:80" depends_on: - db
  32. ࣮ࡍݱ৔Ͱ͸ ✓EPDLFSͷJNBHF͸༧Ί CVJME͠ɺ"84ͷ&$3Ͱ؅ཧ ✓౦ژϦʔδϣϯʹஔ͘͜ͱʹΑ ΓJNBHFͷQVMMͷ࣌ؒΛ୹ॖ ✓%PDLFS)VC͸ԕ͍ ޫͷε ϐʔυͱઓ͏ͷ͸ਏ͍

  33. ࣮ࡍݱ৔Ͱ͸ ✓֤JNBHFͷ%PDLFSpMF͸(JU)VCͰ؅ཧ͠ɺมߋ͕ ඞཁͰ͋Ε͹QVMMSFRͯ͠΋Β͏ ✓ࢲ͕%PDLFS͓͡͞Μʹͳͬͯ͠·͏Θ͚ʹ͸͍͔ͳ͍ ✓֤։ൃऀ޲͚ʹ͸EPDLFSDPNQPTFZNMΛ(JU)VC Ͱ഑෍͠ɺCVJMEࡁΈͷJNBHFΛऔಘͯ͠΋Β͏͚ͩʹ͠ ͨ ✓ͦΕͧΕͷ։ൃऀͷखݩͰCVJME͢Δͷ͸࣌ؒͷແବ ✓։ൃ؀ڥͷߏங͸Ҏલ݁ߏ࣌ؒͷֻ͔Δ࡞ۀ͕ͩͬͨɺ ࠓ͸̍࣌ؒ΋͋Ε͹ऴΘΔΑ͏ʹͳͬͯΔ

    ճઢ଎౓͸ॏ ཁ
  34. .BD8JOͰͷ%PDLFSࣄ৘ ✓%PDLFS͸ɺຊདྷ-JOVYΧʔωϧ ͷػೳΛ࢖ͬͨԾ૝Խٕज़ ✓-JOVYͷ্Ͱɺ-JOVYͷϓϩηε Λಈ͔͢͜ͱ͕ී௨ ✓ͦΕΛ͍Ζ͍Ζͱΰχϣΰχϣͯ͠ .BD8JO্Ͱ%PDLFS؀ڥΛߏங Ͱ͖ΔΑ͏ʹͳ͖ͬͯͨ

  35. .BDͰͷ%PDLFSࣄ৘ ✓.BDͰ%PDLFSΛಈ࡞͞ ͤΔํ๏͸ೋ௨Γ ✓%PDLFSUPPMCPY ✓%PDLFSGPS.BD

  36. %PDLFSUPPMCPY ✓7JSUVBMCPY্Ͱ%PDLFSFOHJOFΛಈ࡞ͤ͞Δ͜ͱʹΑΓͦͷ ্Ͱ%PDLFS؀ڥΛ࡞Δ ✓͋Δҙຯਖ਼߈๏ ✓֤%PDLFSίϯςφͷϙʔτ͸7JSUVBMCPY্Ͱಈ࡞͍ͯ͠Δ*1Ξ υϨεʹϚοϐϯά͞ΕΔ ✓ͨͩ͠ɺ7JSUVBMCPYΛڬΜͰ͠·͏ͷͰɺىಈͷ଎͞ͱ͔ͦ͏͍ͬ ͨ΋ͷ͕εϙΠϧ͞ΕΔͷͰخ͘͠ͳ͍ ✓Ϛ΢ϯτͨ͠ϑΝΠϧγεςϜʹର͢Δૢ࡞͕7JSUVBMCPY্ͷ04 ͷϢʔβݖݶͰߦΘΕΔͨΊӡ༻͕ΊΜͲ͍͘͜͞ͱʹͳΔ৔߹͕͋

    Δ ✓ϩʔΧϧͷϑΝΠϧγεςϜΛ7JSUVBMCPYʹϚ΢ϯτ͠ɺ͞Β ʹͦΕΛ%PDLFSίϯςφͰϚ΢ϯτ͢Δͱ͍͏ճΓ͘Ͳ͞
  37. %PDLFSGPS.BD ✓.BD্Ͱ%PDLFSFOHJOFΛಈ ࡞ͤ͞Δ ✓֤%PDLFSίϯςφͷϙʔτ͸.BD ্ͷϙʔτʹ௚઀Ϛοϐϯά͞ΕΔ ✓֤ίϯςφͷىಈ͸΋ͷ͘͢͝ૣ͍

  38. %PDLFSGPS.BD ✓%PDLFSGPS.BDͷ৘ใΛάάΔͱɺϩʔΧϧσΟ εΫΛϚ΢ϯτͨ͠ࡍͷεϐʔυ͕஗͍ͱ͍͏৘ใ͕݁ߏ ώοτ͢Δ ✓Ͱಋೖ͞ΕͨDBDIFEͱ͍͏Ϛ΢ϯτํࣜ Λ࢖͏ͱ͍ͩͿղফ͞Ε͍ͯΔ ✓̏ϲ݄΄ͲͦΕͰӡ༻ͯ͠Δ͕ɺϑΝΠϧγεςϜͷ ஗͕͞໰୊ʹͳͬͨ͜ͱ͸ͳ͍ ✓ෆ҆ఆͩͱ͍͏৘ใ΋݁ߏώοτ͢Δ ✓σϑΥϧτͷ(#ϝϞϦׂΓ౰ͯͩͱෆ҆ఆͩͬͨ

    ͕ɺ(#ʹϝϞϦׂΓ౰ͯΛ૿΍͔ͯ͠Β҆ఆͨ͠
  39. %PDLFSGPS.BD ✓͜͜·Ͱઆ໌͹͔ͬΓͰΠ ϝʔδ͕ͳ͔ͳ͔͔ͭΊͳ͔ͬ ͨͱࢥ͏ͷͰɺσϞ͠·͢

  40. EFNP

  41. 8JOͰͷ%PDLFSࣄ৘ ✓8JOͰ%PDLFSΛಈ࡞͞ ͤΔํ๏͸ೋ௨Γ ✓%PDLFSUPPMCPY ✓%PDLFSGPS8JO

  42. %PDLFSUPPMCPY ✓.BD্Ͱͷಈ࡞ํࣜ͸શ͘ಉ ͡ ✓͍Ζ͍Ζخ͘͠ͳ͍఺΋ಉ͡ ✓͔͠͠ɺ8JOͷ৔߹ɺ͜ͷํ ࣜΛ࢖Θ͟ΔΛಘͳ੍͍໿͕͋ Δ ޙड़

  43. %PDLFSGPS8JO ✓8JO্Ͱ%PDLFSFOHJOFΛಈ࡞ͤ͞Δ ✓֤%PDLFSίϯςφͷϙʔτ͸8JO্ͷϙʔτʹ௚઀Ϛοϐ ϯά͞ΕΔ ✓֤ίϯςφͷىಈ͸΋ͷ͘͢͝ૣ͍ ✓)ZQFS7Λར༻͢ΔͨΊɺ8JOEPXT1SPͰ͔͠࢖ ͑ͳ͍ )PNF͔Β1SP΁ͷΞοϓάϨʔυ͸ສऑɾɾɾ  ✓8JO)PNFͰ͸%PDLFSUPPMCPYΛ࢖͏͔͠ͳ͍

    ✓)ZQFS7Λ0/ʹ͢Δͱɺ7JSUVBMCPY͕ىಈ͠ͳ͘ ͳΔͨΊɺଞͷ༻్Ͱ7JSUVBMCPYΛ࢖͏ඞཁ͕͋Δ৔߹ ͸બ୒ͮ͠Β͍
  44. %PDLFSGPS8JO ✓͜Ε·ͨઆ໌͹͔ͬΓͰΠ ϝʔδ͕ͳ͔ͳ͔͔ͭΊͳ͔ͬ ͨͱࢥ͏ͷͰɺσϞ͠·͢

  45. EFNP

  46. %PDLFSGPS8JO ✓7BHSBOU BOTJCMFͱൺ΂Δͱɺ%PDLFS؀ ڥ͸8JOϢʔβʹקΊ΍͍͢ͱ͸ࢥ͏ ✓͜͜͸࢒೦ͳ͕Βࢲͷϊ΢ϋ΢͕ͨΒͳ͍ͷ ͰɺҾ͖ଓ͖8JO্Ͱͷ%PDLFSͷ࢖͍উख ͷϊ΢ϋ΢ΛͨΊ͍͖͍ͯͨ ✓͔͠͠ɺ1SPͰͳ͍ͱ͍͚ͳ͍ɺ)ZQFS7͕ 0/Ͱͳ͚Ε͹ͳΒͳ͍ͱ͍͏ϋʔυϧΛ௒͑ͳ ͍ͱɺ%PDLFSGPS8JO͕࢖͑ͳ͍ͷ͸ͭΒ͍

  47. ͝ਗ਼ௌ ͋Γ͕ͱ͏ ͍͟͝·ͨ͠