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

CN Buildpacksが作る未来

CN Buildpacksが作る未来

builderscon 2019でトークした内容です。以下CFP抜粋

CloudNative Buildpacksは従来、HerokuやCloud Foundationを中心に利用されていたBuildpacksがCNCF Sandboxに追加され、Herokuを中心に仕様を策定したCN Buildpack v3 Lifecycleがリリースされています。

Buildpacksはアプリケーションコードを元に必要なミドルウェアやコンフィグを自動でインストールし、アプリケーションが動作する環境をアプリケーションエンジニアが意識することなく開発できる体験を提供します。
具体的にはアプリケーションリポジトリにindex.phpがあればPHPをインストールするというようにリポジトリにあるソースから必要なミドルウェア、コンフィグが判断されます。

話し手はGMOペパボにおいて、全社で利用できるBuildpacksリポジトリを開発、運用しており、アプリケーションリポジトリでmake build を実行するだけで、そのアプリケーションが動作するコンテナイメージが作成されるという仕組みを構築しています。

今後マイクロサービス化がより加速していくと、それに伴い多くの実行環境を準備する必要があるので、Buildpacksのビルドの仕組み、またはそれを構築したノウハウはこのセッションを聴いてくださる方々にとって今後必要になる知識だと思います。

Buildpacksを使ったことがない方、またCN Buildpacksを検討している方はぜひこのセッションを聞きに来てください。

Kazuhiko Yamashita

August 30, 2019
Tweet

More Decks by Kazuhiko Yamashita

Other Decks in Programming

Transcript

  1. ʙՆͷ೔ͷSPBEUPʙ
    !QZBNB(.01FQBCP *OD
    ϖύϘςοΫΧϯϑΝϨϯε
    $/#VJMEQBDLT͕
    ࡞Δະདྷ

    View Slide

  2. γχΞɾϓϦϯγύϧΤϯδχΞ
    ࢁԼ࿨඙!QZBNB
    ٕज़෦ٕज़ج൫νʔϜ

    View Slide

  3. CVJMEFSTDPO
    ߴूੵίϯςφϗεςΟϯάʹ͓͚ΔϘτϧωοΫͱͦͷղ๏

    View Slide

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

    View Slide

  5. -JOVY
    MJCOTTTUOT
    JEFYBNQMF
    VJE FYBNQMF
    HJE FYBNQMF
    HSPVQT FYBNQMF

    VTFS OBNFFYBNQMF
    <\
    OBNFFYBNQMF
    JE

    ^>
    γϯϓϧͰࣗ༝౓ͷߴ͍ઃܭ
    αʔό࣮૷΋͍ΘΏΔ3&45GVM෩ɺMJCOTTTUOT͔Β೚ҙͷίϚϯυΛ࣮ߦͨ͠
    ݁ՌΛར༻Ͱ͖Δ࢓૊Έ΋͋ΔͷͰΫϥΠΞϯτଆͷ֦ு΋ࣗ༝ࣗࡏ

    JE
    LFZT<TTI>
    HSPVQ@JE
    TUOTDPOG

    View Slide

  6. EPDLFSSVOOBNFTUOTETUOTTUOTMBUFTU
    EPDLFSFYFDJUTUOTCJOCBTI
    JEFYBNQMF
    VJE FYBNQMF
    HJE FYBNQMF
    HSPVQT FYBNQMF

    ͙͢ʹࢼͤ·͢
    DVSMGT4-IUUQTSFQPTUOTKQTDSJQUTZVNSFQPTIcTI
    DVSMGT4-IUUQTSFQPTUOTKQTDSJQUTBQUSFQPTIcTI
    %PDLFS
    $FOU04
    VCVOUVEFCJBO

    View Slide

  7. ϗεςΟϯάࣄۀ &$ࢧԉࣄۀ ϋϯυϝΠυɾͦͷଞࣄۀ

    View Slide

  8. ೥ ϩϦϙοϓʂϨϯλϧαʔόαʔϏεఏڙ։࢝


    ೥ ϔςϜϧαʔϏεఏڙ։࢝
    1ࢁ͕ϖύϘʹೖࣾʂʂ̍
    ೥݄೔
    ࣛࣇౡݝग़ਫࢢʹ͓͍ͯ1ࢁര஀ʂʂ̍
    ೥ ݱࡏɾ૑ۀ೥໨
    ϜʔϜʔυϝΠϯαʔϏεఏڙ։࢝

    View Slide

  9. $MPVE/BUJWF
    #VJMEQBDLT

    View Slide

  10. $MPVE/BUJWF#VJMEQBDLTʹ͍ͭͯ
    %PDLFSpMFͱͷൺֱ
    ϖύϘͰͷ׆༻ࣄྫ
    $MPVE/BUJWF#VJMEQBDLT͕ى͜͢มԽ
    ๻ͷ൒ੜɺՄѪ͔ͬͨ༮গظʹ͍ͭͯ
    ࠓ೔࿩͢͜ͱ

    View Slide

  11. w IFSPLV΍$MPVE'PVOESZͰ։ൃ͞Ε͖ͯͨίϯςφ

    Ϗϧυͷ࢓૊Έ
    w ΞϓϦέʔγϣϯίʔυΛݩʹίϯςφΠϝʔδΛੜ੒
    w ྫDPNQPTFSKTPO͕͋Ε͹1)1ΛΠϯετʔϧ͢Δ
    #VJMEQBDL

    View Slide

  12. #VJMEQBDLXJUIIFSPLV
    IUUQTKQIFSPLVDPNFMFNFOUTCVJMEQBDLT

    View Slide

  13. #VJME1BDLͷ՝୊
    IFSPLV΍$MPVE'PVOESZͷ࣮૷Ͱ
    ૬ޓʹඍົʹಈ͔ͳ͍͜ͱ͕͋Δ

    View Slide

  14. w ೥ʹ1JWPUBMͱIFSPLVʹΑͬͯ։࢝
    w $/$'$MPVE/BUJWF4BOECPY΁௥Ճ
    w ݱঢ়͸7FSTJPȌͷ4QFD͕ϦϦʔε͞Ε͍ͯΔ
    w ඪ४Խ͞Εͨ4QFDʹج͖ͮ0$*ΠϝʔδΛ࡞੒Մೳ
    $MPVE/BUJWF#VJMEQBDLT $/#

    View Slide

  15. w ۀքඪ४Խஂମ
    w 0$*Wͱ͍͏ίϯςφͷ3VOUJNF4QFDͱ
    *NBHF
    'PSNBU4QFDΛఆΊͨ
    w 0$*ΠϝʔδͰ͋Ε͹0$*Wʹ४ڌ͍ͯ͠Δ؀ڥͰಈ࡞͢
    Δ͜ͱ͕Ͱ͖Δ
    0$* 0QFO$POUBJOFS*OJUJBUJWF

    View Slide

  16. w MJGFDZDMF QBDLͷࢀߟ࣮૷͕HJUIVCDPNCVJMEQBDLʹͯ
    ެ։͞Ε͍ͯΔɻQBDLίϚϯυ͸8SBQQFSͰ࣮ଶ͸$/#
    ͷ4QFDΛ࣮૷ͨ͠MJGFDZDMF͕࣮ߦ͞ΕΔ
    5PPMT
    QBDL
    DPOUBJOFSQSPDFTT
    MJGFDZDMF
    &YFDVUF

    View Slide

  17. #VJMEQBDLMJGFDZDMF
    IUUQTXXXDODGJPCMPHDODGUPIPTUDMPVEOBUJWFCVJMEQBDLTJOUIFTBOECPY

    View Slide

  18. 3VCZΠϝʔδΛ
    #VJMEͯ͠ΈΔ

    View Slide

  19. ৄղ
    $MPVE/BUJWF#VJMEQBDL

    View Slide

  20. ֓ཁ

    View Slide

  21. ϏϧυͷྲྀΕ
    "QQMJDBUJPO
    $PEF
    #VJMEFS*NBHF
    SVCZDOC
    OPEFDOC
    3VO*NBHF
    "QQMJDBUJPO
    $PEF
    SVCZMBZFS
    QBDLCVJME
    QIQDOC
    CVJME
    CVJME
    FYQPSU
    #VJMEFS*NBHFͰ"TTFUTΛ#VJME͠ɺ
    ࡞੒͞ΕͨMBZFSΛ3VO*NBHFʹॏͶΔ

    View Slide

  22. w ͲͷCVJMEQBDLΛ࢖͏
    w ॱং͸
    w CVJMEJNBHF͸
    w SVOJNBHF͸
    #VJMEFS*NBHFͷఆٛ

    View Slide

  23. % pack create-builder \
    --builder-config builder.toml
    $ docker push
    #VJMEFSͷCVJME
    #VJMEFSࣗ਎΋Πϝʔδͱͯ͠

    CVJMEͰ͖Δ͔ΒՄൖੑ͕ߴ͍

    View Slide

  24. #VJMEQBDLTͷ࣮ߦ
    SVCZDOC
    CJOEFUFDU
    CJOCVJME
    #VJMEQBDL಺ʹ͋ΔEFUFDU CVJME͕
    MJGFDZDMF͔Β࣮ߦ͞ΕΔ
    QIQDOC
    CJOEFUFDU
    CJOCVJME
    OPEFDOC
    CJOEFUFDU
    CJOCVJME
    MJGFDZDMF
    3VCZ͸Πϯετʔϧ͢Δʁ
    1)1ίϯύΠϧ͠·͢Ͷ

    View Slide

  25. MBZFSTEJS
    MBZFST SVCZDOC
    QIQDOC
    #VJME*NBHFʹ૊Έࠐ·Εͨ$/#͸
    MBZFSTσΟϨΫτϦΛى఺ʹ഑ஔ͞ΕΔ
    EFUFDU
    CJO
    EFUFDU
    CJO

    View Slide

  26. #VJMEFS*NBHF
    ಄ͷ੔ཧ
    MBZFST SVCZDOC
    QIQDOC
    #VJMEFS*BNBHFͷதʹ͋Δɺ
    MBZFSTσΟϨΫτϦʹ$/#͕഑ஔ͞Εɺ
    MJGFDZDMF͕ݺͼग़͢
    EFUFDU
    CJO
    EFUFDU
    CJO
    MJGFDZDMF

    View Slide

  27. *OTJEF#VJMEQBDL

    View Slide

  28. %FUFDU
    #VJME1BDLΛϏϧυʹར༻͢Δ͔ʁ
    1BTT
    GBJM
    PSFSSPS
    ͷΑ͏ʹ
    ໭Γ஋Ͱར༻Մ൱ɺΤϥʔΛฦ٫͢Δ

    View Slide

  29. %FUFDU
    ґଘؔ܎Λࣔͨ͢Ίʹ
    #VJME1MBOΛఆٛ͢Δ͜ͱ͕Ͱ͖Δ
    ྫCVOEMFSΛར༻͢Δʹ͸
    3VCZ͕ඞཁ
    [[provides]]
    name = "bundler"
    [[requires]]
    name = "ruby"
    version = "2.6.3"

    View Slide

  30. w ίϯςφΠϝʔδʹอଘ͞Ε͍ͯΔϝλσʔλ͔Βࠩ෼Λ
    ݕग़͠ɺݱࡏͷࢿ࢈ͱൺֱ͠ɺ#VJMEͷ࠷దԽΛߦ͏
    "OBMZ[F
    % docker inspect | jq -r '.[].Config.Labels'
    # snip
    "buildpacks": [
    {
    "key": "com.examples.buildpacks.ruby",
    "version": "0.0.1",
    "layers": {
    "ruby": {
    "sha": "sha256:xxxxxxxxxx",
    ]

    View Slide

  31. w όΠφϦɺ"TTFUTͷίϯύΠϧͳͲ
    w ؀ڥม਺ͷઃఆ
    w ىಈίϚϯυͷઃఆ
    #VJME

    View Slide

  32. #VJMEόΠφϦɺ"TTFUT
    MBZFST SVCZDOC
    QIQDOC
    3VCZΛల։͍ͨ͠ྫ
    SVCZ
    # rubyΛμ΢ϯϩʔυ͢Δ
    % wget -q -O - "$ruby_url" | tar -xzf - -C "/layers/
    ruby-cnb/ruby"
    # /layers//.toml
    % echo -e 'launch = true' > /layers/ruby-cnb/ruby.toml

    View Slide

  33. Launch Layers
    A buildpack MAY specify that a // directory is
    a launch layer by placing launch = true in /
    .toml.
    The lifecycle MUST include each launch layer in the built OCI
    image. The lifecycle MUST also store the Layer Content Metadata
    associated with each layer so that it can be recovered using the
    layer Diff ID.
    IUUQTHJUIVCDPNCVJMEQBDLTQFDCMPCNBTUFSCVJMEQBDLNEFOWJSPONFOU

    View Slide

  34. Build Layers
    A buildpack MAY specify that a // directory is
    a build layer by placing build = true in /
    .toml.
    The lifecycle MUST make all build layers accessible to
    subsequent buildpacks as described in the Environment section.
    IUUQTHJUIVCDPNCVJMEQBDLTQFDCMPCNBTUFSCVJMEQBDLNEFOWJSPONFOU

    View Slide

  35. #VJME؀ڥม਺ͷఆٛ
    IUUQTHJUIVCDPNCVJMEQBDLTQFDCMPCNBTUFSCVJMEQBDLNEFOWJSPONFOU
    MJGFDZDMFͷ࣮૷Ͱ؀ڥม਺͸ࣗಈఆٛ

    View Slide

  36. #VJME؀ڥม਺ͷఆٛ
    MBZFST SVCZDOC
    QIQDOC
    ؀ڥม਺Λ௥Ճ͍ͨ͠έʔε
    SVCZ
    % echo $PATH
    /layers/ruby-cnb/ruby/bin
    % echo $LD_LIBRARY_PATH
    /layers/ruby-cnb/ruby/lib
    % echo "/ruby/bin:" > /layers/ruby-cnb/ruby/env/PATH.append

    View Slide

  37. #VJMEىಈίϚϯυͷઃఆ
    ىಈ͍ͨ͠ϓϩηεΛ

    MBZFSTMBVODIUPNMͱͯ͠ఆٛ
    [[processes]]
    type = "web"
    command = "bundle exec ruby app.rb"

    View Slide

  38. #VJMEىಈίϚϯυͷઃఆ
    ෳ਺ͷ$/#Λ࣮ߦ͠ಉ͡ͳΒ͹ޙউͪ
    [[processes]]
    type = "web"
    command = "bundle exec ruby app.rb"
    SVCZDOC
    [[processes]]
    type = "web"
    command = "npm start"
    OQNDOC
    SVCZDOCͷޙʹ
    OQNDOCΛ࣮ߦ

    ʮOQNTUBSUʯ͕
    ىಈίϚϯυͱͳΔ

    View Slide

  39. &YQPSU
    ݱঢ়ͷMJGFDZDMF࣮૷ͩͱ
    %PDLFSͷ"1*ʹґଘ͍ͯ͠Δ
    % docker save test-ruby-app > test-rb.tar
    % tar zxv test-rb.tar
    % cd f831edb4ae8ed...
    % tar zxvf layer.tar
    tar: Removing leading '/' from member names
    x workspace
    x workspace/Gemfile
    x workspace/Gemfile.lock
    x workspace/app.rb

    View Slide

  40. &YQPSU ࢀߟ

    % docker inspect test-ruby-app | jq . | grep RootFS -A10
    "RootFS": {
    "Type": "",
    "Layers": [
    "sha256:f831edb4ae8ed4e9c87d8ec195d98334191fd772c40d7375be1df51443dcf0df",
    "sha256:ce430ae9aaef0810265eb37e374ec448af547fbf0b391a3879140faaf45391fd",
    "sha256:0670c818350e963326b7655c0ae7fd2e2438a50a46feb2ffd9b4ae05841c1126",
    "sha256:b0d2839a2e054261cafa3d694db5e548342785313a282020e3b19704b8995328",
    "sha256:c8a8ddb80dd9923057bd12f9f69c6b093925a8925f3c37550a88b90f02699aa9",
    "sha256:512ae48a9f9d01cc9eb6a822660ce2cf3ad5a9c6c6fddc315cdcbb191e3b59a3"
    ]
    },

    View Slide

  41. ͪΐͬͱͩΔͦ͏ͩͱ
    ࢥͬͯΔਓ͍Δ͡ΌΜ͔͢ʁ

    View Slide

  42. w HJUIVCDPNCVJMEQBDLMJCCVJMEQBDL
    w ຊՈCVJMEQBDLͷ(PϥΠϒϥϦ
    w HJUIVCDPNDMPVEGPVOESZMJCCVJMEQBDL
    w ຊՈCVJMEQBDLΛDMPVEGPVOESZ͕8SBQ࣮ͨ͠૷
    w HJUIVCDPNDMPVEGPVOESZQIQEJTUDOC
    w $MPVE'PVOESZ͕࣮૷͍ͯ͠Δ֤छݴޠͷ$/#
    #VJMEQBDLT
    ॆ࣮ͨ͠։ൃ؀ڥ

    View Slide

  43. MJCSBSZ͕4QFDΛӅಗͯ͘͠ΕΔ
    HJUIVCDPNDMPVEGPVOESZOQNDOC

    View Slide

  44. ૬ޓʹґଘղܾΛߦ͍ͳ͕ΒɺΞϓ
    ϦέʔγϣϯΛݩʹϓϩάϥϚϒϧ
    ʹίϯςφΠϝʔδΛ࡞੒͢Δࣄ͕
    Ͱ͖Δ
    ىಈίϚϯυ΍؀ڥม਺ͷఆٛ͸
    UPNMͰఆΊΒΕͨϑΥʔϚοτʹ
    ΑͬͯఆٛͰ͖Δ
    ݴޠͷ$/#ͳͲ͸$MPVE'PVOESZ
    ͳͲͷઌߦऀ͕044ͱͯ͠ఏڙͯ͠
    ͍Δ
    ͜͜·Ͱͷ·ͱΊ
    #VJMEFS*NBHF
    SVCZDOC
    OPEFDOC
    QIQDOC
    CVJME
    CVJME

    View Slide

  45. %PDLFSpMFͱͷҧ͍

    View Slide

  46. w 4FDVSJUZ'JYͳͲͷରԠ
    w #VJME"TTFUTͷྲྀ༻ੑ
    w #VJME؀ڥ
    %PDLFSpMFͱ$/#ͷൺֱ

    View Slide

  47. %PDLFSpMF
    w %PDLFSpMF͝ͱʹؤுΔ
    w #BTF*NBHFΛఆٛ͢Δ
    4FDVSJUZ'JY
    $/#
    w #VJME*NBHFΛߋ৽͢Δ

    View Slide

  48. ࢄࡏ͕ͪ͠ͳ%PDLFSpMF
    PSHBQJ
    %PDLFSpMF
    PSHXXX
    %PDLFSpMF
    PSHJOGSB
    %PDLFSpMF
    PSHVTFS
    %PDLFSpMF
    PSHCMPH
    %PDLFSpMF
    ͢΂ͯͷ%PDLFSpMFͷߋ৽ٴͼɺ

    ࣮ଶ֬ೝ͕ඞཁ

    View Slide

  49. FROM ubuntu:latest
    RUN apt install libssl-dev openssl
    %PDLFSʹ͓͚Δ#BTF*NBHFӡ༻
    FYBNQMFCBTFMBUFTU
    FROM example/base:latest(X.X.X)
    RUN apt install php httpd
    FYBNQMFPSJHJOMBUFTU
    7FSTJPOॻ͍ͪΌ͏ͱɺ
    CBTF͕ߋ৽͞ΕͨΒશ
    ෦ͷ%PDLFSpMFॻ͍ͯճ
    Βͳ͍ͱߦ͚ͳ͍
    CBTFͰ0QFO44-
    ߋ৽͞Ε͚ͨͲपลϥΠϒ
    ϥϦಈ͘ʁ

    View Slide

  50. wΞϓϦέʔγϣϯΛݩʹɺίʔυͰϏϧυ͢Δ
    ͷͰϓϩάϥϚϒϧʹґଘղܾͳͲ͕ߦΘΕΔ
    wϏϧμʔΛߋ৽͢Ε͹ͦΕΛར༻͢ΔϦϙδτ
    ϦͷΠϝʔδ͸ࣗಈͰ࠷৽ʹͳΔ
    $/#ͳΒ͹ʁ

    View Slide

  51. %PDLFSpMF
    #VJMEҙࢥܾఆͷҧ͍
    $/#
    %PDLFSpMFʹ0QFO44-Λ
    ࢖͏ͱॻ͘
    EPDLFSCVJME˞
    $/#ʹɺ؀ڥʹΑͬͯ
    0QFO44-ɺΛ࢖͏

    ίʔυΛॻ͘
    QBDLCVJE
    0QFO44-Λ࢖͏Πϝʔδ
    ര஀
    0QFO44-ɺͷར༻͕ΞϓϦ
    έʔγϣϯίʔυΛج४ͱͨ͠Ͱҙࢥ
    ܾఆʹΑͬͯબ͹Εͨϝʔδര஀
    ˞ɹϏϧυ࣌ʹ؀ڥม਺ͳͲͰڍಈΛมߋ͢Δ͜ͱ͸΍Ζ͏ͱࢥ͑͹Ͱ͖Δ

    View Slide

  52. %PDLFSpMF
    w LBOJLPCVJMELJUͳͲΛར༻͠

    ඇಛݖ؀ڥʹͯϏϧυͰ͖Δ
    #VJME؀ڥ
    $/#
    w %PDLFSσʔϞϯʹґଘ͍ͯ͠Δ

    ͨΊɺಛݖ͕ඞཁ

    View Slide

  53. $/#͸தԝूݖతʹ
    ҙࢥܾఆͷఆٛΛߦ͍
    ஗Ԇ࣮ߦͰ͖Δ͕
    ಛݖ͕ࠓͷͱ͜Ζ͸ඞཁ

    View Slide

  54. (.0ϖύϘʹ͓͚Δ
    $/#ͷར׆༻ʹ͍ͭͯ

    View Slide

  55. w े਺ݸͷαʔϏεΛ։ൃɺӡ༻͍ͯ͠Δ
    w ྺ࢙తͳܦҢ΋͋Γɺ1)1ɺ3VCZɺ(PMBOH͕

    ϝΠϯͷ։ൃݴޠͰɺόʔδϣϯ΋༷ʑ
    w ։ൃ؀ڥ͸7BHSBOU࣌ʑ%PDLFS
    ϖύϘͷഎܠ

    View Slide

  56. Α͋͘Δ΍ͭ

    View Slide

  57. ʮ։ൃ؀ڥ্ཱ͕͕ͪΒͳ͍Μ

    Ͱ͚͢Ͳʁʯ

    View Slide

  58. CVOEMFFYFDDBQQSPEVDUJPOEFQMPZ
    ͕ɺͳΜ͔Τϥʔग़ͯࢭ·ΔΜͰ͚͢Ͳʁ

    View Slide

  59. ৺ͷ੠

    View Slide

  60. ͦ͏͍͏ͷ͸શ෦
    ,VCFSOFUFT࢖͑͹͍͍ͬͯ
    Ͳ͔ͬͰฉ͖·ͨ͠

    View Slide

  61. ,VCFSOFUFTXJUI$/#
    HJUQVTI
    UFTUCVJME
    QVTIJNBHF
    EFQMPZJNBHF
    TXBQEFQMPZNFOU

    View Slide

  62. ,VCFSOFUFTXJUI$/#
    HJUQVTI
    UFTUCVJME
    QVTIJNBHF
    EFQMPZJNBHF
    TXBQEFQMPZNFOU

    View Slide

  63. ίϚϯυͰΠϝʔδ͕ര஀
    PSHBQJ
    QIQ
    PSHXXX
    1)1
    PSHJOGSB
    1)1
    PSHCMPH
    1)1
    % pack build --builder
    xxxx/tech-php-builder:0.0.1
    #VJMEFS*NBHFΛϓϥΠϕʔτϨδετϦͰ؅ཧ͍ͯ͠ΔͨΊ
    ίϚϯυҰͭͰɺͲͷ1)1ϦϙδτϦͰ࣮ߦͯ͠΋࠷దͳΠϝʔδ͕Ͱ͖Δ

    View Slide

  64. ୤ઢ
    5FMFQSFTFOTF

    View Slide

  65. 5FMFQSFTFOTF

    View Slide

  66. #FGPSF5FMFQSFTFOTF
    XXX
    VTFS
    BQJ
    EPDLFSDPNQPTF΍7BHSBOUΛ
    ར༻͠ɺϩʔΧϧͰ͢΂ͯͷؔ࿈αʔϏεΛىಈ

    View Slide

  67. "GUFS5FMFQSFTFOTF
    XXX
    VTFS
    BQJ
    ඞཁͳαʔϏε͚ͩखݩͰىಈͯ͠ɺ
    ࢒Γ͸,VCFSOFUFTͷϦιʔεΛ࢖͏
    BQJ

    View Slide

  68. w ࠃ಺ʹ৘ใ͕গͳ͍தͰͷ$/#։ൃ
    w ֤ݴޠͷ࣮૷ϚδͰԶ͕΍ΔΜ͔ʁͱ͍͏ؾ࣋ͪ
    w $MPVE'PVOEMZ࠷ߴ
    ۤ࿑ͨ͜͠ͱɺͦͯ͠ݱঢ়ͱ͜Ε͔Β
    w ϗεςΟϯάࣄۀͷϩϦϙοϓʂͷ։ൃ؀ڥͷओཁՕॴΛ
    $/#ͱ,VCFSOFUFTج൫΁
    ۤ࿑ͨ͠ɺ΋͏ೋ౓ͱಉ͡ࢥ͍Λͨ͘͠ͳ͍
    ً͔͍͠ະདྷ
    w ݴޠɺ؀ڥࠩҟΛ$/#ͰຒΊɺશࣾల։΁
    w ͍݁ࠗͨ͠
    ݱঢ়

    View Slide

  69. $/#͕૑Δະདྷ

    View Slide

  70. ,VCFSOFUFTͷొ৔ʹΑΓɺ͜Ε·ͰΠϯϑϥͱݺ͹Ε
    ͍ͯͨϨΠϠʔ͕Ұஈந৅Խ͞Εͨ
    ίϯςφͷηΩϡϦςΟɺύοέʔδɺґଘੑ؅ཧ͸

    ୭͕΍Δʁ
    ͍ΘΏΔΠϯϑϥΤϯδχΞͷಇ͖ํ͕มԽ͢Δ͔΋͠Εͳ͍

    View Slide

  71. ͍ΘΏΔΠϯϑϥΤϯδχΞͷಇ͖ํ͕มԽ͢Δ͔΋͠Εͳ͍
    ΞϓϦέʔγϣϯΤϯδχΞ
    ϓϥοτϑΥʔϜΤϯδχΞ
    ΞϓϦέʔγϣϯ։ൃʹ੹຿Λෛ
    ͍ɺ༏ΕͨΞϓϦέʔγϣϯΛ

    ։ൃ͢Δ
    ΞϓϦέʔγϣϯ͕ಈ͘؀ڥͷ։ൃ
    ӡ༻ʹ੹຿Λෛ͍ɺՄ༻ੑͷߴ͍

    ؀ڥΛఏڙ͢Δ

    View Slide

  72. ΞϓϦέʔγϣϯΤϯδχΞ͸ΞϓϦ։ൃʹूத͢Δ
    ϓϥοτϑΥʔϜΤϯδχΞ͸$/#Λ։ൃ͠ɺ
    ,VCFSOFUFTҎ্ ΦϯϓϨͳΒ෺ཧ΋
    ͷϨΠϠʔͰಈ͘
    ΞϓϦέʔγϣϯͷՄ༻ੑʹ੹຿Λ࣋ͭ
    ϓϥοτϑΥʔϜΤϯδχΞ͕$/#Λར༻ͯ͠

    ίϯςφΠϝʔδʹ੹຿Λ࣋ͭ
    "QQ
    DPOUBJOFS
    LVCFSOFUFT
    DPOUBJOFS
    ϓϥοτϑΥʔϜΤϯδχΞͷ੹຿
    ΞϓϦέʔγϣϯΤϯδχΞͷ੹຿

    View Slide

  73. ΞϓϦέʔγϣϯͱ
    ϓϥοτϑΥʔϜͷ෼ۀ͕Ճ଎

    View Slide

  74. ·ͱΊ

    View Slide

  75. $/#͸
    ෳ਺ͷݴޠɺόʔδϣϯ͕
    ࠞࡏ͢Δ؀ڥͰɺ
    ڧ͘ϨόϨοδ͕ޮ͘

    View Slide

  76. $/#͸
    ίϯςφΠϝʔδΛ
    ϓϩάϥϚϒϧʹߏ੒؅ཧͰ͖Δ

    View Slide

  77. $/#͕
    ྲྀߦΓͩ͢ͱɺ
    ߋʹ෼ۀ͕ਐΉɾɾɾ͔΋ʁ

    View Slide

  78. w !KBDPQFO͞ΜͷԢ੝ͳΞ΢τϓοτʹॿ͚ΒΕ·ͨ͠
    w /55ςΫϊΫϩεͷ৿઒͞ΜͷRJJUBهࣄ

    ʮίϯςφඪ४Խ࣌୅ʹ͓͚Δ࣍ੈ୅#VJMEQBDLʰ$MPVE
    /BUJWF#VJMEQBDLʱʹ͍ͭͯʯ

    ͕ͳ͚Ε͹๻͕#VJMEQBDLTʹ໨֮ΊΔ͜ͱ͸͋Γ·ͤΜͰ
    ͨ͠
    w IUUQTXXXDMPVEGPVOESZPSH

    044Խ͞Εͨ$/#Ͱେมޮ཰Α͘։ൃͰ͖͍ͯ·͢
    ँࣙ

    View Slide

  79. View Slide

  80. ܅΋ϖύϘͰಇ͔ͳ͍͔ʁ
    ࠷৽ͷ࠾༻৘ใΛνΣοΫˠ !QC@SFDSVJU

    View Slide