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
Ruby and LLM Ecosystem
koic
2
5.1k
Write Code Every Day
koic
1
2.1k
Bliki (ja), and the Cathedral, and the Bazaar
koic
7
2.8k
Welcome to the LLM Club
koic
0
340
RuboCop: Modularity and AST Insights
koic
3
5k
Carving the Way to Ruby Engineering
koic
3
1.1k
Beyond the RuboCop Defaults
koic
3
4.8k
Minify Ruby Code
koic
2
2.4k
Permanent Agility
koic
38
9.4k
Other Decks in Programming
See All in Programming
Building AI with AI
inesmontani
PRO
0
170
仕様がそのままテストになる!Javaで始める振る舞い駆動開発
ohmori_yusuke
7
3.8k
AIの弱点、やっぱりプログラミングは人間が(も)勉強しよう / YAPC AI and Programming
kishida
9
4.5k
SUZURIの規約違反チェックにおけるクリエイタフィードバックの試⾏錯誤/Trial and Error in Creator Feedback for SUZURI's Terms of Service Violation Checks
ae14watanabe
1
150
Promise.tryで実現する新しいエラーハンドリング New error handling with Promise try
bicstone
2
440
Verilator + Rust + gRPC と Efinix の RISC-V でAIアクセラレータをAIで作ってる話 RTLを語る会(18) 2025/11/08
ryuz88
0
360
MCPサーバー「モディフィウス」で変更容易性の向上をスケールする / modifius
minodriven
8
1.4k
FlutterKaigi 2025 システム裏側
yumnumm
0
1k
競馬で学ぶ機械学習の基本と実践 / Machine Learning with Horse Racing
shoheimitani
11
11k
AsyncSequenceとAsyncStreamのプロポーザルを全部読む!!
s_shimotori
1
280
Kotlinで実装するCPU/GPU 「協調的」パフォーマンス管理
matuyuhi
0
400
「10分以内に機能を消せる状態」 の実現のためにやっていること
togishima
1
290
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Fireside Chat
paigeccino
41
3.7k
Code Review Best Practice
trishagee
72
19k
Building Adaptive Systems
keathley
44
2.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The Cost Of JavaScript in 2023
addyosmani
55
9.2k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
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