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
340
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
3.8k
RSpecによるOpen API自動テスト
fuqda
3
1.1k
OSSへの プルリクエスト作成の手引き
fuqda
2
320
Rails Girls Tokyo 13th Sponsor LT by STORES
fuqda
0
200
黒歴史リポジトリを使ったリファクタリング勉強法のススメ
fuqda
1
1.1k
OSS初心者がつまづきながらOSSマナーを学んでいく話
fuqda
4
3.3k
Ruby2.7の新機能で簡易版Rubyインタプリタを実装してみる
fuqda
0
590
カンファレンスで技術的お土産を 増やすために出来ることを考えた
fuqda
2
540
Other Decks in Programming
See All in Programming
Range on Rails ―「多重範囲型」という新たな選択肢が、複雑ロジックを劇的にシンプルにしたワケ
rizap_tech
0
7.7k
CSC509 Lecture 07
javiergs
PRO
0
240
Software Architecture
hschwentner
6
2.3k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
240
Foundation Modelsを実装日本語学習アプリを作ってみた!
hypebeans
1
130
CSC305 Lecture 08
javiergs
PRO
0
280
スキーマ駆動で、Zod OpenAPI Honoによる、API開発するために、Hono Takibiというライブラリを作っている
nakita628
0
320
実践Claude Code:20の失敗から学ぶAIペアプログラミング
takedatakashi
18
8.5k
Six and a half ridiculous things to do with Quarkus
hollycummins
0
210
React Nativeならぬ"Vue Native"が実現するかも?_新世代マルチプラットフォーム開発フレームワークのLynxとLynxのVue.js対応を追ってみよう_Vue Lynx
yut0naga1_fa
2
940
『毎日の移動』を支えるGoバックエンド内製開発
yutautsugi
2
290
Pythonに漸進的に型をつける
nealle
1
120
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
431
66k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
How STYLIGHT went responsive
nonsquared
100
5.8k
Being A Developer After 40
akosma
91
590k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
610
RailsConf 2023
tenderlove
30
1.3k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
The Illustrated Children's Guide to Kubernetes
chrisshort
49
51k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
YesSQL, Process and Tooling at Scale
rocio
173
15k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
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͔ΒΓ͑Λ ݕ౼ग़དྷΔ΄ͲʮίϨ͍͍͍͢͝ʂʯͱ͍͏ ܾఆଧతͳͷͳ͔ͬͨҹ… • ղੳ͕ମײతʹͪΐͬͱ͚͔ͩͬͨͷͰɺ ϧʔϧॾʑ͕ॆ࣮͖ͯͨ͠Β Ұͭͷબࢶͱͯ͠ΞϦ͔ʁ
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠