8年の歴史があるプロジェクトにRuboCopを導入した話です。
©2019 Wantedly, Inc.Introduce RuboCopIn 8-year-old projectMay 30, 2019 - Yuta KamezakiMeguro.rb #27
View Slide
©2019 Wantedly, Inc.Yuta Kamezaki @ykamezAbout meTwitter: @ykamez_2Wantedly. Inc. / Engineer2019ೖࣾɻWantedly VisitͷάϩʔενʔϜॴଐੳ͔ΒࢪࡦఏҊɺ࣮(αʔόʔ)·ͰΛ୲ɻ
©2019 Wantedly, Inc.3VCP$PQΛೖΕ͍ͨਓಛʹɺطଘͷϓϩδΣΫτʹೖΕΔέʔεର
©2019 Wantedly, Inc. େมͩͬͨ͜ͱ ͨ͜͠ͱࠓ͢͜ͱ ࡀͷϓϩδΣΫτʹ3VCP$PQΛಋೖ͢Δ·Ͱ
©2019 Wantedly, Inc.w ͲͷϧʔϧΛ࠾༻͢Δ͔w ͲͷΑ͏ʹͬͯΒ͏͔w Ͳ͏͍͏ํͰӡ༻͍͔ͯ͘͠େมͩͬͨ͜ͱ Ұൠతͳ
©2019 Wantedly, Inc.ྺ࢙͕ͯ͘ڊେ ੜ·Εߦ: 166,566େมͩͬͨ͜ͱ 8BOUFEMZͳΒͰͷ
©2019 Wantedly, Inc.w ؒΈΜͳࣗ༝ͳελΠϧͰॻ͍͖ͯͨw طଘίʔυͷमਖ਼͕େมw ؔऀ͕ଟ͍ˠίϯηϯαε͕औΓͮΒ͍w ࠓߋײ ৺ཧతϋʔυϧେมͩͬͨ͜ͱ 8BOUFEMZͳΒͰͷྺ࢙͕ͯ͘ڊେ
©2019 Wantedly, Inc.σϑΥϧτͰΒͤͯΈͨͲͷϧʔϧΛ࠾༻͢Δ͔
©2019 Wantedly, Inc.ͲͷϧʔϧΛ࠾༻͢Δ͔Inspecting 4062 files4062 files inspected, 126547 offenses detectedσϑΥϧτͷϧʔϧͷ߹126,547 offenses
©2019 Wantedly, Inc.σϑΥϧτͷϧʔϧݫͦ͠͏ͲͷϧʔϧΛ࠾༻͢Δ͔ϧʔϧͱݱঢ়ʹେ͖ͳဃ͕͋Δ
©2019 Wantedly, Inc.NFPXDPQͷϧʔϧ͕ྑ͍Β͍͠ͲͷϧʔϧΛ࠾༻͢Δ͔ผνʔϜͰಋೖ͓ͯ͠Γɺධ͕ྑ͔ͬͨ
©2019 Wantedly, Inc. 3VCP$PQͷDPOpHͷHFNhttps://github.com/sider/meowcop ελΠϧͷࢦఠ͠ͳ͍w ϓϩδΣΫτݻ༗ͷϧʔϧΛແޮԽhttps://blog-ja.sideci.com/entry/2016/10/03/171816NFPXDPQͱ→طଘProjectʹಋೖ͍͢͠
©2019 Wantedly, Inc.4062 files inspected, 12080 offenses detecteͲͷϧʔϧΛ࠾༻͢Δ͔ NFPXDPQͷϧʔϧͷ߹
©2019 Wantedly, Inc.4062 files inspected, 12080 offenses detecteͲͷϧʔϧΛ࠾༻͢Δ͔ NFPXDPQͷϧʔϧͷ߹12,080 offenses
©2019 Wantedly, Inc.4062 files inspected, 12080 offenses detecte126,547→12,080ͲͷϧʔϧΛ࠾༻͢Δ͔ NFPXDPQͷϧʔϧͷ߹ݱ࣮తͳဃ
©2019 Wantedly, Inc.ͲͷϧʔϧΛ࠾༻͢Δ͔w ͲͷΑ͏ʹͬͯΒ͏͔w Ͳ͏͍͏ํͰӡ༻͍͔ͯ͘͠େมͩͬͨ͜ͱ✅
©2019 Wantedly, Inc.୭Θͳ͔ͬͨΒҙຯ͕ͳ͍ͲͷΑ͏ʹͬͯΒ͏͔ڧ੍ྗ͕ͳ͍ͷܗ֚Խ͕ͪ͠
©2019 Wantedly, Inc.ͲͷΑ͏ʹͬͯΒ͏͔+
©2019 Wantedly, Inc.1. reviewdog 3VCP$PQͷ݁ՌΛ13ʹίϝϯτͯ͘͠ΕΔIUUQTHJUIVCDPNSFWJFXEPHSFWJFXEPH2. Travis CI $*αʔϏεͰࣗಈνΣοΫͲͷΑ͏ʹͬͯΒ͏͔ˠΏΔΊͷӡ༻ࣗಈԽ $*མͱ͞ͳ͍
©2019 Wantedly, Inc.ͲͷϧʔϧΛ࠾༻͢Δ͔✅ͲͷΑ͏ʹͬͯΒ͏͔w Ͳ͏͍͏ํͰӡ༻͍͔ͯ͘͠େมͩͬͨ͜ͱ✅
©2019 Wantedly, Inc.w طଘͷίʔυͷѻ͍w ϧʔϧऔࣺબͷϓϩηεͲ͏͍͏ํͰӡ༻͍͔ͯ͘͠
©2019 Wantedly, Inc.طଘͷίʔυͷѻ͍Ͳ͏͍͏ํͰӡ༻͍͔ͯ͘͠ϧʔϧΛద༻ͨ͠Βɺطଘͷ$PEFमਖ਼ɻϧʔϧͱ$PEFͷဃΛ͙ɻ
©2019 Wantedly, Inc.ϧʔϧऔࣺબͷϓϩηεͲ͏͍͏ํͰӡ༻͍͔ͯ͘͠JTTVFͰٞˠϧʔϧ֬ఆˠөJTTVFͰΦʔϓϯʹٞ͠ɺೲಘײΛ࣋ͨͤΔɻ
©2019 Wantedly, Inc.ϧʔϧऔࣺબͷϓϩηεͲ͏͍͏ํͰӡ༻͍͔ͯ͘͠
©2019 Wantedly, Inc.JTTVFͰΦʔϓϯʹٞ͠ɺೲಘײΛ࣋ͨͤΔɻϧʔϧऔࣺબͷϓϩηεͲ͏͍͏ํͰӡ༻͍͔ͯ͘͠JTTVFͰٞˠϧʔϧ֬ఆˠө
©2019 Wantedly, Inc.ͲͷϧʔϧΛ࠾༻͢Δ͔✅ͲͷΑ͏ʹͬͯΒ͏͔✅Ͳ͏͍͏ํͰӡ༻͍͔ͯ͘͠FUDେมͩͬͨ͜ͱ✅
©2019 Wantedly, Inc.՝େมͩͬͨ͜ͱͨ͜͠ͱํ๏•ؔऀͷଟ͞•ڊେ͞•8ͷྺ࢙•ΏΔ͍ϧʔϧͰελʔτ•CIͰࣗಈԽ(ڧ੍͠ͳ͍)•Φʔϓϯͳٞ•ӡ༻ํͷ໌֬Խ• ͲͷϧʔϧΛ࠾༻͢Δ͔• ͲͷΑ͏ʹͬͯΒ͏͔• Ͳ͏͍͏ํͰӡ༻͍͔ͯ͘͠ҰൠతͳWantedlyݻ༗ͷ
©2019 Wantedly, Inc.ແࣄ3VCP$PQಋೖӽ͠ͷಋೖ
©2019 Wantedly, Inc.ྑ͍• ϨϏϡʔલʹϛεʹؾ͕͚ͭͨɻ՝• ϧʔϧͷऔࣺબ͕͍͠ɻ• ϧʔϧΛܾΊΔϓϩηε͕ᐆດɻԠ
©2019 Wantedly, Inc. ϧʔϧऔࣺબͷϓϩηεޮԽ• ೲಘײͷ͋ΔϧʔϧΛͲ͏ૉૣܾ͘Ί͍͔ͯ͘ ͲΕ͘Β͍ݫ͍͠ӡ༻ʹ͢Δ͔• CIམͱ͢ͷ͔ ࣾͷϧʔϧڞ௨Խ ϚΠΫϩαʔϏεΔ՝ˠ·ͩ·ͩࢼߦࡨޡத
©2019 Wantedly, Inc. ͷϓϩδΣΫτͰಋೖͰ͖Δ• ઍཬͷಓҰา͔Β ΏΔ࢝͘ΊͯΈΑ͏·ͱΊ
©2019 Wantedly, Inc.Thank you