Slide 1

Slide 1 text

RubyͰPrettierΛ ࢖ͬͯΈͨ Tama.rb #25 ೥๨ΕLTձ 2020.12.27@fuqda90

Slide 2

Slide 2 text

About me fuqda (;ͩ͘) • 2017೥11݄ʙݱࡏ ීஈ͸ܙൺणपลͰ RubyΛॻ͍ͯΛ৯΂ͯ·͢ɻ Twitter : ˏfuqda90

Slide 3

Slide 3 text

͜͜࠷ۙɺ RubyͰPrettierΛ ࢖͏ͷ͕Ұ෦ͷؒͰ ੝Γ্͕͍ͬͯΔͦ͏

Slide 4

Slide 4 text

ͱ͍͏Θ͚Ͱʂ ࣮ࡍʹࢼͭͭ͠ɺ ͲΜͳײ͡ͳͷ͔ͷ ڞ༗ΛΏΔ͘͠Α͏͔ ͱࢥ͍·͢

Slide 5

Slide 5 text

ࠓճ͓࿩͢Δ͜ͱ • Prettierͦͷ΋ͷͷ࿩ • ओͳઃఆपΓͷ࿩ • ܰ͘৮ͬͨॴײతͳ࿩

Slide 6

Slide 6 text

ࠓճ͓࿩͠ͳ͍͜ͱ • ࣮ӡ༻తͳ࿩ (ӡ༻தͷαʔϏεʹద༻ͯ͠ͳ͍ͷͰ) • RubyCopͱͷൺֱతͳಥͬࠐΜͩ࿩

Slide 7

Slide 7 text

໨࣍ ɾͦ΋ͦ΋Prettierͬͯʁ ɾRubyͰPrettierΛ࢖͏ํ๏ ɾ࢖ͬͯΈͨॴײ

Slide 8

Slide 8 text

໨࣍ ▶︎ ͦ΋ͦ΋Prettierͬͯʁ ɾRubyͰPrettierΛ࢖͏ํ๏ ɾ࢖ͬͯΈͨॴײ

Slide 9

Slide 9 text

Prettier • Node.jsͰಈ࡞͢ΔίʔυϑΥʔϚολʔ • Rubyք۾ͩͱRuboCopతͳΞϨ • ֤छIDEͰ֦ுػೳ͔Β΋ར༻Մ • 2020/12/11 ʹruby plugin v1.0͕ϦϦʔε

Slide 10

Slide 10 text

໨࣍ ɾͦ΋ͦ΋Prettierͬͯʁ ɾRubyͰPrettierΛ࢖͏ํ๏ ɾ࢖ͬͯΈͨॴײ

Slide 11

Slide 11 text

໨࣍ ɾͦ΋ͦ΋Prettierͬͯʁ ▶︎ RubyͰPrettierΛ࢖͏ํ๏ ɾ࢖ͬͯΈͨॴײ

Slide 12

Slide 12 text

gem ‘prettier’ ΛೖΕΔ Auto correct ίϚϯυɿ bundle exec rbprettier --write ‘**/*.rb’ ઃఆͷมߋํ๏ɿ .prettierrc ʹఆٛΛ௥Ճ ※ ͦͷଞ npm / yarnͰ΋ @prettier/plugin-ruby ͷ ϓϥάΠϯͰରԠՄೳ

Slide 13

Slide 13 text

⚠஫ҙ Rubyɿ2.5~ Nodeɿ8.3~ ※2020೥࣌఺ ϨΨγʔؾຯͳϓϩδΣΫτ ͩͱ࢖͑ͳ͍ͷͰ஫ҙ

Slide 14

Slide 14 text

.prettierrc ͷઃఆ ྫ1) ม਺ల։ͷͳ͍৔߹ͷγϯάϧΫΥʔτ { "rubySingleQuote": true } -str = "จࣈྻ" +str = 'จࣈྻ'

Slide 15

Slide 15 text

.prettierrc ͷઃఆ ྫ2) จࣈྻɾγϯϘϧ഑ྻϦςϥϧͷਪ঑ { "rubyArrayLiteral": true } -beatles = ["john", "paul", "george", "ringo"] +beatles = %w[john paul george ringo] -nirvana = [:kurt, :kris, :dave] +nirvana = %i[kurt kris dave]

Slide 16

Slide 16 text

.prettierrc ͷઃఆ ྫ3) ϋογϡϩέοτͷඇਪ঑ { "rubyHashLabel": true } -{ :’radio_name' => 'ϋογϡϩέοτେ޷͖' } +{ ‘radio_name’: 'ϋογϡϩέοτେ޷͖' }

Slide 17

Slide 17 text

ͦͷଞͷઃఆ͸ެࣜΛࢀর

Slide 18

Slide 18 text

࣮ԋͯ͠ΈΔ

Slide 19

Slide 19 text

໨࣍ ɾͦ΋ͦ΋Prettierͬͯʁ ɾRubyͰPrettierΛ࢖͏ํ๏ ɾ࢖ͬͯΈͨॴײ

Slide 20

Slide 20 text

໨࣍ ɾͦ΋ͦ΋Prettierͬͯʁ ɾRubyͰPrettierΛ࢖͏ํ๏ ▶︎ ࢖ͬͯΈͨॴײ

Slide 21

Slide 21 text

ྑͦ͞͏ͳͱ͜Ζ • RuboCopΑΓ΋(ؾ࣋ͪ΄Μͷগ͠)଎ͦ͏ • Prettier͕ೖ͍ͬͯΕ͹ɺ ผ్gemΛೖΕͳͯ͘΋࢖͑Δͷ͸ศར✨

Slide 22

Slide 22 text

ؾʹͳͬͨͱ͜Ζʙͦͷ1ʙ • ↓Auto correctͨ͠ࡍʹίϯιʔϧʹ ࣮ߦ࣌ؒͷΈग़ͯɺԿͷϧʔϧʹҾֻ͔ͬͬͯमਖ਼͞Εͨ ͷ͔ग़ͯ͜ͳ͍఺͸ͪΐͬͱؾʹͳͬͨ… $ bundle exec rbprettier --write 'prettier.rb' prettier.rb 370ms • JS༻ͷPrettierΛRubyʹస༻ͨ͠΋ͷͳͷͰ ౰ͨΓલ͚ͩͲRubyʹ޲͚ͨϧʔϧ͕গͳ͍ʁ (RuboCop΄Ͳϧʔϧ͕ॆ࣮ͯ͠ͳ͍)

Slide 23

Slide 23 text

ؾʹͳͬͨͱ͜Ζʙͦͷ2ʙ • ઃఆΦϓγϣϯΛௐ΂͍ͨͱ͖ʹ Prettier for Ruby ͷϖʔδͱ Prettier ࣗମͷϖʔδΛߦͬͨΓདྷͨΓ͢Δ ͷ͕໘౗ →Prettierࣗମͷ͜ͱ͸ެࣜΛݟͯͶʂͬͯ ֎෦ϖʔδΛͨΒ͍ճ͢ͷmʓngʓidײ͋Δ

Slide 24

Slide 24 text

ॴײ·ͱΊ • ݱ࣌఺ͩͱRuboCop͔Β৐Γ׵͑Λ ݕ౼ग़དྷΔ΄ͲʮίϨ͍͍͍͢͝ʂʯͱ͍͏ ܾఆଧతͳ΋ͷ͸ͳ͔ͬͨҹ৅… • ղੳ͕ମײతʹͪΐͬͱ͚ͩ଎͔ͬͨͷͰɺ ϧʔϧ΍ॾʑ͕ॆ࣮͖ͯͨ͠Β Ұͭͷબ୒ࢶͱͯ͠͸ΞϦ͔΋ʁ

Slide 25

Slide 25 text

͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠