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

業務と両立できる!開発環境の改善!

hicka04
September 13, 2018

 業務と両立できる!開発環境の改善!

普段の業務の中ではどうしてもリリース優先になってしまい、
リファクタリング等の改善活動になかなか時間を割けていない方も多いのではないでしょうか?
弊社では毎月2日間、継続的に開発できるよう開発環境の改善を行っています。
おかげで今ではテストコードを用いたテストができるようになりました。
今回はその中で効果のあった改善施策と、その改善活動をチーム全体で推進するためのポイントについてご紹介します。

hicka04

September 13, 2018
Tweet

More Decks by hicka04

Other Decks in Technology

Transcript

  1. ։ൃ؀ڥͷվળ!
    ۀ຿ͱཱ྆Ͱ͖Δ!
    Զίϯ2018Summer

    ࠤ౻ ޫ @hicka04

    View full-size slide

  2. ࣗݾ঺հ
    ▸ ࠤ౻ ޫ
    ▸ @hicka04
    ▸ χϑςΟϥΠϑελΠϧגࣜձࣾ
    ▸ iOSΞϓϦ (, AndroidΞϓϦ, Πϯϑϥ)
    ▸ iOS͸2೥ɺSwift͸1.5೥
    ▸ ,

    View full-size slide

  3. ΞδΣϯμ
    ▸ վળͨ͠ʮ։ൃ؀ڥʯͷఆٛ
    ▸ վળͨ͠ΞϓϦͷ঺հ
    ▸ ͳͥ։ൃ؀ڥͷվળΛͨ͠ͷ͔
    ▸ վળΛਐΊΔ্ͰͷϙΠϯτ
    ▸ ࣮ࡍʹ΍ͬͨ͜ͱ
    ▸ ۀ຿ͱཱ྆͢Δ্Ͱͷۤ࿑
    ▸ ·ͱΊ

    View full-size slide

  4. վળͨ͠ʮ։ൃ؀ڥʯͷఆٛ

    View full-size slide

  5. վળͨ͠։ൃ؀ڥͷఆٛ
    ▸ i Mac ProͰ… AppCodeͰ…

    View full-size slide

  6. վળͨ͠։ൃ؀ڥͷఆٛ
    ▸ i Mac ProͰ… AppCodeͰ…
    ▸ ࠓճվળͨ͠ͷ͸ɺνʔϜͰ։ൃ͢Δ্Ͱͷ؀ڥ
    ▸ ϦϦʔε·Ͱͷϑϩʔ͸…
    ▸ ϨϏϡʔ͸…
    ▸ ςετ͸…
    ▸ ඞཁͳπʔϧ͸…

    View full-size slide

  7. վળͨ͠ΞϓϦͷ঺հ

    View full-size slide

  8. վળͨ͠ΞϓϦͷ঺հ
    େख·ͱΊͯόΠτ୳͠

    View full-size slide

  9. վળͨ͠ΞϓϦͷ঺հ
    େख·ͱΊͯόΠτ୳͠
    2014 / 10 ॳճϦϦʔε
    ϑϧObj-C
    2016 / 8 Swift΁ͷҠߦΛ։࢝
    2017 / 4 ɹɹJoin!
    / 5 ։ൃ؀ڥվળ ελʔτ!

    View full-size slide

  10. ͳͥ։ൃ؀ڥͷվળΛͨ͠ͷ͔

    View full-size slide

  11. Ϗδωεͷཁٻʹରͯ͠
    ࣭ɾεϐʔυతʹ
    ରԠͰ͖ͳ͘ͳΔͷ͕༧૝͞Ε͔ͨΒ

    View full-size slide

  12. ͳͥ։ൃ؀ڥͷվળΛͨ͠ͷ͔
    ։ൃϝϯόʔ
    2014 / 10 ॳճϦϦʔε
    ϑϧObj-C
    2016 / 8 Swift΁ͷҠߦΛ։࢝ 1ਓ
    2017 / 4 ɹɹJoin! 2ਓ
    / 5 ։ൃ؀ڥվળ ελʔτ! 4ਓҎ্ʹ…?
    ϧʔϧ͕ͳ͍ঢ়ଶͰෳ਺ਓͰͷ։ൃΛ͢Δͱ

    ҙਤ͠ͳ͍มߋ͕ଞͷਓʹ೾ٴͯ͠όά͕૿͑ͨΓ(࣭)

    ࡞ۀͷ଴͕ͪൃੜͯ͠஗͘ͳͬͨΓ(εϐʔυ)

    ͢Δ͜ͱ͕༧૝͞Εͨ

    View full-size slide

  13. Αʔ͠

    ΍ͬͨΔͧʙʙ
    ͳΜͱͳ͘։ൃ؀ڥ͕Πέͯͳ͍

    ͱ͍͏͜ͱ͚ͩΘ͔͍ͬͯΔ@hicka04
    ෳ਺ਓͰͷ։ൃܦݧ͕গͳ͍
    ݱঢ়ͰࠔΓͦ͏ͳ͜ͱ͕Θ͔Βͳ͍

    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. վળΛਐΊΔ্ͰͷϙΠϯτ
    ᶃݱࡏ஍Λ஌Δ͜ͱ
    ▸ ։ൃͷͨΊͷCMMI(CMMI-Dev)
    ▸ ϓϩηεͷ੒ख़౓ΛධՁ͢ΔͨΊͷࢦඪ
    ▸ ೳྗ౓Ϩϕϧ
    Ϩϕϧ ঢ়ଶ ཁ໿
    0 ෆ׬શͳ ࣮ࢪ͞Εͳ͍··ϦϦʔε͞ΕΔɹΧΦε
    1 ࣮ࢪ͞Εͨ ࣮ࢪͯ͠ϦϦʔε͞ΕΔ
    2 ؅ཧ͞Εͨ ϧʔϧʹԊ࣮ͬͯࢪ͠ϦϦʔε͞ΕΔ
    3 ఆٛ͞Εͨ
    ݫີʹϧʔϧʹԊ࣮ͬͯࢪ͠ϦϦʔε
    దٓϧʔϧͷվળ͕Ͱ͖͍ͯΔ

    View full-size slide

  20. վળΛਐΊΔ্ͰͷϙΠϯτ
    ᶃݱࡏ஍Λ஌Δ͜ͱ
    ▸ Ұٳ͞ΜͷվળࢿྉΛࢀߟʹ4߲໨ʹ͍ͭͯݱࡏ஍Λϓϩοτ
    ߲໨
    0
    ΧΦε
    1
    ΍ͬͯΔ
    2
    ϧʔϧ͋Δ
    3
    ݫີ&վળ΋
    όʔδϣϯ
    ؅ཧ
    αʔϏε
    ඼࣭
    ৘ใڞ༗
    υΩϡϝϯτ

    ˛
    ˛
    ˛
    ˛

    View full-size slide

  21. վળΛਐΊΔ্ͰͷϙΠϯτ
    ᶄ໨ඪΛ஌Δ͜ͱ
    ▸ ໨ඪΛ஌Δ͜ͱͰɺ۩ମతͳख๏ΛܾΊΒΕΔ
    ▸ Ͳ͏΍ͬͯ஌Δ͔?
    ▸ ࣾ֎ͷ୭͔ʹڠྗΛڼ͙
    ▸ ษڧձ͔Β৘ใऩू
    ▸ ωοτ͔Β৘ใऩू
    ▸ ຊ͔Β৘ใऩू
    iOSDC Japan 2017
    iOSDC RejectCon
    iOS Test Night
    potatotips
    Twitter
    Qiita
    ཆ੒ಡຊ
    Swift࣮ફೖ໳

    View full-size slide

  22. վળΛਐΊΔ্ͰͷϙΠϯτ
    ᶅఆظతʹৼΓฦΓΛ͢Δ͜ͱ
    ▸ վળͰ͖͍ͯΔײΛײ͡औΔ(ϞνϕUP)
    ▸ ࣍ʹਐΉ΂͖ํ޲ΛఆΊΔ
    ▸ ࠓ΍͍ͬͯΔ͜ͱΑΓਂࠁͳ໰୊͸ͳ͍͔?
    ▸ ΍Δ΂͖͜ͱͷதʹڵຯͷ͋Δ͜ͱ͸ͳ͍͔?

    (ڵຯͷ͋Δ͜ͱͷ΄͏͕ΫΦϦςΟ্͕͕Δ͔Β)

    View full-size slide

  23. վળΛਐΊΔ্ͰͷϙΠϯτ
    ᶃݱࡏ஍Λ஌Δ͜ͱ
    ‣ CMMI-Devͷೳྗ౓ϨϕϧΛ༻͍ͯ
    ᶄ໨ඪΛ஌Δ͜ͱ
    ‣ (ࢲ͸)ษڧձ΍ຊͳͲͰ৘ใऩू
    ‣ ໨ඪͳ͠ʹΞΫγϣϯ͸ܾΊΒΕͳ͍
    ᶅఆظతʹৼΓฦΓΛ͢Δ͜ͱ
    ‣ ϞνϕUP & ࣍ͷΞΫγϣϯܾΊ

    View full-size slide

  24. ࣮ࡍʹ΍͖ͬͯͨ͜ͱ

    View full-size slide

  25. ࣮ࡍʹ΍͖ͬͯͨ͜ͱ
    ߲໨
    0
    ΧΦε
    1
    ΍ͬͯΔ
    2
    ϧʔϧ͋Δ
    3
    ݫີ&վળ΋
    όʔδϣϯ
    ؅ཧ
    ˛
    αʔϏε
    ඼࣭
    ˛
    ৘ใڞ༗ ˛
    υΩϡϝϯτ ˛

    View full-size slide

  26. ࣮ࡍʹ΍͖ͬͯͨ͜ͱ
    2017 / 4 - 2017 / 9
    ߲໨ 2017/4 ՝୊
    όʔδϣϯ
    ؅ཧ
    ‣ Bitbucket
    ‣ OSS͸PodsͰ؅ཧ
    ‣ ϒϥϯνϧʔϧͳ͠
    αʔϏε
    ඼࣭
    ‣ ࣌ʑίʔυϨϏϡʔ
    ‣ खಈͰͷςετ
    ‣ CrashlyticsʹΑΔόάݕ஌
    ‣ ίʔυϨϏϡʔͳ͍
    ‣ ςετίʔυͳ͍

    View full-size slide

  27. ࣮ࡍʹ΍͖ͬͯͨ͜ͱ
    2017 / 4 - 2017 / 9
    ߲໨ ՝୊ ΞΫγϣϯ
    όʔδϣϯ
    ؅ཧ
    ‣ ϒϥϯνϧʔϧͳ͠
    ‣ ϦϦʔεϑϩʔΛ໌จԽ
    ‣ ϒϥϯνӡ༻ͷϧʔϧ΋໌ه
    αʔϏε
    ඼࣭
    ‣ ίʔυϨϏϡʔͳ͍
    ‣ ςετίʔυ΋ͳ͍
    ‣ ίʔυϨϏϡʔͳ͠ͰϦϦʔ
    εͰ͖ͳ͍Α͏੍໿
    ‣ Lintಋೖ
    ‣ ৽نػೳ͔Βςετॻ͘

    View full-size slide

  28. ࣮ࡍʹ΍͖ͬͯͨ͜ͱ
    2017 / 4 - 2017 / 9
    ▸ ϦϦʔεϑϩʔΛܾΊͯ໌จԽ
    ▸ Gitͷϒϥϯνӡ༻
    ▸ ίʔυϨϏϡʔ
    ▸ ΍Δ΂͖ςετ

    View full-size slide

  29. ࣮ࡍʹ΍͖ͬͯͨ͜ͱ
    2017 / 4 - 2017 / 9
    ▸ SwiftLintͷಋೖ
    ▸ Τϥʔɾϫʔχϯά ͕ܭ1,000௒͑
    ▸ εϖʔεͷ༗ແɺෆཁͳηϛίϩϯɺڧ੍Ξϯϥοϓ…ͳͲ

    1ͭ1ͭॱ൪ʹ௚͍ͯͬͨ͠
    ▸ ͢΂ͯखಈͰ௚͕ͨ͠ɺ؆୯ͳϧʔϧ͸

    $ swiftlint autocorrect

    ͰҰൃͩͬͨ͜ͱΛ͋ͱ͋ͱ஌ͬͨɻ

    View full-size slide

  30. ࣮ࡍʹ΍͖ͬͯͨ͜ͱ
    2017 / 4 - 2017 / 9
    ߲໨
    0
    ΧΦε
    1
    ΍ͬͯΔ
    2
    ϧʔϧ͋Δ
    3
    ݫີ&վળ΋
    όʔδϣϯ
    ؅ཧ
    ˛ ●
    αʔϏε
    ඼࣭
    ˛ɹ

    ৘ใڞ༗ ˛ ●
    υΩϡϝϯτ ˛ ●
    ˛


    ←ςετίʔυॻ͚͍ͯͳ͍

    View full-size slide

  31. ࣮ࡍʹ΍͖ͬͯͨ͜ͱ
    2017 / 10 - 2018 / 6
    ߲໨ 2017/10 ՝୊
    αʔϏε
    ඼࣭
    ‣ ඞͣίʔυϨϏϡʔ
    ‣ LintͰίʔσΟϯάελΠϧ
    ౷Ұ
    ‣ खಈͰͷςετ
    ‣ CrashlyticsʹΑΔόάݕ஌
    ‣ ςετίʔυͳ͍
    ‣ ΫϥογϡݪҼಛఆͷ

    ৘ใ͕଍Γͳ͍
    ‣ ΫϥογϡҎ֎ͷόά
    ʹؾ͚ͮͳ͍
    αʔϏε඼࣭ʹ஫ྗ

    View full-size slide

  32. ࣮ࡍʹ΍͖ͬͯͨ͜ͱ
    2017 / 10 - 2018 / 6 αʔϏε඼࣭ʹ஫ྗ
    ߲໨ ՝୊ ΞΫγϣϯ
    αʔϏε
    ඼࣭
    ‣ ςετίʔυͳ͍
    ‣ ΫϥογϡݪҼಛఆͷ

    ৘ใ͕଍Γͳ͍
    ‣ ΫϥογϡҎ֎ͷόάʹ
    ؾ͚ͮͳ͍
    ‣ ςετίʔυΛॻ͚Δ

    ίʔυʹϦϑΝΫλ
    ‣ ςετίʔυΛॻ͘
    ‣ ΫϥογϡҎ֎ͷ৘ใΛ

    CrashlyticsʹૹΔ

    View full-size slide

  33. ࣮ࡍʹ΍͖ͬͯͨ͜ͱ
    2017 / 10 - 2018 / 6 αʔϏε඼࣭ʹ஫ྗ
    ▸ ςετίʔυΛॻ͚Δίʔυʹ
    ▸ iOSDC2017
    ▸ MVPΛษڧͯ͠ಋೖ

    ˠษڧෆ଍ͰͳΜͪΌͬͯMVPʹͳͬͯ͠·͍

    ɹςετίʔυॻ͚ͣ…

    ɹFatViewController → FatPresenter

    View full-size slide

  34. ࣮ࡍʹ΍͖ͬͯͨ͜ͱ
    2017 / 10 - 2018 / 6 αʔϏε඼࣭ʹ஫ྗ
    ▸ ςετίʔυΛॻ͚Δίʔυʹ
    ▸ potatotips(ࢀՃͯ͠ͳ͍͕)
    ▸ VIPERΞʔΩςΫνϟ
    ▸ ୤FatPresenter

    PresenterɿදࣔͷϩδοΫ

    InteractorɿσʔλͷϩδοΫ
    ▸ ͦΕͧΕ͕protocolʹͷΈґଘ͍ͯ͠ΔͷͰςετ͕ॻ͚Δ!!

    View full-size slide

  35. ࣮ࡍʹ΍͖ͬͯͨ͜ͱ
    2017 / 10 - 2018 / 6 αʔϏε඼࣭ʹ஫ྗ
    ▸ ΫϥογϡҎ֎ͷ৘ใΛCrashlyticsʹૹΔ
    ▸ iOSDC2017
    ▸ ΧελϜϩά

    Ͳ͔͜Βىಈͯ͠ͲΜͳը໘ͰͲΜͳΞΫγϣϯΛ͔ͨ͠
    ▸ ඇΫϥογϡͷΤϥʔ

    ݕࡧ͕ͨ͠Ϩεϙϯε500ɺݕࡧ݁Ռ0݅…ͳͲ

    View full-size slide

  36. ࣮ࡍʹ΍͖ͬͯͨ͜ͱ
    2017 / 10 - 2018 / 6
    ߲໨
    0
    ΧΦε
    1
    ΍ͬͯΔ
    2
    ϧʔϧ͋Δ
    3
    ݫີ&վળ΋
    όʔδϣϯ
    ؅ཧ
    ●ɹ˒
    αʔϏε
    ඼࣭
    ● ˒
    ৘ใڞ༗
    ● ˒
    υΩϡϝϯτ
    ●ɹ˒
    ˒
    ● →
    CIͰςετ͕

    ࣗಈతʹ૸ΔΑ͏ʹ͍ͨ͠

    View full-size slide

  37. ۀ຿ͱཱ྆ͬͯ࿩͸Ͳ͍ͬͨ͜…?

    View full-size slide

  38. ۀ຿ͱཱ྆͢Δ্Ͱͷۤ࿑

    View full-size slide

  39. ۀ຿ͱཱ྆͢Δ্Ͱͷۤ࿑
    ࣌ؒΛͱΔͷ͕೉͍͠໰୊
    ▸ ۀ຿վળDay
    ▸ ݄2೔ɺීஈͷۀ຿Λ͢΂ͯޙճ͠ʹͯ͠վળ

    (ͱ͍͏͜ͱʹ͍ͯ͠Δ)
    ▸ ݄2೔͸։ൃϦʔμʔɺϏδωεαΠυͱͷ૬ஊͷ݁Ռ
    ▸ ׂΓࠐΈλεΫ͕ಥવ͖߱ͬͯͨΓ

    େ͖ͳ࢓ࣄ͕௕Ҿ͍ͯվળ׆ಈʹ࣌ؒΛׂ͚ͳ͔ͬͨΓ…
    ະͩʹղܾࡦͳ͠Ͱ͢…

    View full-size slide

  40. ۀ຿ͱཱ྆͢Δ্Ͱͷۤ࿑
    վળ͕όάͷݪҼʹͳΓ͔Ͷͳ͍໰୊
    ▸ ྫ)ΞʔΩςΫνϟͷมߋ
    ▸ طଘίʔυʹςετίʔυ͕ͳ͍ͷͰ

    ਖ਼͘͠มߋͰ͖͔ͨΛݕ஌͢Δํ๏͕ͳ͍
    ▸ ݱঢ়͸ҎԼͰ֬ೝɺෳ਺ਓͰͷ֬ೝ͕େࣄ
    ▸ ৽نʹ௥Ճͨ͠ςετίʔυ
    ▸ ࠩ෼ͷ໨grep
    ▸ ϦϦʔεલͷखಈςετ

    View full-size slide

  41. ·ͱΊ
    2017 / 4 - 2017 / 10 - 2018 / 6
    ߲໨
    0
    ΧΦε
    1
    ΍ͬͯΔ
    2
    ϧʔϧ͋Δ
    3
    ݫີ&վળ΋
    όʔδϣϯ
    ؅ཧ
    ˛ ●ɹ˒
    αʔϏε
    ඼࣭
    ˛ɹ
    ● ˒
    ৘ใڞ༗ ˛ ● ˒
    υΩϡϝϯτ ˛ ●ɹ˒
    ˒
    ● →
    ˛ →
    ண࣮ʹվળ!!

    View full-size slide

  42. ·ͱΊ
    ▸ ෳ਺ਓ։ൃʹͳͬͯ΋

    Ϋϥογϡ͕૿͑ͨΓϦϦʔεස౓͕ݮΔ͜ͱ͸ͳ͔ͬͨ
    ▸ վળΛਐΊΔ্ͰͷϙΠϯτΛԡ͑͞Δ
    ᶃ ݱࡏ஍Λ஌Δ͜ͱ
    ᶄ ໨ඪΛ஌Δ͜ͱ
    ᶅ ఆظతʹৼΓฦΓΛ͢Δ͜ͱ
    ▸ ۀ຿ͱཱ྆͢Δ্Ͱͷۤ࿑͸ͩΜͩΜখ͘͞ͳ͍ͬͯ͘͸ͣ

    (ͱʹ͔͘0→1͕େมɻجૅ͕Ͱ͖ͨঢ়ଶͰͷվળ͸࠷ॳΑΓ͸ָ)
    ▸ पΓͷڠྗ΋ڼ͗ͳ͕Β1า1าਐΊ͍͖ͯ·͠ΐ͏!!

    View full-size slide

  43. Let’s վળ!!

    View full-size slide