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

コードレビュー なんてしてられるかッ!!

コードレビュー なんてしてられるかッ!!

俺の話を聞け!! LT大会#7
結論markuplintというHTMLのLinter作った

Yusuke Hirao

January 19, 2018
Tweet

More Decks by Yusuke Hirao

Other Decks in Technology

Transcript

  1. 2018 Yusuke Hirao, CC BY-ND.
    ίʔυϨϏϡʔ
    ͳΜͯͯ͠ΒΕΔ͔ο
    Զͷ࿩Λฉ͚-5େձ
    גࣜձࣾσΟʔθϩ
    ϑϩϯτΤϯυΤϯδχΞ
    ฏඌ༏య

    View Slide

  2. 2018 Yusuke Hirao, CC BY-ND.
    ݁࿦͔Β

    View Slide

  3. 2018 Yusuke Hirao, CC BY-ND.
    )5.-ͷ-JOUFS࡞ͬͨ

    View Slide

  4. 2018 Yusuke Hirao, CC BY-ND.
    ࣗݾ঺հ
    ฏඌ༏యʢͻΒ͓Ώ͏ͯΜʣ
    גࣜձࣾσΟʔθϩ
    ϑϩϯτΤϯυΤϯδχΞ
    ίϛϡχςΟ׆ಈ
    ෱ԬϑϩϯτΤϯυ༑ͷձ'VLVPLB'SPOUFOE'SPHT
    ෱ԬϚʔΫΞοϓษڧձ
    CBTFS$.4Ϣʔβʔձ
    Yusuke Hirao
    @cloud10designs

    View Slide

  5. 2018 Yusuke Hirao, CC BY-ND.
    ࣾ಺ͷ
    ίʔσΟϯάΨΠυϥΠϯΛ
    ॻ͍ͨΜͰ͢

    View Slide

  6. 2018 Yusuke Hirao, CC BY-ND.

    View Slide

  7. 2018 Yusuke Hirao, CC BY-ND.
    ίʔσΟϯάελΠϧ͔Β
    ΞΫηγϒϧϚʔΫΞοϓɺ
    $44ઃܭɺ+4ͷςΫχοΫ͔Β
    ίʔσΟϯάࢥ૝ͳͲ
    ΤϞ͍ײ͡Ͱςϯί੝Γ

    View Slide

  8. 2018 Yusuke Hirao, CC BY-ND.
    Ͱɺ
    ࡞͔ͬͨΒʹ͸ɺ
    ͪΌΜͱΨΠυϥΠϯʹ
    Ԋ͍ͬͯΔ͔֬ೝ͍ͨ͠

    View Slide

  9. 2018 Yusuke Hirao, CC BY-ND.
    Α͠ɺ

    View Slide

  10. 2018 Yusuke Hirao, CC BY-ND.
    ίʔυϨϏϡʔ͠Α͏

    View Slide

  11. 2018 Yusuke Hirao, CC BY-ND.
    ͜͜͸+4ͷτϦΨʔʹͳΔ
    ͷͰBλάΑΓCVUUPOλάͭ
    ͔͍·͠ΐ͏

    View Slide

  12. 2018 Yusuke Hirao, CC BY-ND.
    ͜͜͸+4ͷτϦΨʔʹͳΔ
    ͷͰBλάΑΓCVUUPOλάͭ
    ͔͍·͠ΐ͏͜͜͸VMMJͰՕ
    ৚ॻ͖ʹ͠·͠ΐ͏

    View Slide

  13. 2018 Yusuke Hirao, CC BY-ND.
    ͜͜͸+4ͷτϦΨʔʹͳΔ
    ͷͰBλάΑΓCVUUPOλάͭ
    ͔͍·͠ΐ͏͜͜͸VMMJͰՕ
    ৚ॻ͖ʹ͠·͠ΐ͏OBWʹ͸
    BSJBMBCFMೖΕ·͠ΐ͏͔

    View Slide

  14. 2018 Yusuke Hirao, CC BY-ND.
    ͜͜͸+4ͷτϦΨʔʹͳΔ
    ͷͰBλάΑΓCVUUPOλάͭ
    ͔͍·͠ΐ͏͜͜͸VMMJͰՕ
    ৚ॻ͖ʹ͠·͠ΐ͏OBWʹ͸
    BSJBMBCFMೖΕ·͠ΐ͏͔ϥ
    ϯυϚʔΫϩʔϧ͚ͭ·͠ΐ
    ͏

    View Slide

  15. 2018 Yusuke Hirao, CC BY-ND.
    ͜͜͸+4ͷτϦΨʔʹͳΔ
    ͷͰBλάΑΓCVUUPOλάͭ
    ͔͍·͠ΐ͏͜͜͸VMMJͰՕ
    ৚ॻ͖ʹ͠·͠ΐ͏OBWʹ͸
    BSJBMBCFMೖΕ·͠ΐ͏͔ϥ
    ϯυϚʔΫϩʔϧ͚ͭ·͠ΐ
    ͏͓΍ɺด͡λά͕ൈ͚͍ͯ
    ·͢

    View Slide

  16. 2018 Yusuke Hirao, CC BY-ND.
    ͜͜͸+4ͷτϦΨʔʹͳΔ
    ͷͰBλάΑΓCVUUPOλάͭ
    ͔͍·͠ΐ͏͜͜͸VMMJͰՕ
    ৚ॻ͖ʹ͠·͠ΐ͏OBWʹ͸
    BSJBMBCFMೖΕ·͠ΐ͏͔ϥ
    ϯυϚʔΫϩʔϧ͚ͭ·͠ΐ
    ͏͓΍ɺด͡λά͕ൈ͚͍ͯ
    ·͓͢΍ɺBMU͕ͳ͍Ͱ͢Ͷ

    View Slide

  17. 2018 Yusuke Hirao, CC BY-ND.
    ͜͜͸+4ͷτϦΨʔʹͳΔ
    ͷͰBλάΑΓCVUUPOλάͭ
    ͔͍·͠ΐ͏͜͜͸VMMJͰՕ
    ৚ॻ͖ʹ͠·͠ΐ͏OBWʹ͸
    BSJBMBCFMೖΕ·͠ΐ͏͔ϥ
    ϯυϚʔΫϩʔϧ͚ͭ·͠ΐ
    ͏͓΍ɺด͡λά͕ൈ͚͍ͯ
    ·͓͢΍ɺBMU͕ͳ͍Ͱ͢Ͷ
    ͓΍ɺෆਖ਼ͳωετؔ܎ʹͳͬ
    ͯ·͢

    View Slide

  18. 2018 Yusuke Hirao, CC BY-ND.
    ͜͜͸+4ͷτϦΨʔʹͳΔ
    ͷͰBλάΑΓCVUUPOλάͭ
    ͔͍·͠ΐ͏͜͜͸VMMJͰՕ
    ৚ॻ͖ʹ͠·͠ΐ͏OBWʹ͸
    BSJBMBCFMೖΕ·͠ΐ͏͔ϥ
    ϯυϚʔΫϩʔϧ͚ͭ·͠ΐ
    ͏͓΍ɺด͡λά͕ൈ͚͍ͯ
    ·͓͢΍ɺBMU͕ͳ͍Ͱ͢Ͷ
    ͓΍ɺෆਖ਼ͳωετؔ܎ʹͳͬ
    ͯ·͋͢ɺλά໊͸খจࣈʹ
    ͍ͯͩ͘͠͞Ͷ

    View Slide

  19. 2018 Yusuke Hirao, CC BY-ND.
    ͜͜͸+4ͷτϦΨʔʹͳΔ
    ͷͰBλάΑΓCVUUPOλάͭ
    ͔͍·͠ΐ͏͜͜͸VMMJͰՕ
    ৚ॻ͖ʹ͠·͠ΐ͏OBWʹ͸
    BSJBMBCFMೖΕ·͠ΐ͏͔ϥ
    ϯυϚʔΫϩʔϧ͚ͭ·͠ΐ
    ͏͓΍ɺด͡λά͕ൈ͚͍ͯ
    ·͓͢΍ɺBMU͕ͳ͍Ͱ͢Ͷ
    ͓΍ɺෆਖ਼ͳωετؔ܎ʹͳͬ
    ͯ·͋͢ɺλά໊͸খจࣈʹ
    ͍ͯͩ͘͠͞ͶͱΓ͋͑ͣΠ
    ϯσϯτ͚ͭͯ΋Β͑·͔͢ʁ

    View Slide

  20. 2018 Yusuke Hirao, CC BY-ND.
    ͜͜͸+4ͷτϦΨʔʹͳΔ
    ͷͰBλάΑΓCVUUPOλάͭ
    ͔͍·͠ΐ͏͜͜͸VMMJͰՕ
    ৚ॻ͖ʹ͠·͠ΐ͏OBWʹ͸
    BSJBMBCFMೖΕ·͠ΐ͏͔ϥ
    ϯυϚʔΫϩʔϧ͚ͭ·͠ΐ
    ͏͓΍ɺด͡λά͕ൈ͚͍ͯ
    ·͓͢΍ɺBMU͕ͳ͍Ͱ͢Ͷ
    ͓΍ɺෆਖ਼ͳωετؔ܎ʹͳͬ
    ͯ·͋͢ɺλά໊͸খจࣈʹ
    ͍ͯͩ͘͠͞ͶͱΓ͋͑ͣΠ
    ϯσϯτ͚ͭͯ΋Β͑·͢
    ͔ʁΨΠυϥΠϯಡΈ·͠
    ͨʁ

    View Slide

  21. 2018 Yusuke Hirao, CC BY-ND.
    ͜͜͸+4ͷτϦΨʔʹͳΔ
    ͷͰBλάΑΓCVUUPOλάͭ
    ͔͍·͠ΐ͏͜͜͸VMMJͰՕ
    ৚ॻ͖ʹ͠·͠ΐ͏OBWʹ͸
    BSJBMBCFMೖΕ·͠ΐ͏͔ϥ
    ϯυϚʔΫϩʔϧ͚ͭ·͠ΐ
    ͏͓΍ɺด͡λά͕ൈ͚͍ͯ
    ·͓͢΍ɺBMU͕ͳ͍Ͱ͢Ͷ
    ͓΍ɺෆਖ਼ͳωετؔ܎ʹͳͬ
    ͯ·͋͢ɺλά໊͸খจࣈʹ
    ͍ͯͩ͘͠͞ͶͱΓ͋͑ͣΠ
    ϯσϯτ͚ͭͯ΋Β͑·͢
    ͔ʁΨΠυϥΠϯಡΈ·͠
    ͨʁ
    ͔͠΋
    ਺ઍϖʔδ

    View Slide

  22. 2018 Yusuke Hirao, CC BY-ND.
    ίʔυϨϏϡʔ͠Α͏

    View Slide

  23. 2018 Yusuke Hirao, CC BY-ND.
    ίʔυϨϏϡʔ͠Α͏
    ͯ͠ΒΕΔ͔ο

    View Slide

  24. 2018 Yusuke Hirao, CC BY-ND.
    ϨϏϡʔ͸ࠔ೉ΛۃΊͨ
    ϨϏϡʔͷຊདྷͷ໨త
    ίϯςΩετͱηϚϯςΟοΫͷ֬ೝ
    ΞΫηγϏϦςΟνΣοΫ
    ࣮ࡍʹؾΛऔΒΕͯ͠·ͬͨ͜ͱ
    )5.-7BMJEBUJPO
    Ϋϥε໋໊نଇͳͲίʔσΟϯάΨΠυϥΠϯ४ڌͷ֬ೝ
    ඼্࣭໰୊ͳ͍͚ͲϝϯςͷͨΊͷΨΠυϥΠϯϧʔϧ͕
    Πϯσϯτ͸ϨϏϡʔͷಡΈ΍͢͞ͷͨΊͳͷʹͦΕΛࢦఠ
    ෛͷϧʔϓ

    View Slide

  25. 2018 Yusuke Hirao, CC BY-ND.
    -JOUFSΛಋೖ͠Α͏✅

    View Slide

  26. 2018 Yusuke Hirao, CC BY-ND.
    -JOUFSͷԸܙ
    +BWB4DSJQU͸&4-JOUͰɺ$44͸4UZMFMJOUͰಋೖࡁΈ
    ࣍ͷ͜ͱ͸͍͍ͩͨࣗಈԽͰ͖Δ
    γϯλοΫενΣοΫ
    ίʔυελΠϧͷνΣοΫ
    ໋໊نଇͷνΣοΫ
    ΞϯνύλʔϯͷνΣοΫ
    ࢦఠ͢Δͷ͸ػցͳͷͰਓ֨൱ఆʹड͚औΒΕʹ͍͘
    ʮΤϥʔ͕ग़ͳ͍Α͏ʹίʔσΟϯά͍ͯͩ͘͠͞ʯͰย෇͘

    View Slide

  27. 2018 Yusuke Hirao, CC BY-ND.
    )5.-)JOUΛ࢖ͬͯΈ͕ͨʜ
    جຊͷνΣοΫ͸΋ͪΖΜαϙʔτ
    ϓϥάΠϯ"1*Λ͍࣋ͬͯͨͷͰ࠷ॳ͸ͦΕͰؤுͬͨ
    ͔͠͠΍͍ͬͯ͘͏ͪʹ໰୊͕ϙϩϙϩ
    "1*͸͋ͬͯ΋HVMQ΍ΤσΟλ͕ϓϥάΠϯʹରԠͯ͠ͳ͍
    &4-JOUΈ͍ͨʹϑΥϧμ͝ͱͷϧʔϧઃఆ͕Ͱ͖ͳ͍
    47(ͳͲͷ֎དྷཁૉʹରԠ͍ͯ͠ͳ͍
    ։ൃࢭ·ͬͯΔ͠

    View Slide

  28. 2018 Yusuke Hirao, CC BY-ND.
    ͭʔΘ͚Ͱ

    View Slide

  29. 2018 Yusuke Hirao, CC BY-ND.
    )5.--JOUFS࡞Γ·ͨ͠

    View Slide

  30. 2018 Yusuke Hirao, CC BY-ND.
    NBSLVQMJOU
    /PEFKTͰಈ͘)5.--JOUFS ͦͷ͏ͪϒϥ΢β൛΋

    ϓϥάΠϯ"1*Λ͍࣋ͬͯΔ
    ਖ਼֬ͳϩέʔγϣϯΛ΋ͭ"45%0.ϥΠΫͳπϦʔߏ଄͕ѻ͑Δ
    ཁૉ͝ͱʹϧʔϧΛ࠶ઃఆͰ͖Δ
    ର৅ͷཁૉ͸ηϨΫλͰߜΓ͜ΊΔ
    ϑΥϧμ͝ͱʹϧʔϧΛઃఆͰ͖Δ
    ϧʔϧઃఆ͸ܧঝ͕Ͱ͖Δ
    )5.--JWJOHTUBOEBSEͷίϯςϯπϞσϧ৘ใΛ΋ͭ
    ֎དྷཁૉɾΧελϜཁૉɾ7JFXϥΠϒϥϦͷରԠΛݟਾ͑ͨઃܭ
    Τϥʔ͕೔ຊޠ ϩέʔϧͰ൑ఆ

    ·੍ͩ࡞த͚ͩͲ

    View Slide

  31. 2018 Yusuke Hirao, CC BY-ND.
    NBSLVQMJOU
    ͦͦ͜͜͸ಈ͖·͢

    View Slide

  32. 2018 Yusuke Hirao, CC BY-ND.
    NBSLVQMJOU
    74$PEF֦ுެ։ࡁΈ

    View Slide

  33. 2018 Yusuke Hirao, CC BY-ND.
    NBSLVQMJOU
    ॗʑϧʔϧͱ௥Ճத

    View Slide

  34. 2018 Yusuke Hirao, CC BY-ND.
    NBSLVQMJOU
    ͕Μ͹ͬͯυΩϡϝϯτॻ͍ͯ·͢

    View Slide

  35. 2018 Yusuke Hirao, CC BY-ND.
    Ͱɺ࡞ͬͯΈͯͷײ૝

    View Slide

  36. 2018 Yusuke Hirao, CC BY-ND.
    ௒ָ͍͠

    View Slide

  37. 2018 Yusuke Hirao, CC BY-ND.
    ͳΜ΍͜Ε։ൃ௒ָ͍͠΍Μ
    ඞཁʹۦΒΕͯ࡞Γ࢝Ίͨʹͯ͠͸༧૝֎ʹָ͍͠
    ΰϦΰϦ)5.-ΛѻͬͯΔͷʹϑϩϯτΤϯυ͡Όͳ͍ෆࢥٞײ
    ͍ΖΜͳֶͼ͕͋ͬͨ
    ͱʹ͔͘)5.--JWJOHTUBOEBSEಡΈ·ͬͨ͘
    )5.-ͷߏจ΍ύʔεʹ΍ͨΒৄ͘͠ͳͬͨ
    $-*ͷԞਂ͞
    ඪ४ೖྗग़ྗͱ͔ϑϩϯτΤϯυͰ͸ະ஌
    ࠶ؼॲཧͱ͔΋ਅ໘໨ʹऔΓ૊ΜͩͷॳΊ͔ͯ΋͠Εͳ͍
    ϒϥ΢βޓ׵Λؾʹ͠ͳ͍ίʔσΟϯάͷշײ
    ͋ͱɺۙʑ਺ઍϖʔδͷ໾ʹཱͯΔ͜ͱ͕
    ͸͖ͬΓ͍ͯ͠Δ఺͸೩͑Δಈػʹͳ͍ͬͯͨ

    View Slide

  38. 2018 Yusuke Hirao, CC BY-ND.
    ໨తͱָཱ͍͕྆͠Ͱ͖ͦ͏Ͱ͋Δ
    ϨϏϡʔͷຊདྷͷ໨త
    ίϯςΩετͱηϚϯςΟοΫͷ֬ೝ
    ΞΫηγϏϦςΟνΣοΫ
    ࣮ࡍʹؾΛऔΒΕͯ͠·ͬͨ͜ͱ
    )5.-7BMJEBUJPO
    Ϋϥε໋໊نଇͳͲίʔσΟϯάΨΠυϥΠϯ४ڌͷ֬ೝ
    ඼্࣭໰୊ͳ͍͚ͲϝϯςͷͨΊͷΨΠυϥΠϯϧʔϧ͕
    Πϯσϯτ͸ϨϏϡʔͷಡΈ΍͢͞ʹͨΊͳͷʹͦΕΛࢦఠ
    ෛͷϧʔϓ

    View Slide

  39. 2018 Yusuke Hirao, CC BY-ND.
    ໨తͱָཱ͍͕྆͠Ͱ͖ͦ͏Ͱ͋Δ
    ϨϏϡʔͷຊདྷͷ໨త
    ίϯςΩετͱηϚϯςΟοΫͷ֬ೝ
    ΞΫηγϏϦςΟνΣοΫ
    ࣮ࡍʹؾΛऔΒΕͯ͠·ͬͨ͜ͱ
    )5.-7BMJEBUJPO
    Ϋϥε໋໊نଇͳͲίʔσΟϯάΨΠυϥΠϯ४ڌͷ֬ೝ
    ඼্࣭໰୊ͳ͍͚ͲϝϯςͷͨΊͷΨΠυϥΠϯϧʔϧ͕
    Πϯσϯτ͸ϨϏϡʔͷಡΈ΍͢͞ʹͨΊͳͷʹͦΕΛࢦఠ
    ෛͷϧʔϓ
    ໨త

    View Slide

  40. 2018 Yusuke Hirao, CC BY-ND.
    ໨తͱָཱ͍͕྆͠Ͱ͖ͦ͏Ͱ͋Δ
    ϨϏϡʔͷຊདྷͷ໨త
    ίϯςΩετͱηϚϯςΟοΫͷ֬ೝ
    ΞΫηγϏϦςΟνΣοΫ
    ࣮ࡍʹؾΛऔΒΕͯ͠·ͬͨ͜ͱ
    )5.-7BMJEBUJPO
    Ϋϥε໋໊نଇͳͲίʔσΟϯάΨΠυϥΠϯ४ڌͷ֬ೝ
    ඼্࣭໰୊ͳ͍͚ͲϝϯςͷͨΊͷΨΠυϥΠϯϧʔϧ͕
    Πϯσϯτ͸ϨϏϡʔͷಡΈ΍͢͞ʹͨΊͳͷʹͦΕΛࢦఠ
    ෛͷϧʔϓ
    ໨త
    ָ͍͠

    View Slide

  41. 2018 Yusuke Hirao, CC BY-ND.
    ͋͞ɺ

    View Slide

  42. 2018 Yusuke Hirao, CC BY-ND.
    ίʔυϨϏϡʔ͠Α͏

    View Slide

  43. 2018 Yusuke Hirao, CC BY-ND.
    5IBOLZPV

    View Slide

  44. 2018 Yusuke Hirao, CC BY-ND.
    NBSLVQMJOU
    IUUQTHJUIVCDPN:VTVLF)JSBPNBSLVQMJOU
    NBSLVQMJOUQMVHJOUFYUMJOU
    IUUQTXXXOQNKTDPNQBDLBHFNBSLVQMJOUQMVHJOUFYUMJOU
    NBSLVQMJOUGPS74$PEF
    IUUQTNBSLFUQMBDFWJTVBMTUVEJPDPNJUFNT
    JUFN/BNFZVTVLFIJSBPWTDPEFNBSLVQMJOU

    View Slide