Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RubyでPrettierを使ってみた
Search
fuqda
December 27, 2020
Programming
0
360
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.9k
RSpecによるOpen API自動テスト
fuqda
3
1.1k
OSSへの プルリクエスト作成の手引き
fuqda
1
330
Rails Girls Tokyo 13th Sponsor LT by STORES
fuqda
0
210
黒歴史リポジトリを使ったリファクタリング勉強法のススメ
fuqda
1
1.1k
OSS初心者がつまづきながらOSSマナーを学んでいく話
fuqda
4
3.3k
Ruby2.7の新機能で簡易版Rubyインタプリタを実装してみる
fuqda
0
610
カンファレンスで技術的お土産を 増やすために出来ることを考えた
fuqda
2
550
Other Decks in Programming
See All in Programming
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.4k
GISエンジニアから見たLINKSデータ
nokonoko1203
0
180
Vibe codingでおすすめの言語と開発手法
uyuki234
0
110
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
400
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.3k
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
280
AIエージェントの設計で注意するべきポイント6選
har1101
5
2.2k
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
5
710
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
280
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
470
Cell-Based Architecture
larchanjo
0
140
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
190
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
410
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
We Have a Design System, Now What?
morganepeng
54
7.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
90
Crafting Experiences
bethany
0
22
Building Adaptive Systems
keathley
44
2.9k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
60
37k
Abbi's Birthday
coloredviolet
0
3.7k
Site-Speed That Sticks
csswizardry
13
1k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
210
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
580
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͔ΒΓ͑Λ ݕ౼ग़དྷΔ΄ͲʮίϨ͍͍͍͢͝ʂʯͱ͍͏ ܾఆଧతͳͷͳ͔ͬͨҹ… • ղੳ͕ମײతʹͪΐͬͱ͚͔ͩͬͨͷͰɺ ϧʔϧॾʑ͕ॆ࣮͖ͯͨ͠Β Ұͭͷબࢶͱͯ͠ΞϦ͔ʁ
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠