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
magic-comment-magic.pdf
Search
Koichi ITO
July 18, 2019
Programming
1
390
magic-comment-magic.pdf
平成.rb #6 (
https://heiseirb.connpass.com/event/138210/
)
Koichi ITO
July 18, 2019
Tweet
Share
More Decks by Koichi ITO
See All by Koichi ITO
Write Code Every Day
koic
1
1.7k
Bliki (ja), and the Cathedral, and the Bazaar
koic
7
2.7k
Welcome to the LLM Club
koic
0
320
RuboCop: Modularity and AST Insights
koic
3
4.8k
Carving the Way to Ruby Engineering
koic
3
1.1k
Beyond the RuboCop Defaults
koic
3
4.7k
Minify Ruby Code
koic
2
2.4k
Permanent Agility
koic
38
9.3k
RuboCop: LSP and Prism
koic
3
5.4k
Other Decks in Programming
See All in Programming
「ちょっと古いから」って避けてた技術書、今だからこそ読もう
mottyzzz
8
5.9k
Go言語の特性を活かした公式MCP SDKの設計
hond0413
1
200
Playwrightはどのようにクロスブラウザをサポートしているのか
yotahada3
7
2.3k
Django Ninja による API 開発効率化とリプレースの実践
kashewnuts
0
1.2k
Things You Thought You Didn’t Need To Care About That Have a Big Impact On Your Job
hollycummins
0
200
Model Pollution
hschwentner
1
190
技術的負債の正体を知って向き合う / Facing Technical Debt
irof
0
120
株式会社 Sun terras カンパニーデック
sunterras
0
250
ソフトウェア設計の実践的な考え方
masuda220
PRO
3
520
CSC509 Lecture 02
javiergs
PRO
0
410
Back to the Future: Let me tell you about the ACP protocol
terhechte
0
130
明日から始めるリファクタリング
ryounasso
0
130
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
890
Git: the NoSQL Database
bkeepers
PRO
431
66k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
610
Automating Front-end Workflow
addyosmani
1371
200k
Statistics for Hackers
jakevdp
799
220k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
850
Docker and Python
trallard
46
3.6k
Transcript
-PT"OHFMFT
-PT"OHFMFT
-PT"OHFMFT ⏰⚡ 5JNFPVU
*GJUEPFTOPUUJNFEPVU
8FE Magic comment magic ,PJDIJ*50&4. JOD 3VCZ$POG 5IF.JMMFOOJVN#JMUNPSF-PT"OHFMFT My
memorial RuboCop’s issue 2018
5IV Magic comment magic ,PJDIJ*50&4. JOD )FJTFJSC 4IJCVZB +BQBO
My memorial RuboCop’s issue 2018 Reiwa edition
!LPJD w *DPNFGSPN5PLZP +BQBO w *`NXPSLJOHJO&4. JOD w 3VCP$PQDPNNJUUFS w
"30SBDMFFOIBODFE BEBQUFSDPNNJUUFS w 3VCZ,BJHJTQFBLFS w 3VCZ,BJHJ-5FS
"TJNJMBSOPUBUJPOT Ӭ &JXB4ZTUFN.BOBHFNFOU *OD ྩ 3FJXB
"TJNJMBSOPUBUJPOT Ӭ &JXB4ZTUFN.BOBHFNFOU *OD /eiwa/i.match?('Eiwa') #=> true ྩ 3FJXB
"TJNJMBSOPUBUJPOT Ӭ &JXB4ZTUFN.BOBHFNFOU *OD /eiwa/i.match?('Eiwa') #=> true ྩ 3FJXB /eiwa/i.match?('Reiwa')
#=> true
*DPNFGSPNFJXB
044
Support coexistence with OSS community
None
5IJTJTUIF3VCP$PQDPOUSJCVUPSTSBOLJOHUIJTZFBS
5IJTJTUIF3VCP$PQDPOUSJCVUPSTSBOLJOHUIJTZFBS *U`TNF
*XJMMUBMLBCPVU lNBHJDDPNNFOUz XJUI3VCP$PQ UIJTQSFTFOUBUJPO
3VCZIBTUXPNBKPS NBHJDDPNNFOUGFBUVSFT
3VCZIBTUXPNBKPS NBHJDDPNNFOUGFBUVSFT w&ODPEJOHNBHJD DPNNFOU
3VCZIBTUXPNBKPS NBHJDDPNNFOUGFBUVSFT w&ODPEJOHNBHJD DPNNFOU w'SP[FOTUSJOHMJUFSBM NBHJDDPNNFOU
&ODPEJOHNBHJDDPNNFOU # encoding: 'utf-8' # encoding: 'ascii'
&ODPEJOHNBHJDDPNNFOU w5IJTNBHJDDPNNFOUNBLFTpMF FODPEJOHTQFDJpFECZFODPEJOH w*OUSPEVDFEGSPN3VCZ w4DSJQUFODPEJOHJT65'CZ EFGBVMUGSPN3VCZ w5IVTUIJTNBHJDDPNNFOUJT VOOFFEFEBMNPTUDBTFTDVSSFOUMZ
# frozen_string_literal: true # frozen_string_literal: false 'SP[FOTUSJOHNBHJDDPNNFOU
'SP[FOTUSJOHNBHJDDPNNFOU w5IJTNBHJDDPNNFOUNBLFTGSP[FO TUSJOHMJUFSBMXIFUIFSPSOPU w*OUSPEVDFEGSPN3VCZ w3VCZPO3BJMTGSBNFXPSLDPEFT JOUSPEVDFEJUGSPN3BJMT w0OUIFPUIFSIBOE3BJMT HFOFSBUPSTEPFTOPUJODMVEFEJU
5IFSFJTBDPQ SFMBUFEUPUIFTF NBHJDDPNNFOUT
SVCPDPQIRSVCPDPQ 'FBUVSF3FRVFTU8BSOJOWBMJEMPDBUJPOPG DPEJOHQSBHNB
5IJTJTBGFBUVSFSFRVFTUUP3VCP$PQ
SVCPDPQIRSVCPDPQ <'JY>"EEOFXA-JOU0SEFSFE.BHJD$PNNFOUTADPQ
5IJTQVMMSFRVFTUIBTJNQMFNFOUFEUIFGFBUVSF
"CPVUGFBUVSF w5IJTDPQDIFDLTDPEJOH NBHJDDPNNFOUTIPVMECF pSTUMJOF PSOFYUPGTIFCBOH
"CPVUGFBUVSF w5IJTDPQDIFDLTDPEJOH NBHJDDPNNFOUTIPVMECF pSTUMJOF PSOFYUPGTIFCBOH w5IFOFYUTMJEFFYBNQMF FYQFDUFEUPGSP[FOTUSJOH BOE65'FODPEJOH
#BEPSEFS # frozen_string_literal: true # encoding: ascii p [''.frozen?, ''.encoding]
#=> [true, #<Encoding:UTF-8>] *UFYQFDUFE"4$**FODPEJOHCVUBDUVBMMZ65'FODPEJOH
(PPEPSEFS # encoding: ascii # frozen_string_literal: true p [''.frozen?, ''.encoding]
#=> [true, #<Encoding:US-ASCII>]
(PPEPSEFS #!/usr/bin/env ruby # encoding: ascii # frozen_string_literal: true p
[''.frozen?, ''.encoding] #=> [true, #<Encoding:US-ASCII>]
1SFWJPVTMZ UIJTDPQIBE BQSPCMFN
SVCPDPQIRSVCPDPQ -JOU0SEFSFE.BHJD$PNNFOUTSFQPSUTBUMJOFJTOPU BNBHJDDPNNFOU
*UXBTBCVHSFQPSUGSPNNZ3VCZGSJFOE
5IJTJTBWBMJEDPEF # frozen_string_literal: true x = { encoding: Encoding::SJIS }
puts x
"OPGGFOTFPG 3VCP$PQPDDVST # frozen_string_literal: true x = { encoding: Encoding::SJIS
} puts x test.rb:3:1: W: Lint/ OrderedMagicComments: The encoding magic comment should precede all other magic comments.
SVCPDPQIRSVCPDPQ <'JY>'JYBGBMTFQPTJUJWFGPS A-JOU0SEFSFE.BHJD$PNNFOUTA
*PQFOFEBQVMMSFRVFTUUPpYJU
5IJTJTUIFDPSFPGUIF QBUDI
5IFSFXBTBGBMTFQPTJUJWF UPNJTVOEFSTUBOEJOHUIF )BTIOPUBUJPOBTBO FODPEJOHNBHJDDPNNFOU
"TJNJMBSOPUBUJPOT
"TJNJMBSOPUBUJPOT .BHJDDPNNFOU # encoding: ascii
"TJNJMBSOPUBUJPOT .BHJDDPNNFOU # encoding: ascii )BTI x = { encoding:
Encoding::SJIS }
"TJNJMBSOPUBUJPOT .BHJDDPNNFOU # encoding: ascii )BTI x = { encoding:
Encoding::SJIS } ^^^^^^^^^^^^^^^^^^^^^^^^
"TJNJMBSOPUBUJPOT .BHJDDPNNFOU # encoding: ascii ^^^^^^^^^^^^^^^ )BTI x = {
encoding: Encoding::SJIS } ^^^^^^^^^^^^^^^^^^^^^^^^
"TJNJMBSOPUBUJPOT # encoding: ascii ^^^^^^^^^^^^^^^ encoding: Encoding::SJIS ^^^^^^^^^^^^^^^^^^^^^^^^
"TJNJMBSOPUBUJPOT encoding: ascii ^^^^^^^^^^^^^^^ encoding: Encoding::SJIS ^^^^^^^^^^^^^^^^^^^^^^^^
)PXEPZPVMPPLTUIJT encoding: ascii ^^^^^^^^^^^^^^^ encoding: Encoding::SJIS ^^^^^^^^^^^^^^^^^^^^^^^^
5IJTQBUDIDIBOHFTUIF QBUUFSONBUDIPGUIF FODPEJOHNBHJDDPNNFOU UIBUCFHJOOJOHPGMJOF BMXBZTTUBSUTXJUIAA
5IFNBHJDDPNNFOUMJOF BMXBZTTUBSUTXJUIAA encoding: ascii ^^^^^^^^^^^^^^^ encoding: Encoding::SJIS ^^^^^^^^^^^^^^^^^^^^^^^^
5IFNBHJDDPNNFOUMJOF BMXBZTTUBSUTXJUIAA # encoding: ascii ^^^^^^^^^^^^^^^^^ encoding: Encoding::SJIS ^^^^^^^^^^^^^^^^^^^^^^^^
5IJTXBTBGVOOZCVH
4P ZPVDBOPQFO BOJTTVFPSB13 BMXBZT JGZPVpOEBCVHPS BOJTTVF
:PVSJTTVFNBZCF BOZPOFTJTTVF
4FFZPVTPDJBMDPEJOH DPNNVOJUZXPSME XJUI3VCZ
l /PXBZUPMJNJUPVS HPBMT8FMMpOEB SFBTPOUPCFMJFWF 'BDJOH/PWB&SB /PWB&SB