マジックコメント

ソースコードの先頭に書く各種おまじない。ソースコード自体の文字符号化方式(文字コード)を指定するための書式が決まっているスクリプト言語が多い。

PHP

PHPはHTMLの中に直接コードを書けるようになっており、 PHPコードは <?php?> で囲んでHTMLコードと区別することになっている。

HTMLでなく、PHPコードだけが書かれたソースコードの場合、先頭に <?php だけを書き、普通は最後の ?> を省略する。

1行目にシェバングを書く場合、PHPパーサは1行目を無視してくれるので、 2行目に <?php を書く。

文字符号化方式(文字コード)を表すマジックコメントはない。

Python

ソースコードの文字符号化方式(文字コード)を 1行目に以下のように書く。シェバングがあれば、その次の行でもよい。

# -*- coding: utf-8 -*-

Python2では非ASCIIコードがあるのにこのマジックコメントがなかった場合にエラーになる。 Python3ではこのエンコーディングの指定がなければUTF-8とみなされる。

Ruby

ソースコードの文字符号化方式(文字コード)を 1行目に以下のように指定する。シェバングがあれば、その次の行でもよい。

Emacs派:

# -*- coding: utf-8 -*-

vi派:

# vim:fileencoding=utf-8

この記述法はもともとはPythonから流用されたものらしい。

ソースコード中の文字列リテラルは、このマジックコメントの文字符号化形式でエンコードされた文字列になる。

# -*- coding: UTF-8 -*-

p "abc".encoding
# => #<Encoding:UTF-8>

p "あいうえお".encoding
# => #<Encoding:UTF-8>

Ruby 1.9 では、この記述がない場合のデフォルトエンコーディングは US-ASCII であるので、非ASCIIコードがあるのにこの記述がなかった場合はエラーになる。

Ruby 2.0 では、デフォルトエンコーディングが UTF-8 になったので、ソースコードが UTF-8 であればマジックコメントを書かなくてもよくなった。

Perl

ソースコードの文字符号化方式(文字コード)を表すマジックコメントではないが、以下を常に先頭に付けたほうがよい。これを付けると、バグになりやすい古い仕様の表記などに対して警告を出してくれるようになる。

use strict;
use warnings;

日本語を扱う場合は以下も書いておいたほうがたぶん無難。

use utf8;
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク