Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RubyでPrettierを使ってみた
Search
fuqda
December 27, 2020
Programming
0
270
RubyでPrettierを使ってみた
Tama.rb #25 年忘れLT会の発表資料です。
fuqda
December 27, 2020
Tweet
Share
More Decks by fuqda
See All by fuqda
Composition API時代の Pub/Subパターンでの状態管理
fuqda
4
3k
RSpecによるOpen API自動テスト
fuqda
3
1k
OSSへの プルリクエスト作成の手引き
fuqda
2
310
Rails Girls Tokyo 13th Sponsor LT by STORES
fuqda
0
170
黒歴史リポジトリを使ったリファクタリング勉強法のススメ
fuqda
1
1k
OSS初心者がつまづきながらOSSマナーを学んでいく話
fuqda
4
3k
Ruby2.7の新機能で簡易版Rubyインタプリタを実装してみる
fuqda
0
470
カンファレンスで技術的お土産を 増やすために出来ることを考えた
fuqda
2
470
Other Decks in Programming
See All in Programming
C#/.NETのこれまでのふりかえり
tomokusaba
1
140
現場で役立つモデリング 超入門
masuda220
PRO
10
2.2k
Kubernetes for Data Engineers: Building Scalable, Reliable Data Pipelines
sucitw
1
170
Modern Angular: Renovation for Your Applications
manfredsteyer
PRO
0
130
hotwire_or_react
harunatsujita
6
2.5k
Workflow automationによるインシデント原因調査の自動化
showwin
1
120
2万ページのSSG運用における工夫と注意点 / Vue Fes Japan 2024
chinen
3
1.2k
Honoの来た道とこれから
yusukebe
18
2.9k
Vue.js学習の振り返り
hiro_xre
2
130
CSC305 Lecture 13
javiergs
PRO
0
120
CSC509 Lecture 06
javiergs
PRO
0
140
watsonx.ai Dojo #3 プロンプトエンジニアリング入門
oniak3ibm
PRO
0
480
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
50
4.8k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Designing for humans not robots
tammielis
249
25k
Writing Fast Ruby
sferik
626
60k
Code Review Best Practice
trishagee
64
17k
Practical Orchestrator
shlominoach
186
10k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
41
9.2k
Building Applications with DynamoDB
mza
90
6k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
225
22k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Designing on Purpose - Digital PM Summit 2013
jponch
114
6.9k
Transcript
RubyͰPrettierΛ ͬͯΈͨ Tama.rb #25 ΕLTձ 2020.12.27@fuqda90
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Λ͏ํ๏ ɾͬͯΈͨॴײ
࣍ ɾͦͦ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Λ͏ํ๏ ɾͬͯΈͨॴײ
࣍ ɾͦͦ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͔ΒΓ͑Λ ݕ౼ग़དྷΔ΄ͲʮίϨ͍͍͍͢͝ʂʯͱ͍͏ ܾఆଧతͳͷͳ͔ͬͨҹ… • ղੳ͕ମײతʹͪΐͬͱ͚͔ͩͬͨͷͰɺ ϧʔϧॾʑ͕ॆ࣮͖ͯͨ͠Β Ұͭͷબࢶͱͯ͠ΞϦ͔ʁ
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠