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

Encouraging of automation for building better apps

Encouraging of automation for building better apps

アプリ開発の効率化は、よいアプリを作るためには必要不可欠なものです。スマートフォンアプリ開発全盛の今日、世界には自動化をサポートする数多くのサービスが存在します。このセッションでは、アプリ品質を高めるための開発の効率化における考え方と、明日からできる改善についてお話しします。

このスライドは、2015/06/23に「ニフティクラウドmobile backend アプリ開発セミナー」にて発表しました。
http://ncmb.connpass.com/event/16024/

Yuki Fujisaki

June 23, 2015
Tweet

More Decks by Yuki Fujisaki

Other Decks in Technology

Transcript

  1. ΑΓΑ͍ΞϓϦΛ࡞ΔͨΊͷ

    ։ൃޮ཰Խͷ͢͢Ί
    Yuki Fujisaki

    Co-founder & CEO
    DeployGate Inc.

    View full-size slide

  2. @tnj / Yuki Fujisaki
    DeployGate Inc. Founder & CEO

    View full-size slide

  3. ג
    ϛΫγΟ೥ೖࣾ
    ˣ
    NJYJϞόΠϧ
    ˣ
    ͨΜΆΆάϧʔϓ
    ˣ
    "OESPJEެࣜΫϥΠΞϯτ
    ։ൃΛޮ཰Խʂ

    View full-size slide

  4. 2010೥ = Android 2.2
    mixiॳΫϥΠΞϯτΞϓϦ

    View full-size slide

  5. ։ൃऀ
    ೲظ
    × 1
    <ɹ3ϲ݄

    View full-size slide

  6. /(^o^)\ ナンテコッタイ

    View full-size slide

  7. ʮ͍͍ΞϓϦʯΛ࡞Γ͍ͨ
    ★ ★ ★ ★ ★

    View full-size slide

  8. 1ඵ΋ແବʹͤͣʹ
    ΞϓϦΛ࡞Δ࣌ؒͱͯ͠
    ࢖͍͍ͨ

    View full-size slide

  9. ͜͏͍͏ͷਏ͍
    ʮ৽͍͠όʔδϣϯͰ͖ͨΑʯ

    ʮ͋ɺ͜ͷ୺຤ʹΠϯετʔϧͯ͠ʂʯ
    ໿෼ճ
    ෆ۩߹ى͖͔ͨΒ୺຤͓࣋ͪ͠·ͨ͠ʔ

    ˠϩάͷճऩ
    ໿෼ճ
    طʹվमࡁΈͷෆ۩߹Λใࠂ͞ΕΔ

    ˠώΞϦϯάʴΞοϓσʔτ
    ໿෼ճ
    ʮͳΜ͔ڧ੍ऴྃͨ͠ʂʯใࠂରԠ ໿෼ճ
    ࢼͯ͠΋Β͏ਓΛ୳ͯ͠࿈Ε͖ͯͯɺ

    Πϯετʔϧ͓ͯ͠౉͢͠Δ
    ໿෼ճ
    ͦΕͧΕͷίϛϡχέʔγϣϯ଴ͪ࣌ؒɺε
    Πονϯάίετ
    ໿ʙ෼ճ
    http://alpha.mixi.co.jp/entry/2013/11649/

    View full-size slide

  10. ࠓ೔ͷ࿩
    ͍͍ΞϓϦΛ࡞ΔͨΊͷࣗಈԽʹ͍ͭͯ
    %FQMPZ(BUF

    ΋͋ΔΑ

    View full-size slide

  11. ͍͍ΞϓϦΛ࡞ΔͨΊͷࣗಈԽʹ͍ͭͯ
    • ԿނࣗಈԽ͢Δͷ͔
    • ࣮ફͯ͠ΈΑ͏
    • ಘΒΕΔ΋ͷ
    • Ұาઌ΁

    View full-size slide

  12. ͳͥɺࣗಈԽ͢Δͷ͔ʁ

    View full-size slide

  13. • ։ൃ࡞ۀ͕ޮ཰Խͯ͠ΞϓϦ։ൃ͕଎͘ͳΔ
    • ແବ͕ͳ͘ͳָ͕ͬͯͰ͖Δ
    • ࢒ۀ͕ݮΒͤΔ͔΋͠Εͳ͍ʂʂʂ

    View full-size slide

  14. “͍͍ΞϓϦΛ࡞Δ͜ͱʹूத͢ΔͨΊ”

    View full-size slide

  15. ਓؒͷҙࢤ͸ऑ͍

    View full-size slide

  16. • ࠓ౓ͦ͜ςετυϦϒϯͳ։ൃ͢Δͧʂʂʂ
    • ࣄނΛͳͨ͘͢Ίʹखॱॻ͔ͬ͠Γ࡞Δͧʂ
    • υΩϡϝϯτ͔ͬ͠Γॻͧ͘ʂʂʂ

    View full-size slide

  17. ਓؒɺ
    ർΕͨΒ৸Δ͠ɺ
    զຫऑ͘ͳΔ͠ɺ
    ͙͢ఘΊΔ΋ͷɻ

    View full-size slide

  18. ໌೔ͷே͸ૣى͖ͯ͠ϥϯχϯά͢Δͧʂʂʂ
    ͍͍ͩͨೋ౓৸

    View full-size slide

  19. ؾ߹͍ͱࠜੑʹཔΒͳ͍
    ࢓૊ΈͰղܾ

    View full-size slide

  20. ඞͣى͖ΕΔ
    ࢓૊ΈΛ࡞Δ
    https://twitter.com/kairoshi/status/522546865510707200

    View full-size slide

  21. ؀ڥ͸ࣗવͱਓΛಈ͔͢
    Կ΋ͳ͍ˠཱͭ Πε͕͋Δˠ࠲Γ͍ͨ
    http://pictogram-free.com/highresolution/l_001.png
    http://www.monotaro.com/p/4050/3854/

    View full-size slide

  22. ਓΛ௚઀ม͑Α͏ͱͯ͠΋೉͍͠
    ͔͠͠
    ؀ڥ͕มΘΕ͹ਓͷߦಈ͸มΘΔ

    View full-size slide

  23. ʻʗલఏʼ

    View full-size slide

  24. “͍͍ΞϓϦΛ࡞Δ͜ͱʹूத͢ΔͨΊ”

    View full-size slide

  25. ͳͥɺࣗಈԽ͢Δͷ͔ʁ
    จԽΛ૑Δ

    View full-size slide

  26. • ίʔυΛίϛοτͨ͠ΒࣗಈͰςετ͞ΕΔ
    • ςετ͕௨Βͳ͍ͱϦϦʔεͰ͖ͳ͍
    • ͪΌΜͱಈ࡞֬ೝ͠ͱ͜͏ɺςετ͠Α͏
    ࣄނ͕ݮΔɺ඼࣭͕ҡ࣋Ͱ͖Δ

    View full-size slide

  27. “Jenkinsͷ࠷େͷಋೖޮՌ͸

    ʮνʔϜͷϝϯόͷҙࣝมԽʯ”
    https://speakerdeck.com/uasano/jenkinsgatimunimotarasitekuretakoto

    View full-size slide

  28. ͳͥɺࣗಈԽ͢Δͷ͔ʁ
    ҉໧஌Λ๷͙

    View full-size slide

  29. ϦϦʔεͷલʹ͜ͷઃఆϑΝΠϧΛฤू͢ΔͷΛ
    ๨Εͣʹʂ͋ͱରԠ͢Δͬͪ͜ͷαʔόͷઃఆ
    ΋มߋ͢Δ͜ͱɻͦͷ্Ͱ͜ͷεΫϦϓτΛ౿
    Έ୆αʔόͷ্Ͱ࣮ߦͯ̍̌͠෼͙Β͍଴ͭʜ
    ΈΜͳେ޷͖ൿ఻ͷλϨ
    ઈର๨ΕΔ

    View full-size slide

  30. Կ͔ͱϦεΫ͕ߴ·Δ
    • ؅ཧ͍ͯ͠Δਓ͕ډͳ͘ͳΔͱࢭ·Δ
    • ৽͍͠ਓ͕ೖͬͯ͘Δͷ͕೉͘͠ͳΔ
    • Ͱ͖Δਓ͕ݶΒΕΔͷͰ଴͕ͪ࣌ؒ૿͑Δ

    View full-size slide

  31. ҉໧஌͕ͳ͘ͳΓ

    ϦεΫ͕ݮͬͯ
    εέʔϧ͢Δ
    ͢΂͕ͯ

    هड़͞Ε͍ͯΔ

    ࠶ݱՄೳ
    λεΫ͕

    Ұਓʹूத͠ͳ͍
    εέʔϧ͢Δ
    ಈ࡞͕

    ه࿥͞ΕΔ
    ௥੻͠΍͍͢

    View full-size slide

  32. ͳͥɺࣗಈԽ͢Δͷ͔ʁ
    ؾܰʹࢼͤΔΑ͏ʹ͢Δ

    View full-size slide

  33. ίʔυΛॻ͍ͯίϛοτ͢Δ͚ͩͰ
    มߋΛ୭Ͱ΋ݟΕΔ

    View full-size slide

  34. ͘͢͝େࣄ

    View full-size slide

  35. 99%
    ਓ͕࡞ͬͯ ਓ͕࢖͏

    View full-size slide

  36. ҰൃͰͰ͖ͨΓ͠ͳ͍
    ࠷ߴͷ

    ΞϓϦ
    ࢓༷ॻ.xlsx

    View full-size slide

  37. Ұ൪ḿΔ
    ࡞Δਓ ࢖͏ਓ
    ࡞ͬͨͦͷ৔Ͱݟͤͯҙݟ΋Βͬͯ௚͢

    View full-size slide

  38. ݐઃతͳ

    ϑΟʔυόοΫ Ϟνϕʔγϣϯ
    ͨ·ʹ͸
    υϠͬͨΓ͍ͨ͠
    =

    View full-size slide

  39. Web։ൃ͕΋ͨΒͨ͠

    Πϊϕʔγϣϯ
    ։ൃ

    ࡞Δ
    Ϣʔβʔ

    ݟΔ
    ϩάˍ

    ϑΟʔυόοΫ
    σϓϩΠ
    ࠷୹$USM4ͰճΔ

    View full-size slide

  40. Ͱ΋ΞϓϦ։ൃͩͱ
    ։ൃ

    ࡞Δ
    Ϗϧυˍ

    ΞʔΧΠϒ
    Ͳ͔͜ʹஔ͘

    PSϝʔϧૹ৴
    ࣮ػʹೖΕΔ
    ͓ख఻͍
    Πϯετʔϧ
    Ϣʔβʔ

    ݟΔ
    ϩάˍ

    ϑΟʔυόοΫ
    ϩάཉ͍͠

    ୺຤आΓΔ
    ϩά΋͏

    ྲྀΕͯΔ

    View full-size slide

  41. ࡞ͬͯΈͨʂ
    ೖΕͯʂ
    ɾɾɾ

    View full-size slide

  42. ਓϝʔϧૹͬͯΠϯετʔϧਓ

    View full-size slide

  43. 8FCΈ͍ͨʹ͍ͨ͠ʜ

    View full-size slide

  44. Ξοϓϩʔυͯ͠

    View full-size slide

  45. https://dply.me/e18bnz
    URLΛڭ͑Δ͚ͩ

    View full-size slide

  46. ී௨ͷਓͰ΋࢖͑ΔΠϯετʔϧΨΠυ
    Ξοϓσʔτ΋ϓογϡ
    SDKೖΕΕ͹ϩά΋ૹΕΔ

    View full-size slide

  47. ΞϓϦ։ൃͰ΋
    ։ൃ

    ࡞Δ
    Ϣʔβʔ

    ݟΔ
    ϩάˍ

    ϑΟʔυόοΫ
    σϓϩΠ
    EHBUFQVTI"QQBQL

    View full-size slide

  48. ࣗಈԽͷ໨త
    ؾ߹ͱࠜੑʹཔΒͣ
    ։ൃʹूதͯ͠Δ͚ͩͰ
    ͍͍ΞϓϦ͕࡞ΕΔ
    จԽΛ૑Δ

    View full-size slide

  49. ࣮ફͯ͠ΈΑ͏

    View full-size slide

  50. 1. શମͷݟ͑ΔԽ
    2. ϏϧυࣗಈԽ
    3. ςετࣗಈԽ
    4. σϓϩΠࣗಈԽ
    ։ൃ

    ࡞Δ
    Ϣʔβʔ

    ݟΔ
    ϩάˍ

    ϑΟʔυόοΫ
    উखʹճΔ

    Α͏ʹ͢Δ

    View full-size slide

  51. 1. શମͷݟ͑ΔԽ

    View full-size slide

  52. Կ͕ى͖͍ͯΔͷ͔ݟ͑ͳ͍
    ˣ
    ෆ҆

    View full-size slide

  53. ͢΂ͯͷ৘ใΛ

    ྲྀ͢৔ॴΛ࡞Δ
    IRC
    Կ͕ى͖͍ͯΔ͔

    ΈΜͳ͕ݟ͑Δ

    View full-size slide

  54. ݟ͑ΔͷͰ
    • ։ൃऀͰͳ͍ϝϯόʔ΋
    ͋ͬɾɾɾ ࡯͠
    ঢ়گ͕ۭؾͰཧղͰ͖ΔΑ͏ʹͳΔ

    View full-size slide

  55. ݟ͑ΔͷͰ
    • ͙͢ؾ͕͍ͭͯରԠͰ͖Δ
    • ίʔυϨϏϡʔґཔ্͕͕͖ͬͯͨ
    • ৽͍͠όʔδϣϯ͕Ͱ͖ͨ
    • ΞϓϦ͕Ϋϥογϡͨ͠
    • ͦͷ৔Ͱ΍ΓͱΓ͕ਐΉ

    View full-size slide

  56. ݟ͑ΔͷͰ
    • ςετ͕స͚ͨΒ͙͢௚͢ؾʹ
    ࡽ͞ΕͯΔײ͡

    View full-size slide

  57. ͳΜͰ΋
    ͭͳ͕Δ
    Slack
    ͓͢͢Ί

    View full-size slide

  58. CI for iOS & Android
    ଞྗ ࣗྗ

    View full-size slide

  59. ࢖ͬͯΔͳΒଞྗʹཔΖ͏

    View full-size slide

  60. circle.yml ͪΐͬͱॻ͚ͩ͘
    test:
    override:
    - ./gradlew assembleDebug
    - cp -r project-name/build/outputs $CIRCLE_ARTIFACTS
    Androidͷ৔߹

    View full-size slide

  61. PR/ίϛοτ͝ͱʹࣗಈϏϧυ
    $ git push origin branch
    Ϗϧυ͕௨͍ͬͯΔ͜ͱ͕֬ೝͰ͖Δ

    Ϗϧυ͞ΕͨΞϓϦ΋੒Ռ෺ͱͯ͠࢒Δ

    View full-size slide

  62. ࣗಈϏϧυ؀ڥ

    20෼Ͱ׬੒

    View full-size slide

  63. Ϗϧυαʔό༻ҙ
    ҡ࣋؅ཧɺϝϯςφϯε
    ৽OS/࿈ܞαʔϏεରԠ
    ػೳ֦ு
    ແྉʙ
    ༗ྉͰεέʔϧ

    ߴ଎Խʂ

    View full-size slide

  64. No GitHub,
    No Circle CI,
    No Developer Life

    View full-size slide

  65. • αʔόϚγϯͷ༻ҙඞཁ
    • ̍ճ൒೔͙Βֻ͍͚ͯ

    ηοτΞοϓ͑͢͞Ε͹

    ׂͱಈ͘
    • ϓϥάΠϯॆ࣮ɺ

    ߴੑೳCron
    • ෳ਺୆ʹεέʔϧ΋

    View full-size slide

  66. 2ςετॻ͍ͯΔʁ

    View full-size slide

  67. ·ͣࣗಈςετ؀ڥΛ࡞Ζ͏

    View full-size slide

  68. ·ͣ͸த਎͸ۭͰ΋͍͍ͷͰɺ
    ςετ͕ࣦഊͨ͠Β

    Ϗϧυ͕స͚ΔΑ͏ʹ͢Δ
    స͚ͨΒϚʔδ͠ͳ͍Λϧʔϧʹ͢Δ

    View full-size slide

  69. Կ͔໰୊͕ى͖ͨʂࣄނͬͨʂ
    ͱ͍͏ͱ͜Ζ͔Βɺ

    ෆ۩߹Λ࠶ݱ͢ΔςετΛॻ͘ͱ
    ಉ͡໰୊͸ೋ౓ͱى͖ͳ͍

    View full-size slide

  70. ͜Ε΋ circle.yml ͪΐͬͱॻ͘
    test:
    pre:
    - emulator -avd circleci-android22 -no-audio -no-window:
    background: true
    parallel: true
    - circle-android wait-for-boot
    override:
    - ./gradlew connectedAndroidTest
    - cp -r my-project/build/outputs/androidTest-results/* $CIRCLE_TEST_REPORTS
    - cp -r project-name/build/outputs $CIRCLE_ARTIFACTS
    Androidͷ৔߹

    View full-size slide

  71. ੺͸ةݥɺࠓ͙͢௚͞ͳ͍ͱ
    ྘͸େৎ෉ʂ
    ͱ͍͏࢓૊ΈͱจԽΛ࡞ͬͯ͠·͑͹ɺ

    View full-size slide

  72. GitHub ্Ͱ΋҆શͳ͜ͱ͕Ұ໨ྎવ
    खݩͰ࣮ߦΛ๨Εͯ͠·ͬͨΓɺ
    ؾ͔ͮͣʹϚʔδͯ͠͠·͏͜ͱ΋ͳ͍

    View full-size slide

  73. ؀ڥ͸ࣗવͱਓΛಈ͔͢
    ੺ʹͳʹ͔·͍ͣ ྘ʹେৎ෉

    View full-size slide

  74. ϏϧυεΫϦϓτʹ
    buildscript {
    dependencies {
    classpath 'com.deploygate:gradle:0.6.2'
    }
    }
    apply plugin: 'deploygate'
    circle.ymlʹ
    deployment:
    deploygate:
    branch: /.+/
    commands:
    - ./gradlew uploadDeployGate

    View full-size slide

  75. circle.ymlʹ
    dependencies:
    pre:
    - gem install shenzhen
    deployment:
    deploygate:
    branch: /.+/
    commands:
    - ./ipa distribute:deploygate -a … -u …

    View full-size slide

  76. ίϛοτ͢Δ͚ͩͰखݩʹ
    $ git push origin branch
    Կ΋͠ͳͯ͘΋ɺ୭Ͱ΋ߋ৽͕֬ೝͰ͖Δ

    View full-size slide

  77. 10෼ͰηοτΞοϓ׬ྃ

    View full-size slide

  78. ಘΒΕΔ΋ͷ

    View full-size slide

  79. λΠϜϥΠϯͷ
    ҰຊԽ
    • ୭͕Կ͍ͯ͠Δ͔෼͔Δ
    • ໰୊ʹ͙͢ؾ͚ͮΔɺ

    ͦͷ৔ͰղܾͰ͖Δ
    • ։ൃऀҎ֎ͷਓ΋

    ίϛϡχέʔγϣϯ

    औΓ΍͘͢ͳΔ

    View full-size slide

  80. $ git push origin branch
    ςετͱ

    σϓϩΠࣗಈԽ
    • ίʔυॻ͍ͯ

    ίϛοτ͢Δ͚ͩ

    ຊ࣭ͷ։ൃʹूத
    • ҙࣝͤͣͱ΋඼࣭Λ

    ҡ࣋Ͱ͖Δ
    • ͱʹ͔͘࡞ͬͯɺ

    ݟͯɺ௚͕͢ؾܰʹ

    View full-size slide

  81. Webͱಉ͡αΠΫϧͰ։ൃ
    ։ൃ

    ࡞Δ
    Ϣʔβʔ

    ݟΔ
    ϩάˍ

    ϑΟʔυόοΫ
    σϓϩΠ
    HJUQVTI

    View full-size slide

  82. ͍͍ΞϓϦ͔͠࡞Εͳ͍

    View full-size slide

  83. ࣗಈԽ͢Δ্Ͱͷߟ͑ํ

    View full-size slide

  84. ਓͷίετ͸ߴ͍

    ਓͷ࣌ؒΛकΖ͏

    View full-size slide

  85. 3ճ܁Γฦͨ͜͠ͱ͸ࣗಈԽ͢Δ

    View full-size slide

  86. 1ਓͳΒঘߋ͜Μͳ͜ͱ࣌ؒ࢖ͬͯΒΕͳ͍
    ʮ৽͍͠όʔδϣϯͰ͖ͨΑʯ

    ʮ͋ɺ͜ͷ୺຤ʹΠϯετʔϧͯ͠ʂʯ
    ໿෼ճ
    ෆ۩߹ى͖͔ͨΒ୺຤͓࣋ͪ͠·ͨ͠ʔ

    ˠϩάͷճऩ
    ໿෼ճ
    طʹվमࡁΈͷෆ۩߹Λใࠂ͞ΕΔ

    ˠώΞϦϯάʴΞοϓσʔτ
    ໿෼ճ
    ʮͳΜ͔ڧ੍ऴྃͨ͠ʂʯใࠂରԠ ໿෼ճ
    ࢼͯ͠΋Β͏ਓΛ୳ͯ͠࿈Ε͖ͯͯɺ

    Πϯετʔϧ͓ͯ͠౉͢͠Δ
    ໿෼ճ
    ͦΕͧΕͷίϛϡχέʔγϣϯ଴ͪ࣌ؒɺε
    Πονϯάίετ
    ໿ʙ෼ճ
    http://alpha.mixi.co.jp/entry/2013/11649/

    View full-size slide

  87. Α͋͘Δٞ࿦

    View full-size slide

  88. ࣗࣾ಺Ͱด͡Δ
    vs
    ֎෦αʔϏεΛ׆༻

    View full-size slide

  89. ΋ͪΖΜέʔεʹΑΔ͕
    ֎෦αʔϏεΛ࢖Θͳ͍͜ͱʹΑΔϦεΫ

    Λ๨Εͣʹ

    View full-size slide

  90. ྫ: ࣗಈϏϧυ؀ڥͷߏங
    (JU)VCΛར༻͍ͯ͠Ε͹
    ෼ͰηοτΞοϓɺແྉ

    ϊ΢ϋ΢͕ੈքͰ஝ੵ

    ࣗಈతʹ࠷৽؀ڥ
    ࣗࣾ಺Ͱ࣋ͱ͏ͱ͢Δ৔߹
    Ϗϧυαʔόͷඅ༻

    ઐ೚ͷ୲౰ऀͷ࠾༻

    ߏஙͰ͖Δ·Ͱͷඇޮ཰ͳ࣌ؒ

    View full-size slide

  91. ੲ͸େاۀͰͳ͍ͱ࣋ͯͳ͔ͬͨ࢓૊ΈΛ
    Θ͔ͣ਺໊ͷελʔτΞοϓ͕׆༻ͯ͠
    େاۀͱಉ༷ੈքʹαʔϏεΛల։͍ͯ͠Δ

    View full-size slide

  92. ֎෦αʔϏεΛࠓ೔͔Β׆༻͢Δ͔
    ࣗࣾͰ։ൃอकӡ༻͢Δ͔
    ඇޮ཰ͳঢ়گΛଓ͚Δͱ͍͏બ୒Ͱ͸

    ͜ͷઌੜ͖ͷ͜Εͳ͍

    View full-size slide

  93. ࣗ෼ͨͪͷ։ൃͷຊ࣭ʹूத͠Α͏
    खݩʹ͋ΔϦιʔεͰ
    Ξ΢τϓοτΛ࠷େԽ͢ΔͨΊʹ
    ׆༻Ͱ͖Δ΋ͷ͸ͲΜͲΜ׆༻͢Δ
    ֎෦αʔϏεͷ׆༻͸30*ͷඇৗʹߴ͍౤ࢿ

    View full-size slide

  94. • ৽͍ٕ͠ज़Λੵۃ׆༻ɺ

    ͱ͍͏ϒϥϯσΟϯά
    • ৽͍͠ਓ͕νʔϜʹೖͬͯ

    ͙͢࢓ࣄͰ͖Δ
    • ੈքͷ։ൃऀͱͷ

    ڞ௨ݴޠ - Pull Reqͱ͔
    • ΋ͬͱศརʹ͍ͨ͠ɺ

    վળ͠Α͏ͱ͍͏ϚΠϯυ
    ͓·͚ʹ

    ͍ͭͯ͘Δ΋ͷ

    View full-size slide

  95. ͍͍ΞϓϦΛ࡞ΔͨΊͷࣗಈԽʹ͍ͭͯ
    • ԿނࣗಈԽ͢Δͷ͔
    • ؾ߹ͱࠜੑʹཔΒͣʹ։ൃʹूத͍ͯ͠Δ͚ͩͰ

    ͍͍ΞϓϦ͕૑ΕΔจԽΛ૑Δ
    • ࣮ફͯ͠ΈΑ͏
    • ͢΂ͯΛ̍ΧॴͷλΠϜϥΠϯͰݟ͑ΔΑ͏ʹ͠Α͏
    • GitHub࢖ͬͯΔͳΒ1࣌ؒͰϏϧυ/ςετ/σϓϩΠΛࣗಈԽ
    • ಘΒΕΔ΋ͷ
    • ແବͳ͘ɺWeb։ൃͷΑ͏ͳ଎͞Ͱɺ͍͍ΞϓϦ͔͠࡞Εͳ͍؀ڥ
    • Ұาઌ΁
    • ਓͷίετ͸ߴ͍ɺ܁Γฦ͠Λͳͦ͘͏ɺ֎෦αʔϏεΛ׆༻͠Α͏

    View full-size slide

  96. https://dply.me/start

    View full-size slide