Tama.rb #25 年忘れLT会の発表資料です。
RubyͰPrettierΛͬͯΈͨTama.rb #25 ΕLTձ2020.12.27@fuqda90
View Slide
About me fuqda (;ͩ͘)• 201711݄ʙݱࡏීஈܙൺणपลͰRubyΛॻ͍ͯΛ৯ͯ·͢ɻ Twitter : ˏfuqda90
͜͜࠷ۙɺRubyͰPrettierΛ͏ͷ͕Ұ෦ͷؒͰΓ্͕͍ͬͯΔͦ͏
ͱ͍͏Θ͚Ͱʂ࣮ࡍʹࢼͭͭ͠ɺͲΜͳײ͡ͳͷ͔ͷڞ༗ΛΏΔ͘͠Α͏͔ͱࢥ͍·͢
ࠓճ͓͢Δ͜ͱ • Prettierͦͷͷͷ• ओͳઃఆपΓͷ• ܰ͘৮ͬͨॴײతͳ
ࠓճ͓͠ͳ͍͜ͱ • ࣮ӡ༻తͳ(ӡ༻தͷαʔϏεʹద༻ͯ͠ͳ͍ͷͰ)• RubyCopͱͷൺֱతͳಥͬࠐΜͩ
࣍ɾͦͦPrettierͬͯʁɾRubyͰPrettierΛ͏ํ๏ɾͬͯΈͨॴײ
࣍▶︎ ͦͦPrettierͬͯʁɾRubyͰPrettierΛ͏ํ๏ɾͬͯΈͨॴײ
Prettier• Node.jsͰಈ࡞͢ΔίʔυϑΥʔϚολʔ• Rubyք۾ͩͱRuboCopతͳΞϨ• ֤छIDEͰ֦ுػೳ͔Βར༻Մ• 2020/12/11 ʹruby plugin v1.0͕ϦϦʔε
࣍ɾͦͦPrettierͬͯʁ▶︎ RubyͰPrettierΛ͏ํ๏ɾͬͯΈͨॴײ
gem ‘prettier’ ΛೖΕΔAuto correct ίϚϯυɿbundle exec rbprettier --write ‘**/*.rb’ ઃఆͷมߋํ๏ɿ.prettierrc ʹఆٛΛՃ ※ ͦͷଞ npm / yarnͰ @prettier/plugin-ruby ͷϓϥάΠϯͰରԠՄೳ
⚠ҙRubyɿ2.5~Nodeɿ8.3~※2020࣌ϨΨγʔؾຯͳϓϩδΣΫτͩͱ͑ͳ͍ͷͰҙ
.prettierrc ͷઃఆྫ1) มల։ͷͳ͍߹ͷγϯάϧΫΥʔτ{"rubySingleQuote": true}-str = "จࣈྻ"+str = 'จࣈྻ'
.prettierrc ͷઃఆྫ2) จࣈྻɾγϯϘϧྻϦςϥϧͷਪ{"rubyArrayLiteral": true}-beatles = ["john", "paul", "george", "ringo"]+beatles = %w[john paul george ringo]-nirvana = [:kurt, :kris, :dave]+nirvana = %i[kurt kris dave]
.prettierrc ͷઃఆྫ3) ϋογϡϩέοτͷඇਪ{"rubyHashLabel": true}-{ :’radio_name' => 'ϋογϡϩέοτେ͖' }+{ ‘radio_name’: 'ϋογϡϩέοτେ͖' }
ͦͷଞͷઃఆެࣜΛࢀর
࣮ԋͯ͠ΈΔ
࣍ɾͦͦPrettierͬͯʁɾRubyͰPrettierΛ͏ํ๏▶︎ ͬͯΈͨॴײ
ྑͦ͞͏ͳͱ͜Ζ• RuboCopΑΓ(ؾ࣋ͪ΄Μͷগ͠)ͦ͏• Prettier͕ೖ͍ͬͯΕɺผ్gemΛೖΕͳͯ͑͘Δͷศར✨
ؾʹͳͬͨͱ͜Ζʙͦͷ1ʙ• ↓Auto correctͨ͠ࡍʹίϯιʔϧʹ࣮ߦ࣌ؒͷΈग़ͯɺԿͷϧʔϧʹҾֻ͔ͬͬͯमਖ਼͞Εͨͷ͔ग़ͯ͜ͳ͍ͪΐͬͱؾʹͳͬͨ…$ bundle exec rbprettier --write 'prettier.rb'prettier.rb 370ms• JS༻ͷPrettierΛRubyʹస༻ͨ͠ͷͳͷͰͨΓલ͚ͩͲRubyʹ͚ͨϧʔϧ͕গͳ͍ʁ(RuboCop΄Ͳϧʔϧ͕ॆ࣮ͯ͠ͳ͍)
ؾʹͳͬͨͱ͜Ζʙͦͷ2ʙ• ઃఆΦϓγϣϯΛௐ͍ͨͱ͖ʹPrettier for Ruby ͷϖʔδͱPrettier ࣗମͷϖʔδΛߦͬͨΓདྷͨΓ͢Δͷ͕໘ →Prettierࣗମͷ͜ͱެࣜΛݟͯͶʂͬͯ֎෦ϖʔδΛͨΒ͍ճ͢ͷmʓngʓidײ͋Δ
ॴײ·ͱΊ• ݱ࣌ͩͱRuboCop͔ΒΓ͑Λݕ౼ग़དྷΔ΄ͲʮίϨ͍͍͍͢͝ʂʯͱ͍͏ܾఆଧతͳͷͳ͔ͬͨҹ…• ղੳ͕ମײతʹͪΐͬͱ͚͔ͩͬͨͷͰɺϧʔϧॾʑ͕ॆ࣮͖ͯͨ͠ΒҰͭͷબࢶͱͯ͠ΞϦ͔ʁ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠