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

機械学習プロジェクトを頑健にする施策 ML Ops Study #2

機械学習プロジェクトを頑健にする施策 ML Ops Study #2

Takahiko Ito

May 29, 2018
Tweet

More Decks by Takahiko Ito

Other Decks in Programming

Transcript

  1. ػցֶशϓϩδΣΫτΛؤ݈ʹ͢Δࢪࡦ
    ϫʔΫϑϩʔɺԾ૝Խɺ
    ඼࣭޲্ɺ஌ࣝҠৡ etc
    ҏ౻ܟ඙

    View Slide

  2. ࣗݾ঺հ
    • ιϑτ΢ΣΞΤϯδχΞ
    • ത࢜ʢ޻ֶʣ
    • TwitterΞΧ΢ϯτ: takahi_i
    • Φʔϓϯιʔεɿ RedPen
    2

    View Slide

  3. ຊ೔ͷτϐοΫ
    • ػցֶशϓϩδΣΫτ͕੬͘ͳͬͯΏ͘ݪҼͱ
    औΓ૊ΜͰ͍Δରॲ๏ʹ͍ͭͯ঺հ
    • ஫ɿ͍͔ͭ͘ͷϓϩδΣΫτͰͷऔΓ૊Έ
    • NOTE: ػցֶशͷϞσϧΛσϓϩΠ͢Δ෦෼͸
    ѻΘͳ͍
    3

    View Slide

  4. ػցֶशϓϩδΣΫτͷεςʔ
    δ
    ୳ࡧతͳ࣮ݧ ίʔυ੔ཧ
    Ϟσϧͷ
    σϓϩΠ
    ̏ͭͷεςʔδʢ୳ࡧతͳ࣮ݧɺεΫϦϓτ
    ԽɺσϓϩΠʣ͔ΒͳΔ
    4
    ϥΠϒϥϦԽ
    ϦϑΝΫλϦϯά
    ςετɺLinter
    CI
    όονεΫϦϓτɺ
    ίϯτϩʔϥ௥Ճɺ
    CD
    Jupyter Notebook

    View Slide

  5. ࠓճѻ͏ൣғ
    ຊൃදͰѻ͏τϐοΫ
    ୳ࡧతͳ࣮ݧ ίʔυ੔ཧ
    Ϟσϧͷ
    σϓϩΠ
    5
    ϥΠϒϥϦԽ
    ϦϑΝΫλϦϯά
    ςετɺLinter
    CI
    όονεΫϦϓτɺ
    αʔϏεԽɺ
    CD
    ࣮ݧˠίʔυ੔ཧ͔ΒϓϩδΣΫτͷؤ݈ԽΛ
    ҙࣝ͢Δ
    Jupyter Notebook

    View Slide

  6. ίʔυ੔ཧεςʔδ
    • Jupyter Notebook ͰಘΒΕ࣮ͨݧ݁ՌΛϥΠϒϥϦ
    ԽɺεΫϦϓτʹ͢Δ
    • ࣮ࢪऀɿϦαʔνϟɺ΋͘͠͸Ҿ͖ܧ͙ιϑτ΢Σ
    ΞΤϯδχΞ
    • த్൒୺ͳίʔυ੔ཧ → ϓϩδΣΫτ͕੬͘
    6

    View Slide

  7. ੬͍ػցֶशϓϩδΣΫτ
    • ػցֶशͷਫ਼౓͕མ͍ͪͯΔ͕ɺͩΕ΋ཧղͰ
    ͖ͳ͍
    • ࡞ͬͨਓ͕ࣙΊͯ͠·͕ͬͨɺͲ͏΍͍ͬͯͨ
    ͷ͔Θ͔Βͳ͍
    7

    View Slide

  8. ػցֶशΛར༻ͨ͠αʔϏε
    ͷ೉͠͞
    • ΞϧΰϦζϜͷ೉͠͞✕ΤϯδχΞϦϯάͷ೉͠͞
    㱺྆ํͰ͖ͳ͍ͱ͏·͍͔͘ͳ͍
    • ϓϩδΣΫτͷ։͔࢝ΒΤϯδχΞϦϯάͷجຊΛ
    कͬͯҰาͣͭؤ݈ʹ
    • جຊɿ؀ڥݻఆʢԾ૝ԽʣɺϫʔΫϑϩʔ؅ཧɺϦ
    ϑΝΫλϦϯάɺςετɺCIɺϖΞϓϩɺ etc
    8

    View Slide

  9. ػցֶशϓϩδΣΫτɿ੬͞
    ͷݪҼ
    ػցֶशϓϩδΣΫτ͸ҎԼͷ఺͔Β੬͘ͳͬͯ
    Ώ͘
    • ࣮ݧεΫϦϓτ͕ಈ͔ͳ͍
    • ࣮ݧεΫϦϓτ͕ཧղͰ͖ͳ͍
    • ࣮ݧͨ͠ਓ͔Βίʔυ͕཭ΕΔ
    9

    View Slide

  10. ػցֶशϓϩδΣΫτͷ੬͞
    ҎԼɺ֤໰୊ͱରॲํ๏ʹ͍ͭͯղઆ
    • ࣮ݧεΫϦϓτ͕ಈ͔ͳ͍
    • ࣮ݧεΫϦϓτ͕ཧղͰ͖ͳ͍
    • ࣮ݧͨ͠ਓ͔Βίʔυ͕཭ΕΔ
    10

    View Slide

  11. ػցֶशϓϩδΣΫτͷ੬͞
    • ࣮ݧεΫϦϓτ͕ಈ͔ͳ͍
    • ࣮ݧεΫϦϓτ͕ཧղͰ͖ͳ͍
    • ࣮ݧͨ͠ਓ͔Βίʔυ͕཭ΕΔ
    11

    View Slide

  12. ػցֶशϨϙδτϦ͋Δ͋Δ
    GitHubʹ͋Δػցֶशք۾ͷϦϙδτϦʹ͍ͭͯͷ
    Tweet
    ಺੡Ͱ΋OSSͰ΋ɺ͜ͷΑ͏ͳঢ়ଶͷϨϙδτϦΛαʔ
    ϏεʹಋೖͰ͖ͳ͍ɻɻɻ
    12

    View Slide

  13. ࣮ݧεΫϦϓτ͕ಈ͔ͳ͍
    ໰୊͸̎ͭʹ෼ྨ͞ΕΔ
    1.εΫϦϓτͷ࣮ߦॱং͕෼͔Βͳ͍
    2.εΫϦϓτ͕ґଘ͢Δ؀ڥ͕෼͔Βͳ͍
    13

    View Slide

  14. ࣮ߦॱং͕Θ͔Βͳ͍
    • ঢ়گɿεΫϦϓτ͕ෳ਺༻ҙ͞Ε͍ͯΔ
    • ໰୊
    • ֶशσʔλ͕Ͳ͜ʹଘࡏ͢Δͷ͔Θ͔Βͳ͍
    • Ͳͷॱ൪Ͱ࣮ߦ͢Ε͹Α͍ͷ͔෼͔Βͳ͍
    14

    View Slide

  15. ղܾํ๏ɿϫʔΫϑϩʔΛ؅
    ཧ͢Δ
    • ϑϩʔΛ؅ཧͰ͖ΔπʔϧΛϦϙδτϦʹಋೖ
    ͢Δɿmake΍Luigi
    • εΫϦϓτͷ࣮ߦॱং΍ґଘؔ܎΋هड़Ͱ͖Δ
    • ϝϦοτɿCIɺCDಋೖ΋γϯϓϧʹ
    15

    View Slide

  16. εΫϦϓτΛ࣮ߦ͢Δ؀ڥ͕
    ࡞Εͳ͍
    • ػցֶशΛѻ͏εΫϦϓτ͸ଟ਺ͷϥΠϒϥϦ
    ʹґଘ
    • PythonϥΠϒϥϦ͚ͩͰͳ͘ɺଞͷݴޠͰهड़
    ͞Εͨπʔϧʹґଘ͢ΔʢMeCabͳͲʣ
    • ֤εςʔδ͝ͱʹҟͳΔ؀ڥʢܭࢉػʣͰಈ࡞
    ͢ΔͷͰϙʔλϏϦςΟ͕ॏཁ
    16

    View Slide

  17. ໰୊ɿલͷεςʔδͰಈ͍ͯ
    ͍࣮ͨݧ͕ಈ࡞͠ͳ͍
    17
    ࣮ݧ
    ςετɺlintɺϦϑΝΫλ
    ϦϯάɺϥΠϒϥϦԽɺ
    CI
    όονεΫϦϓτɺ
    CDɺαʔϏε
    Ϟσϧվྑ kubernetes
    ECS
    ίʔυ੔ཧ
    σϓϩΠ
    εςʔδ͝ͱʹಈ࡞؀ڥΛ
    ࡞Δίετ͕େ͖͍ɻ
    →ϞσϧͷվྑαΠΫϧ͕ճΒͳ͍(TдT)

    View Slide

  18. ղܾํ๏ɿDocker Λಋೖ
    • ܰྔͳԾ૝Խ؀ڥ
    • PythonϥΠϒϥϦҎ֎ͷɺґଘ͢Δ؀ڥ΋
    Dockerfile ʹهड़Ͱ͖Δ
    • ؀ڥͷϙʔλϏϦςΟ͕޲্
    18

    View Slide

  19. DockerͰ؀ڥΛԾ૝Խ
    19
    ࣮ݧ
    ςετɺlintɺϦϑΝΫλ
    ϦϯάɺϥΠϒϥϦԽɺ
    CI
    όονεΫϦϓτɺ
    CDɺαʔϏε
    Ϟσϧվྑ kubernetes
    ECS
    ίʔυ੔ཧ
    σϓϩΠ
    ࣮ݧஈ֊͔ΒҰ؏ͯ͠Dockerίϯς
    φ্Ͱ࡞ۀɻಈ࡞͠ͳ͍εςʔδ͕
    ग़ͳ͍Α͏ʹ

    View Slide

  20. ͔͠͠ɺɺDocker͸ɺɺ
    • ίϚϯυ͕௕͍ɻɻɻɻ(TдT)
    • ϙʔτϑΥϫʔυɺϑΝΠϧϚ΢ϯτΛࢦఆ
    • ࣮ݧεςʔδ͔Β Docker Ͱ࡞ۀ͢Δؾ͕ى͜Β
    ͳ͍ɻɻɻ
    20

    View Slide

  21. Docker ίϚϯυ
    • Docker Πϝʔδͷ࡞੒
    • docker build -t ml-image -f ./docker/Dockerfile .
    • Dockerίϯςφͷ࡞੒
    • docker run -it -v `pwd`:/work -p 8888:8888 —
    name ml-image ml-container
    • ͞Βʹɺ࡟আɺ࠶ੜੑ etc …
    21

    View Slide

  22. ͦ͜Ͱ
    ( *´ůшʆ) Šŕťž
    22

    View Slide

  23. ղܾํ๏ɿCookiecutter Docker
    Science
    • Docker؀ڥͰͷ࣮ݧʙσϓϩΠ·ͰΛα
    ϙʔτ͢ΔCookiecutterςϯϓϨʔτΛͭ͘
    Γ·ͨ͠
    • ΦʔϓϯιʔεϓϩδΣΫτ
    • URL: https://docker-science.github.io/
    • Cookiecutter: ϓϩδΣΫτͷςϯϓϨʔτ
    ੜ੒πʔϧ
    23

    View Slide

  24. ػೳɿCookicutter Docker
    Science
    • ΤϯδχΞϦϯάೳྗͷߴ͘ͳ͍ϝϯόͰ΋DockerΛѻ͍΍͘͢
    • DockerͷίϚϯυΛ make λʔήοτͰӅṭ
    • ϙʔτϑΥϫʔυɺϑΝΠϧϚ΢ϯτઃఆɺίϯςφ࡞Γ௚͠
    etc …
    • ࣮ݧ͔Β੔ཧɺσϓϩΠ·ͰΛҙࣝͨ͠σΟϨΫτϦߏ੒Λग़ྗ
    • σΟϨΫτϦߏ੒ͷڞ௨ԽʹΑΓϓϩδΣΫτͷݟ௨͠
    • Cookiecutter Data Science ͷߏ੒Λࢀߟʹͨ͠
    24

    View Slide

  25. ϑΝΠϧɺσΟϨΫτϦߏ੒
    ͷ౷Ұ
    25
    make init
    Ͱ S3͔ΒσʔλΛμ
    ΢ϯϩʔυ
    ֶशεΫ
    Ϧϓτ͕ओྗ͢ΔϞσ
    ϧΛอ࣋
    ࣮ݧ༻ͷϊʔτϒο
    ΫΛอ࣋
    ίʔυ੔ཧ࣌ʹ࡞
    ΒΕΔϝιουɺΫϥε
    Λอ࣋
    ϓϩδΣΫτͷϫʔ
    ΫϑϩʔΛ௥ه

    View Slide

  26. Cookiecutter Docker Science ͷ
    ࢖͍ํʢϓϩδΣΫτੜ੒ʣ
    $cookiecutter [email protected]:docker-science/cookiecutter-docker-science.git
    project_name [project_name]: image-classification
    project_slug [image_classification]:
    jupyter_host_port [8888]:
    description [Please Input a short description]: Classify images into several
    categories
    data_source [Please Input data source in S3]: s3://research-data/food-images
    26

    View Slide

  27. Demo: Cookiecutter Docker
    Science
    • ϓϩδΣΫτͷੜ੒
    • https://asciinema.org/a/
    6XV9dNixtzfUwWdoqLj7HG7
    A2
    • Docker image / container ίϯς
    φ࡞੒
    • https://asciinema.org/a/
    06CcXPubAj3RSiMSTy3CZDrfG
    • Jupyter Notebook Λ্ཱͪ͛Δ
    27

    View Slide

  28. Cookiecutter Docker Science Λར༻
    ࣮ͯ͠ݧஈ֊͔ΒԾ૝Խ؀ڥͰ࡞ۀ
    28
    ࣮ݧ
    ςετɺlintɺϦϑΝΫλ
    ϦϯάɺϥΠϒϥϦԽɺ
    CI
    όονεΫϦϓτɺ
    CDɺαʔϏε
    Ϟσϧվྑ kubernetes
    ECS
    ίʔυ੔ཧ
    σϓϩΠ
    ͢΂ͯͷεςʔδͰԾ૝؀ڥ
    γʔϜϨεʹεςʔδΛҠಈͰ͖Δ

    View Slide

  29. ػցֶशϓϩδΣΫτͷ੬͞
    • ࣮ݧεΫϦϓτ͕ಈ͔ͳ͍
    • ࣮ݧεΫϦϓτ͕ཧղͰ͖ͳ͍
    • ࣮ݧͨ͠ਓ͔Βίʔυ͕཭ΕΔ
    29

    View Slide

  30. ࣮ݧεΫϦϓτ͕ཧղͰ͖ͳ͍
    • ঢ়گɿͳΜ͔ಈ࡞͍ͯ͠ΔΑ͏͕ͩɺϞσϧΛੜ੒͍ͯ͠Δίʔ
    υ͕ཧղͰ͖ͳ͍
    • ྫɿJupyter Notebook Λͦͷ··ίϐϖͨ͠εΫϦϓτ
    • ػցֶशΞϧΰϦζϜ͸೉͍͠㱺ίʔυ͕੔ཧ͞Ε͍ͳ͍ͱ΋ͬ
    ͱ೉͍͠
    • ରॲɿιϑτ΢ΣΞΤϯδχΞϦϯάͰҰൠతͳίʔυ඼࣭ͷ
    ޲্ࢪࡦΛಋೖ
    • ϦϑΝΫλϦϯάɺςετɺCI etc
    30

    View Slide

  31. ϦϑΝΫλϦϯά
    • ϓϩάϥϜͷ֎෦͔Βݟͨಈ࡞Λม͑ͣʹιʔε
    ίʔυͷ಺෦ߏ଄Λ੔ཧ͢ΔʢWikipedia ΑΓʣ
    • ෳࡶʹͳΓ͕ͪͳػցֶशͷॲཧΛ੔ཧ͢Δ
    • ॴײɿGitHub ΍ Qiita Ͱެ։͞Ε͍ͯΔػցֶ
    शίʔυΛΈΔͱɺίʔυ੔ཧ͕ͳ͞Ε͍ͯΔ
    ΋ͷ͕গͳ͍ʢଞ෼໺ͷίʔυͱൺֱʣɻ
    31

    View Slide

  32. ϦϑΝΫλϦϯά߲໨
    ॳาతͳ੔ཧͰ΋ಡΈ΍͕͢͞޲্͢ΔʢςετɺCIɺCD΁ͷ෍ੴʣ
    • ؔ਺ͷ௕͞
    • ม਺ͷείʔϓ
    • ؔ਺͕औΔҾ਺ͷ਺
    • ϚδοΫφϯόʔͷఆ਺΁ͷஔ͖׵͑
    • ಉ͡ॲཧΛҰՕॴʹ·ͱΊΔ
    • ਂ͍ωετ෦෼Λؔ਺ͱͯ͠நग़͢Δ
    32

    View Slide

  33. ؔ਺ͷ௕͞
    • ؔ਺͕௕͍ͱཧղ͢Δͷ͕೉͘͠ͳΔ
    • ͻͲ͍εΫϦϓτͩͱ͢΂͕ͯϝΠϯؔ਺
    • ॲཧͷ಺༰ຖʹؔ਺ͱͯ͠நग़͢Δ
    33

    View Slide

  34. ม਺ͷείʔϓ
    • είʔϓɿม਺͕ར༻Ͱ͖Δڑ཭
    • είʔϓ͸୹͘ɺͦͯ͠୹͘
    • άϩʔόϧม਺͸ϩʔΧϧม਺ʹஔ͖׵͑Δ
    • ॲཧΛ௨ͯ͡ར༻͢Δม਺͸Πϯελϯεม਺
    ʹ͢Δ
    34

    View Slide

  35. ؔ਺ͷҾ਺
    • ػցֶशͷΞϧΰϦζϜ͸ύϥϝλ͕ଟ͍ˠؔ਺ͷ
    Ҿ਺͕ଟ͘ͳΓ͕ͪ
    • Ҿ਺ͷ਺͕ଟ͍ͱॲཧ͕௥͍ͮΒ͍
    • ݮΒͤͳ͍͔ݕ౼͢Δ
    • Ҿ਺ΛΦϒδΣΫτͱͯ͠·ͱΊΔ
    • Կ౓΋ར༻͞ΕΔˠΠϯελϯεม਺ʹ
    35

    View Slide

  36. ॲཧΛҰՕॴʹ·ͱΊΔ
    • ಉ͡Α͏ͳॲཧΛ͍ͯ͠ΔՕॴΛҰͭʹ·ͱΊ
    Δ
    • ྫɿσʔλͷม׵͸τϨʔχϯάͰ΋ςετͰ
    ΋ར༻͢Δ
    36

    View Slide

  37. ਂ͍ωετΛආ͚Δ
    • for ϧʔϓɺif จ͕ωετ͍ͯ͠ΔͱྲྀΕ͕͔ͭ
    Έʹ͍͘
    • ੵۃతʹؔ਺Λநग़͢Δ
    • ΤσΟλͷػೳΛ࢖͏ͱγϣʔτΧοτͰαΫο
    ͱͰ͖Δ
    37

    View Slide

  38. ࣗಈςετ
    • ςετɿೖྗʹରͯ͠ظ଴ͨ͠Ξ΢τϓοτʹͳͬ
    ͍ͯΔ͔Λݕূ͢Δίʔυ
    • ࠷௿ݶɿલॲཧɺEnd-to-Endͷςετ͸ॻ͘
    38

    View Slide

  39. ςετͷԸܙ
    • ςετ=࢓༷
    • υΩϡϝϯτΛॻ͍ͯ΋࣌ؒͱͱ΋ʹᴥᴪ͕ੜ·
    ΕΔ
    • CIͰಈ࡞͢Δςετʹ͸ᴥᴪ͕ͳ͍
    • ॻ͍͓͍ͯͯ͋͛ΔͱɺҾ͖ܧ͙ਓͷཧղΛॿ͚Δ
    • ςετ͕ແ͍ίʔυΛमਖ਼͢Δͷ͸ڪා
    39

    View Slide

  40. ͦͷ΄͔
    • linter ಋೖ
    • logger ಋೖ
    • CIಋೖ
    • υΩϡϝϯτʢSphinxʣ
    • ࣮ݧͨ͠಺༰ͳͲΛ·ͱΊΔ
    • etc …
    40

    View Slide

  41. ػցֶशϓϩδΣΫτͷ੬͞
    • ࣮ݧεΫϦϓτ͕ಈ͔ͳ͍
    • ࣮ݧεΫϦϓτ͕ཧղͰ͖ͳ͍
    • ࣮ݧͨ͠ਓ͔Βίʔυ͕཭ΕΔ
    41

    View Slide

  42. ͜Ε·ͰͷରࡦͰίʔυ͸େ
    ෼ؤ݈ʹͳͬͨ
    ͔͠͠ɺ·ͩ໰୊͕͋Δɻɻɻ
    ୭͕੔ཧ͢Δͷ͔ɻɻɻ
    42

    View Slide

  43. ࣮ݧͨ͠ਓ͔Βίʔυ͕཭ΕΔ
    • ঢ়گɿ࣮ݧϨϙδτϦΛผͷਓ͕੔ཧʢ΋͘͠
    ͸ॻ͖௚͠ʣ
    • ѱӨڹɿ࠶࣮ݧ͠ʹ͘͘ͳΔɺকདྷͷमਖ਼ίε
    τ
    • ϓϩδΣΫτ͸ཚ๫ͳ෼ۀʹΑͬͯ੬͘ͳΔ
    • ίʔυ͕ؤ݈Ͱ΋ϓϩδΣΫτͱͯ͠͸੬͍
    43

    View Slide

  44. ొ৔ϝϯόʔ
    ίʔυ੔ཧΛ̎ͭͷλΠϓͷϝϯόʔ
    Ͱ͓͜ͳ͏ʢ஫ɿݫີʹ෼͔Ε͍ͯΔ
    Θ͚Ͱ͸͋Γ·ͤΜʣ
    ϦαʔνϟدΓɿ࣮ݧͨ͠ਓɻػցֶ
    शΛར༻ͨ͠ϞσϦϯά͕ಘҙ
    ʢιϑτ΢ΤΞʣΤϯδχΞدΓɿι
    ϑτ΢ΣΞ։ൃ͕ಘҙ
    44

    View Slide

  45. Ξϯνύλʔϯɿίʔυ੔ཧ
    ʹ͓͚Δ෼ۀ
    ୳ࡧతͳ࣮ݧ ίʔυ੔ཧ
    Ϟσϧͷ
    σϓϩΠ
    Ϧαʔνϟ͕ݕূ࣮ͨ͠ݧ಺༰ΛΤϯδχΞ͕੔ཧ
    • ϥΠϒϥϦԽɺςετ௥ՃɺϦϑΝΫλϦϯά
    etc
    45

    View Slide

  46. ྑ͘ͳ͍࡞ۀϑϩʔɿίʔυ
    ੔ཧ
    ʮΤϯδχΞ͕ػցֶशϓϩδΣΫτ༻ͷϨϙδτϦʹ
    ௚઀ίϛοτʯɺ΋͘͠͸ʮผϨϙδτϦΛ࡞ͬͯ࡞ۀʯ
    46
    CIઃఆɺϦϑΝΫλϦϯά
    ςετɺLinterɺLogger ͷಋೖ
    ػցֶशϓϩδΣΫτ
    ϨϙδτϦ
    ίϛοτ௥Ճ

    View Slide

  47. ෼ۀͷ݁Ռ
    • Ϧαʔνϟɿॻ͖௚͞Ε͍ͯΔͷͰ੔ཧ͞Εͨ
    ίʔυ͕ཧղͰ͖ͳ͍
    • ΤϯδχΞɿॲཧͷཧղ͕଍Γͳ͍ɻ࣮ݧͷৄ
    ࡉΛཧղͰ͖͍ͯͳ͍
    • ϦαʔνϟɺΤϯδχΞͱ΋ʹϓϩδΣΫτʹର
    ͢Δཧղɺ੹೚͕த్൒୺
    47

    View Slide

  48. ঢ়گ෼ੳɿ෼ۀʹΑΔ໰୊
    48
    ࣮ݧ
    ςετɺlintɺϦϑΝΫλ
    ϦϯάɺϥΠϒϥϦԽɺ
    CI
    όονεΫϦϓτɺ
    CDɺαʔϏε
    Ϟσϧվྑ kubernetes
    ECS
    ίʔυ੔ཧ
    σϓϩΠ
    ৽͍࣮͠ݧ݁Ռ͕ͰΔͨͼʹ
    ϦαʔνϟˠΤϯδχΞͷόέπ
    ϦϨʔ͕ൃੜ

    View Slide

  49. ঢ়گ෼ੳɿ෼ۀʹΑΔ໰୊
    49
    ࣮ݧ
    ςετɺlintɺϦϑΝΫλ
    ϦϯάɺϥΠϒϥϦԽɺ
    CI
    όονεΫϦϓτɺ
    CDɺαʔϏε
    Ϟσϧվྑ kubernetes
    ECS
    ίʔυ੔ཧ
    σϓϩΠ
    ίʔυ੔ཧޙͷεΫϦϓτΛϦαʔ
    νϟ͕ཧղͰ͖ͳ͍
    㱺վྑαΠΫϧΛճͤͳ͍ɻɻɻ

    View Slide

  50. ݱঢ়Λ੔ཧ
    • ࣮ݧͨ͠ਓʢϦαʔνϟʣͷखͷಧ͔ͳ͍ॴͰίʔυΛ
    मਖ਼͢ΔͱϓϩδΣΫτ͸ࢮ͵
    • ر๬ɿ࣮ݧͰར༻ͨ͠ίʔυʢσʔλม׵ॲཧͳͲʣʴ
    ϞσϧΛͦͷ··σϓϩΠ͍ͨ͠
    㱺͔͠͠ɺා͍ͷͰίʔυ͸੔ཧʢՄಡੑ΍ؤ݈ੑ޲
    ্ʣ͔ͯ͠ΒϓϩμΫγϣϯʹಋೖ͍ͨ͠
    50

    View Slide

  51. Ξϓϩʔν
    ࣮ݧͨ͠ਓ͕ࣗ਎Ͱίʔυ੔ཧ͢ΔʢBeyond
    the Boundaryʣ
    51

    View Slide

  52. ίʔυ੔ཧΛϖΞͰऔΓ૊Ή
    • ίʔυ੔ཧ࣌ʹϦαʔνϟɺΤϯδχΞͷϖΞΛ࡞Δ
    • ஌ݟΛڞ༗ͭͭ͠ϖΞͰίʔυ੔ཧ
    • ίετ͸ߴ͘ͳ͍ɿ͍͍ͤͥ਺ඦʙઍߦͷεΫϦϓτ
    52
    ୳ࡧతͳ࣮ݧ ίʔυ੔ཧ
    Ϟσϧͷ
    σϓϩΠ

    View Slide

  53. ࡞ۀϑϩʔɿίʔυ੔ཧ
    ʮΤϯδχΞ͕Pull RequestΛ࡞Γʯɺʮ࣮ݧͨ͠
    ਓ͕ϨϏϡʔ͢Δʯ
    53
    CIઃఆɺϦϑΝΫλϦϯά
    ςετɺLinterɺLogger ͷಋೖ
    ϨϏϡʔˍϚʔδ
    ϓϧϦΫΤετͷ࡞੒

    View Slide

  54. ஫ҙ఺
    • ϓϩδΣΫτͷඒ͠͞ͱ࣮ݧ͠΍͢͞ͷόϥϯεΛऔΔ
    • ࣮ݧͨ͠ਓ͕࣮ݧΛܧଓͰ͖ΔൣғͰमਖ਼
    • ࣮ݧͨ͠ਓ͕ཧղͰ͖ͳ͍मਖ਼͸Ϛʔδ͠ͳ͍
    • ϓϧϦΫΤετͷཻ౓͸খ͘͞
    • େ͖͍ͱཧղ͠ʹ͍͘
    • ίϛοτΛ੔ܗͯ͠Θ͔Γ΍͘͢ʢιϑτ΢ΣΞΤϯδχΞ
    ͷ࿹ͷݟͤͲ͜Ζʣ
    54

    View Slide

  55. ԸܙɿϖΞͰίʔυ੔ཧ
    • ϨϏϡʔͨ͠ίʔυͳͷͰ࣮ݧΛγʔϜϨεʹ࠶։Ͱ
    ͖Δʢਫ਼౓޲্΁ʣ
    • ͢΂ͯͷϝϯόʹΤϯδχΞϦϯάͷجૅతͳ஌ݟΛ
    ڞ༗Ͱ͖ΔʢςετɺCIɺLinterɺϦϑΝΫλϦϯά
    etc ʣ
    → ࣗ਎Ͱίʔυ੔ཧͭͭ͠αΠΫϧΛճ͢
    → কདྷͷमਖ਼ίετݮ
    55

    View Slide

  56. ·ͱΊ
    ػցֶशϓϩδΣΫτ͕੬͘ͳͬͯΏ͘ݪҼͱऔ
    Γ૊ΜͰ͍Δࢪࡦʹ͍ͭͯղઆͨ͠
    • ࣮ݧεΫϦϓτ͕ಈ͔ͳ͍
    • ࣮ݧεΫϦϓτ͕ཧղͰ͖ͳ͍
    • ࣮ݧͨ͠ਓ͔Βίʔυ͕཭Ε
    56

    View Slide

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

    View Slide