<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>公式情報</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite xml:lang="en">comments - Documentation for Ruby 3.5</cite>, <time>2025-11-01T13:20:22.000Z</time>, <time>2025-11-04T15:07:59.697Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://docs.ruby-lang.org/en/master/syntax/comments_rdoc.html#label-Magic+Comments">https://docs.ruby-lang.org/en/master/syntax/comments_rdoc.html#label-Magic+Comments</anchor-external></p></section><section><h1>構文</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> 
<code>#</code> から始まる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">行内注釈</anchor>に、
名前と値を <code>:</code> で区切って記述するようです。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> 
例示では <code>#</code> の後や <code>:</code> の後には <code> </code> が1つ置かれています。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>
どの程度自由度があるのかドキュメント上は明らかではありません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 
<code>-*-</code> 構文を使うと名前と値の組を1つ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以上</anchor>まとめて<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">行内注釈</anchor>に入れることができます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>-*-</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 
<dfn>top-level magic comment</dfn> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src> とそうでないものがあるようです。
ドキュメント上それらの位置付けは明確ではありませんが、
全体に適用される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">指令</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ブロック</anchor>内に適用される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">指令</anchor>の区別であるようです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 
<code>#</code> の前に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>を書けるのか、ドキュメント上は明らかではありません。
ドキュメントでは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ブロック</anchor>内に適用される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">指令</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インデント</anchor>されて示されています 
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src> が、どの程度自由度があるのかドキュメント上は明らかではありません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">top-level magic comment</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル</anchor>の最初の comment section
に出現しなければならないとされます。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src> comment section
とは何を言うのか明確ではありません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> 
ドキュメントの <code>encoding</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">指令</anchor>の説明において、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">top-level magic comment</anchor> は最初の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">行</anchor>か、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">shebang</anchor>
の次の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">行</anchor>になければならないとあります。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src>
ドキュメント上明瞭ではありませんが、 <code>encoding</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">指令</anchor>かつ
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">top-level magic comment</anchor> である場合の規定なのでしょうか。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">top-level magic comment</anchor> でない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">魔法注釈</anchor>として <code>encoding</code>
が使えるものなのかもよくわかりませんが。)</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> この辺の説明の不明瞭さは、
おそらく最初に <code xmlns="http://www.w3.org/1999/xhtml">encoding:</code> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">魔法注釈</anchor>が導入されたようで、
その後他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">指令</anchor>が追加されたと思われ、
その過程でドキュメントを整理しないで書き足したために見えます。</comment-p></section><section><h1>処理</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> 
名前と値の組は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">指令</anchor>の名前と値と解釈されます。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">指令</anchor>によってはドキュメント上、その配置された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">行</anchor>の続きに適用されることが明言されているものもあります。
明記がないものがどうなのか、複数指定することはできるのか、などドキュメント上明らかでないことが多いです。</p></section><section><h1>指令</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>指令</anchor><rt xmlns="http://www.w3.org/1999/xhtml">directive</rt></rubyb>がいくつかあります。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 
<code>encoding</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">指令</anchor>は、 <code>coding</code> とも書くことができ、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コード</anchor>を指定します。
構文を注意して選べば、
<cite>Emacs</cite>
と
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Ruby</anchor>
の両方に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コードの指定</anchor>と認識させられます。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <code xmlns="http://www.w3.org/1999/xhtml">-*- coding -*-</code> </sw-see></p></section><section><h1>関連</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>charset sniffing</anchor> </sw-see></p><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>コメントの中身が意味を持ってしまう</anchor> </sw-see></p></section><section><h1>メモ</h1></section></body></html>