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

Remote Development with Podman

Shion Tanaka
November 21, 2020

Remote Development with Podman

VS Code Conference Japan の登壇に使用したスライドです。
スライドの公開にあたり登壇時点より内容が更新されています。

[タイトル」Remote Development with Podman

[概要]
PodmanはDocker互換かつOSSのコンテナーエンジンです。RHEL8/CentOS8からはDockerがサポートされなくなりPodmanが標準のコンテナーエンジンとなりました。新しいコンテナーエンジンでありDockerに無い特徴も備えていることからPodmanの注目度が上がってきています。今後さらにPodmanを利用したコンテナーの実行、開発も増えていくと思われます。そこで本セッションではDockerではなくPodmanを使ったVS Code上の開発方法を解説します。VS CodeにおけるPodmanのサポートはまだ始まったばかりでまだ発展途上です。本セッションに参加することで「VS Code + Podmanを利用したコンテナー上の開発手法」「Remote Development + Podmanの最新動向」を知ることができます。なお、本セッションはVS Code Meetup #6でのLT内で少し紹介したPodmanとRemote-Containersを利用する方法をより具体的に紹介する内容となります。

Level / 難易度: Medium / 中級
想定する主な聴講者: RHEL8/CentOS8利用開発者、その他OSでのPodman利用開発者。Remote-Containersを使ってコンテナー上の開発を行いたい人。

[イベントページ]
VS Code Conference Japan - connpass
https://vscode.connpass.com/event/184441/

[動画アーカイブ]
https://youtu.be/GqC5wQV2bG8

Shion Tanaka

November 21, 2020
Tweet

More Decks by Shion Tanaka

Other Decks in Technology

Transcript

  1. WTDPEFKQ
    3FNPUF%FWFMPQNFOU
    XJUI1PENBO
    /PW W

    74$PEF$POGFSFODF+BQBO
    4IJPO5BOBLB !UOLPO


    View full-size slide

  2. WTDPEFKQ
    ࣗݾ঺հ

    • ాத࢘ԸʢλφΧ γΦϯʣ!UOLPO
    • ϨουϋοτגࣜձࣾɿιϦϡʔγϣϯΞʔΩςΫτ
    • 74$PEF.FFUVQ
    • -5ɿʮ3FNPUF$POUBJOFSTͷ઀ଓઌϗετʹ
    'FEPSB$PSF04Λ࢖͏ʯ
    IUUQTWTDPEFDPOOQBTTDPNFWFOU
    ࠷ۙ͸*5ΤϯδχΞ͔Ͳ͏͔΋ո͘͠ͳ͖ͬͯͨʜ
    ˠԻͱςΫϊϩδʔ͕ॏͳΔྖҬ͕޷෺ͷσδλϧΫϦΤΠλʔ

    View full-size slide

  3. WTDPEFKQ
    ΞδΣϯμ
    • 3FNPUF%FWFMPQNFOUͱ 1PENBO
    • 3FNPUF$POUBJOFSTXJUI1PENBOͷ࣮ફ
    • ·ͱΊ
    • ΦϚέ

    View full-size slide

  4. WTDPEFKQ
    ຊ೔ͷςʔϚ
    •3FNPUF%FWFMPQNFOUXJUI1PENBO
    o%PDLFSΛ࢖Θͣίϯςφͷ࣮ߦʹ1PENBOΛ࢖༻͢Δ
    o3FNPUF%FWFMPQNFOUͰ1PENBO্Ͱ࣮ߦͨ͠ίϯςφʔͷ
    தͰ։ൃΛߦ͏

    View full-size slide

  5. WTDPEFKQ
    ݁࿦
    • 3FNPUF44)84-ͱ1PENBOΛซ༻͢Δͷ͸໰୊ແ͠
    • 3FNPUF$POUBJOFST͸%PDLFSΛ࢖͏ͷ͕շద ݱ࣌఺Ͱ͸


    View full-size slide

  6. WTDPEFKQ
    3FNPUF%FWFMPQNFOU
    ͱ
    1PENBO

    View full-size slide

  7. WTDPEFKQ
    3FNPUF%FWFMPQNFOU
    • 3FNPUF44)
    • 3FNPUF84-
    • 3FNPUF$POUBJOFST

    View full-size slide

  8. WTDPEFKQ
    3FNPUF$POUBJOFSTͱ 1PENBO
    • 1PENBOͷαϙʔτ͸ ೥݄ɺ74$PEFW͔Β

    https://code.visualstudio.com/updates/v1_45?ref=codebldr

    View full-size slide

  9. WTDPEFKQ
    3FNPUF$POUBJOFSTͱ 1PENBO
    • %PDLFS1BUIʹ QPENBO ͱࢦఆ͢Δ͚ͩ

    Developing inside
    a Container using
    Visual Studio
    Code Remote
    Development
    https://code.visu
    alstudio.com/doc
    s/remote/contain
    ers

    View full-size slide

  10. WTDPEFKQ
    1PENBOͱ͸
    • 1PENBO UIF10%."/BHFS

    • 044ͷ%PDLFSޓ׵ͷίϯςφʔπʔϧ
    • ಛ௃
    o σʔϞϯϨε
    o ϧʔτϨε
    o 0$*४ڌ

    https://podman.io/

    View full-size slide

  11. WTDPEFKQ
    1PENBOࢀߟϦϯΫ
    • %PDLFSϢʔβʔͷͨΊͷ1PENBOͱ#VJMEBIͷ঺հ ੺๧Τϯδ
    χΞϒϩά
    o IUUQTSIFCIBUFOBCMPHDPNFOUSZQPENBO@CVJEBI@GPS@EPDLFS@VTFST
    • ίϯςφʔͷߏஙɺ࣮ߦɺ͓Αͼ؅ཧ 3FE )BU
    &OUFSQSJTF -JOVYc3FE)BU$VTUPNFS1PSUBM
    o IUUQTBDDFTTSFEIBUDPNEPDVNFOUBUJPOKBKQSFE@IBU@FOUFSQSJTF@MJOVYIUNM
    TJOHMFCVJMEJOH@SVOOJOH@BOE@NBOBHJOH@DPOUBJOFSTJOEFY
    • τϥϒϧରԠ৘ใʢˣΦεεϝʣ
    o QPENBOUSPVCMFTIPPUJOHNEBUNBTUFSuDPOUBJOFSTQPENBO
    § IUUQTHJUIVCDPNDPOUBJOFSTQPENBOCMPCNBTUFSUSPVCMFTIPPUJOHNE

    View full-size slide

  12. WTDPEFKQ
    %PDLFSαϙʔτ͞Εͳ͍໰୊
    • 3)&-$FOU04͔Β%PDLFS͸αϙʔτର৅֎
    o“RHEL 8 には Docker が含まれず、Red Hat のサポート対象外
    になります” (引⽤:RHEL8ドキュメント)
    • ެ͔ࣜΒ%PDLFSͷύοέʔδ͸ఏڙ͞Εͳ͍
    Ø“docker コマンドと Docker コンテナーエンジンも、Red Hat
    Enterprise Linux 8 から完全に削除しました。”(引⽤:RHEL8ド
    キュメント)

    ίϯςφʔͷߏஙɺ࣮ߦɺ͓Αͼ؅ཧ 3FE )BU&OUFSQSJTF -JOVYc3FE)BU$VTUPNFS1PSUBM
    IUUQTBDDFTTSFEIBUDPNEPDVNFOUBUJPOKBKQSFE@IBU@FOUFSQSJTF@MJOVYIUNM
    TJOHMFCVJMEJOH@SVOOJOH@BOE@NBOBHJOH@DPOUBJOFSTJOEFY

    View full-size slide

  13. WTDPEFKQ
    1PENBOͷରԠ04
    • -JOVYσΟετϦϏϡʔγϣϯ
    o "NB[PO-JOVYɺ"SDI-JOVY.BOKBSP-JOVYɺ$FOU04ɺ%FCJBOɺ
    'FEPSBɺ(FOUPPɺ0QFO&NCFEEFEɺPQFO464&ɺPQFO464&,VCJDɺ
    3BTQCFSSZ1J04BSNIG FY3BTQCJBO
    ɺ3BTQCFSSZ1J04BSN CFUB

    ɺ3)&-ɺ6CVOUV
    • .BD
    oϦϞʔτΫϥΠΞϯτͷΈ
    • 8JOEPXT
    oϦϞʔτΫϥΠΞϯτͷΈ

    QPENBOSFNPUFίϚϯυΛ࢖ͬ
    ͯɺ-JOVY্Ͱ1PENBOΛ࣮ߦ

    View full-size slide

  14. WTDPEFKQ
    3FNPUF$POUBJOFSTXJUI
    1PENBOͷ࣮ફ

    View full-size slide

  15. WTDPEFKQ
    1PENBOಈ࡞֬ೝࡁΈ؀ڥ
    • ʢࢀߟʣ3FNPUF44)ɺ3FNPUF84-
    oϦϞʔτ઀ଓઌͰ1PENBO͕ਖ਼ৗʹ࢖༻Ͱ͖Ε͹໰୊ແ͠
    • 3FNPUF$POUBJOFST
    o-JOVYσεΫτοϓ্Ͱ74$PEFΛىಈ
    § 'FEPSB8PSL4UBJPOɿ0,ʂ
    o8JOEPXTσεΫτοϓ্Ͱ74$PEFΛىಈ
    § 8JOEPXT84-ʢ6CVOUVʣɿ0,ʂ

    View full-size slide

  16. WTDPEFKQ
    1PENBOPO'FEPSB
    • ಈ࡞֬ೝ
    o ʮ"EE%FWFMPQNFOU$POUBJOFS$POGJHVSBUJPO'JMFTʯͰ
    ௥Ճͨ͠ૉͷEFWDPOUBJOFSKTPO
    § 0,ʂʢΤϥʔରԠඞཁʣ
    o (JUDMPOFͨ͠WTDPEFSFNPUFUSZQZUIPO
    § 0,ʂʢΤϥʔରԠඞཁʣ
    o 5SZBTBNQMF
    § /(
    • ϙΠϯτ
    o 74$PEFαϙʔτͷߏ੒
    o 1PENBO͸ҰൠϢʔβʔͰ࣮ߦՄೳ
    o 4&-JOVYͷແޮԽෆཁ
    § ΤϥʔରԠͷιʔεमਖ਼͸ඞཁ

    1PENBO
    74$PEF

    3FNPUF$POUBJOFST
    ίϯςφʔ
    ϩʔΧϧ୺຤

    View full-size slide

  17. WTDPEFKQ
    1PENBOPO'FEPSB
    • ΤϥʔରԠ
    o EFWDPOUBJOFSKTPOΛमਖ਼

    SVO"SHT<TFDVSJUZPQU MBCFMEJTBCMF>
    SFNPUF6TFS

    View full-size slide

  18. WTDPEFKQ
    1PENBOPO'FEPSB

    74$PEFͰ։͍ͨϩʔΧϧ؀ڥ্ͷ
    ιʔεϑΝΠϧ

    View full-size slide

  19. WTDPEFKQ
    1PENBOPO'FEPSB

    1PENBOͰί
    ϯςφ͕ىಈ
    ͞Ε͍ͯΔ
    %FW$POUBJOFS"MQJOF W

    ˠʮ"EE%FWFMPQNFOU$POUBJOFS
    $POGJHVSBUJPO'JMFTʯͰ௥Ճͨ͠ૉͷ
    EFWDPOUBJOFSKTPO

    View full-size slide

  20. WTDPEFKQ
    1PENBOPO84- 6CVOUV

    • ಈ࡞֬ೝ
    o ʮ"EE%FWFMPQNFOU$POUBJOFS$POGJHVSBUJPO'JMFTʯͰ
    ௥Ճͨ͠ૉͷEFWDPOUBJOFSKTPO
    § 0,ʂ
    o (JUDMPOFͨ͠WTDPEFSFNPUFUSZQZUIPO
    § /(
    o 5SZBTBNQMF
    § /(ʢϝχϡʔ͕ग़ͯ͜ͳ͍ɻ84-ͷத͔ͩΒʁʣ
    • ϙΠϯτ
    o 3FNPUF84-Ͱ઀ଓͨ͠؀ڥͷ্Ͱɺ͞Βʹ3FNPUF
    $POUBJOFSTΛ࣮ߦ
    o ඇެࣜͳߏ੒
    o 1PENBO͸ҰൠϢʔβʔͰ࣮ߦՄೳ

    1PENBO
    74$PEF

    3FNPUF84-

    3FNPUF$POUBJOFST
    ίϯςφʔ
    ϩʔΧϧ୺຤
    84- 6CVOUV

    View full-size slide

  21. WTDPEFKQ
    1PENBOPO84- 6CVOUV

    • 1PENBOͷΠϯετʔϧ
    o 84-ىಈޙԼهΛ࣮ߦ
    o FUDDPOUBJOFSTDPOUBJOFSTDPOGΛमਖ਼

    FUDPTSFMFBTF
    TVEPTIDFDIPEFCIUUQEPXOMPBEPQFOTVTFPSHSFQPTJUPSJFTEFWFMLVCJDMJCDPOUBJOFSTTUBCMFY\/".&^@\7&34*0/@*%^
    FUDBQUTPVSDFTMJTUEEFWFMLVCJDMJCDPOUBJOFSTTUBCMFMJTU
    XHFUOWIUUQTEPXOMPBEPQFOTVTFPSHSFQPTJUPSJFTEFWFMLVCJDMJCDPOUBJOFSTTUBCMFY\/".&^@\7&34*0/@*%^3FMFBTFLFZ03FMFBTFLFZ
    TVEPBQULFZBEE 3FMFBTFLFZ
    TVEPBQUHFUVQEBUFRR
    TVEPBQUHFURRZJOTUBMMQPENBO
    TVEPNLEJSQFUDDPOUBJOFST
    FDIPFaOSFHJTUSJFT<EPDLFSJP RVBZJP>cTVEPUFFFUDDPOUBJOFSTSFHJTUSJFTDPOG
    TVEPWJFUDDPOUBJOFSTDPOUBJOFSTDPOG
    DHSPVQ@NBOBHFSDHSPVQGT
    FWFOUT@MPHHFSGJMF
    How to run Podman on Windows with WSL2 | Enable Sysadmin
    https://www.redhat.com/sysadmin/podman-windows-wsl2

    View full-size slide

  22. WTDPEFKQ
    1PENBOPO84- 6CVOUV


    74$PEFͰ։͍ͨ84-؀ڥ্ͷι
    ʔεϑΝΠϧ
    84-্Ͱ࣮ߦ͞Εͯ
    ͍Δ

    View full-size slide

  23. WTDPEFKQ
    1PENBOPO84- 6CVOUV


    1PENBOͰί
    ϯςφ͕ىಈ
    ͞Ε͍ͯΔ
    %FW$POUBJOFS"MQJOF W

    ˠʮ"EE%FWFMPQNFOU$POUBJOFS
    $POGJHVSBUJPO'JMFTʯͰ௥Ճͨ͠ૉͷ
    EFWDPOUBJOFSKTPO

    View full-size slide

  24. WTDPEFKQ
    .BD͸Ͳ͏͢Ε͹ʜ
    • .BDͰ͸84-΋ͳ͘ɺQPENBOSFNPUF͔͠࢖͑ͳ͍
    o3FNPUF$POUBJOFSTͰ͸QPENBOSFNPUF͸ಈ࡞͠ͳ͍
    • ͦ΋ͦ΋ɺ3FNPUF$POUBJOFSTͷཁ݅͸ %PDLFSΛ༻ҙ͢Δ͜ͱ
    ˠ1PENBOΛ࢖ͬͯ%PDLFSΛಈ͔ͤ͹Α͍ͷͰ͸ʁ

    View full-size slide

  25. WTDPEFKQ
    %PDLFSJO%PDLFS
    • %PDLFSͷ্ͰʢதͰʁʣ%PDLFSΛಈ͔ٕ͢ज़
    • %PDLFSΦϑΟγϟϧΠϝʔδ͋Γ

    docker - Docker Hub
    https://hub.docker.com/_/docker

    View full-size slide

  26. WTDPEFKQ
    %PDLFSJO1PENBOͷ࣮ߦํ਑
    • 5$1Ͱ௚઀ιέοτ઀ଓ
    o TFUUJOHTKTPOʢEPDLFSDPOUFYUͰઃఆ΋Մೳʣ
    • ϧʔτݖݶͰ࣮ߦ
    o ݱ࣌఺Ͱ͸ճආෆೳ
    • $HSPVQWʹมߋ
    • ࣮ߦίϚϯυ

    EPDLFSIPTUUDQ\ϦϞʔτ઀ଓઌϗετͷ*1ΞυϨε^
    EPDLFSUMT7FSJGZ
    TVEPEOGJOTUBMMHSVCCZ
    TVEPHSVCCZVQEBUFLFSOFM"--BSHTTZTUFNEVOJGJFE@DHSPVQ@IJFSBSDIZz
    TVEPSFCPPU
    1PENBO
    ίϯςφʔ
    ϦϞʔτ઀ଓઌϗετ
    %PDLFS
    ίϯςφʔ
    TVEPQPENBOSVOMPHMFWFMEFCVHF%0$,&3@5-4@$&35%*3QSJWJMFHFEEJUOBNFEJOEQEPDLFSEJOE
    l10354z
    ͜ΕΛࢦఆ

    View full-size slide

  27. WTDPEFKQ
    %PDLFSJO1PENBOPO'FEPSB


    74$PEF

    3FNPUF$POUBJOFST
    %PDLFS$-*
    ʻϩʔΧϧ୺຤͔Βίϯςφ࣮ߦ͞Ε͍ͯΔ%PDLFSϗετ΁5$1௚઀઀ଓʼ
    ϩʔΧϧ୺຤ ϦϞʔτ઀ଓઌϗετ
    1PENBO
    ίϯςφʔ
    %PDLFS
    ίϯςφʔ
    %PDLFS$-*ͷΈඞཁɻ
    %PDLFS&OHJOFͷ࣮ߦ
    ͸ෆཁɻ

    View full-size slide

  28. WTDPEFKQ
    %PDLFSJO1PENBOPO'FEPSB
    • ಈ࡞֬ೝ
    o ʮ"EE%FWFMPQNFOU$POUBJOFS$POGJHVSBUJPO'JMFTʯͰ௥Ճͨ͠ૉͷ
    EFWDPOUBJOFSKTPO
    § 0,ʂʢΤϥʔରԠඞཁʣ
    o (JUDMPOFͨ͠WTDPEFSFNPUFUSZQZUIPO
    § /(
    o 5SZBTBNQMF
    § /(
    o ىಈࡁΈͷίϯςφͷΞλον
    § 0,ʂ
    • ϙΠϯτ
    o ඇެࣜͳߏ੒
    o 1PENBOͰ%PDLFSJO%PDLFSίϯςφͷ࣮ߦʹϧʔτݖݶ͕ඞཁ
    o ϩʔΧϧ୺຤ͷιʔεϑΝΠϧͱ%FW$POUBJOFS಺ͷϑΝΠϧ͸௚઀ಉظ͠
    ͳ͍ʢ %FW$POUBJOFSͷϚ΢ϯτઌ͸%PDLFSϗετΛࢀর͢ΔͨΊʣ

    1PENBO
    ίϯςφʔ
    ϦϞʔτ୺຤
    %PDLFS
    ίϯςφʔ

    View full-size slide

  29. WTDPEFKQ
    %PDLFSJO1PENBOPO'FEPSB
    • ΤϥʔରԠ
    o EFWDPOUBJOFSKTPO಺ͷ8PSLTQBDFϚ΢ϯτॲཧΛमਖ਼͢Δʢ͍ͣΕ͔ͷํ๏Λࢦఆʣ
    § %PDLFS7PMVNFΛࢦఆ͢Δํ๏ʢ%PDLFS7PMVNF͸ࣄલʹ࡞੒͓ͯ͘͠ʣ
    § %PDLFSϗετʢ%PDLFSJO1PENBO্ͷʣͷύεΛࢦఆ͢Δ

    XPSLTQBDF.PVOUTPVSDF%PDLFS7PMVNF໊ UBSHFUXPSLTQBDF UZQFWPMVNF
    XPSLTQBDF'PMEFSXPSLTQBDFWTDPEFSFNPUFUSZQZUIPO
    XPSLTQBDF.PVOUTPVSDFIPNFVTFSWTDPEFSFNPUFUSZQZUIPO UBSHFUXPSLTQBDF UZQFWPMVNF
    XPSLTQBDF'PMEFSXPSLTQBDF
    ʢ஫ҙʣϩʔΧϧ؀ڥͱ௚઀ͷϑΝΠϧಉظ͸Ͱ͖ͳ͍ͷͰɺಉظ͸(JUͳͲΛ࢖͏ඞཁ͕͋Δ

    View full-size slide

  30. WTDPEFKQ
    %PDLFSJO1PENBOPO'FEPSB

    74$PEFͰ։͍ͨϩʔΧϧ؀ڥ্ͷ
    ιʔεϑΝΠϧʢ%FW$POUBJOFSͱ
    ͸௚઀ಉظ͞Εͳ͍ʣ
    8PSLTQBDFͷ
    Ϛ΢ϯτํ๏Λࢦఆ %PDLFSϗετͱ
    ௚઀઀ଓઃఆ

    View full-size slide

  31. WTDPEFKQ
    %PDLFSJO1PENBOPO'FEPSB

    [user@localhost ~]$ ip a show ens161 |grep 192
    inet 192.168.1.164/24 brd 192.168.1.255 scope global dynamic noprefixroute ens161
    [user@localhost ~]$ docker
    bash: docker: command not found...
    Packages providing this file are:
    'podman-docker'
    'moby-engine'
    [user@localhost ~]$ whereis docker
    docker:
    [user@localhost ~]$ sudo podman ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    74fb9586cec9 docker.io/library/docker:dind 2 days ago Up 23 hours ago 0.0.0.0:2375->2375/tcp dind
    [user@localhost ~]$ sudo podman exec -it dind ls -la /home/user/vscode-remote-try-python
    total 36
    drwxr-xr-x 1 root root 222 Nov 23 16:49 .
    drwxr-xr-x 1 root root 58 Nov 23 16:46 ..
    drwxr-xr-x 1 root root 54 Nov 23 16:46 .devcontainer
    drwxr-xr-x 1 root root 158 Nov 23 17:18 .git
    -rw-r--r-- 1 root root 89 Nov 23 16:46 .gitattributes
    -rw-r--r-- 1 root root 5594 Nov 23 16:46 .gitignore
    drwxr-xr-x 1 root root 22 Nov 23 16:46 .vscode
    -rw-r--r-- 1 root root 1183 Nov 23 16:46 LICENSE
    -rw-r--r-- 1 root root 4736 Nov 23 16:46 README.md
    drwxr-xr-x 1 root root 36 Nov 23 16:48 __pycache__
    -rw-r--r-- 1 root root 456 Nov 23 16:46 app.py
    -rw-r--r-- 1 root root 5 Nov 23 16:46 requirements.txt
    drwxr-xr-x 1 root root 20 Nov 23 16:46 static
    -rw-r--r-- 1 root root 32 Nov 23 16:49 test.txt
    %FW$POUBJOFS1ZUIPO
    ˠ(JUDMPOFͨ͠WTDPEFSFNPUFUSZQZUIPO
    %PDLFSϗετ %PDLFSJO1PENBOʣ্ͷಉ͡ϑΝΠϧ܈

    View full-size slide

  32. WTDPEFKQ
    ·ͱΊ
    • 3FNPUF44)84-ͱ 1PENBOΛซ༻͢Δͷ͸໰୊ແ͠
    • 3FNPUF$POUBJOFST͸ %PDLFSΛ࢖͏ͷ͕շద ݱ࣌఺Ͱ͸

    o'FEPSBͳͲཁ݅͑͞੔͑͹3FNPUF$POUBJOFST1PENBO͸ར༻Մೳ
    o1PENBOPO84-΋Մೳ
    o%PDLFSJO1PENBO΋ར༻Մೳʢ੍ݶ͋Γʣ
    • ·ͩ·੍ͩݶ͸ଟ͍͕ɺࠓޙͷΞοϓσʔτͰ%PDLFSͱͷબ୒͕༰
    қʹͰ͖ΔΑ͏ʹͳΔ͜ͱΛظ଴͍ͨ͠

    View full-size slide

  33. WTDPEFKQ
    5IBOLZPV

    View full-size slide

  34. WTDPEFKQ
    ΦϚέɿ'FEPSB$PSF04ͷ঺հ
    • ܰྔͳ04ɿ
    ØίϯςφʔΛಈ͔͢໨తҎ֎ͷ༨ܭͳ΋ͷ͕ͳ͍
    • Πϯετʔϧɺ04ઃఆ͕؆୯ɿ
    Ø*HOJUJPOͱ͍͏࢓૊ΈΛར༻
    • %PDLFSʢNPCZFOHJOFʣɺ1PENBOඪ४౥ࡌɿ
    ØΠϯετʔϧͷखؒ΍ޓ׵ੑΛؾʹͤͣɺ͙͢ʹίϯς
    φʔΛ࣮ߦՄೳ

    4PGUXBSF%FTJHO݄߸ͷ݄ץ'FEPSBδϟʔφϧʹʮ'FEPSB
    $PSF040,%ʯͷهࣄΛࣥච

    View full-size slide