エスケープ文字
特別な意味を無効にしてくれる文字だよ
あるいは特別な意味を付与するための文字だよ
正反対の2つの意味があるから気を付けてね
簡単に書くよ
エスケープ文字(読:エスケープモジ 英:escape character)とは
そいつを前に置くと特別な意味が無効になるよ!な文字のこと。
あるいは
エスケープシーケンス
(改行とかを普通の文字の組み合わせで表現したもの)として認識させるための「そいつと一緒に書くと特別な意味になるよ!」な文字のこと
です。
詳しく書くよ
おぉ、同じ用語で正反対の意味だ。
1.特別な意味を無効にするための文字
2.特別な意味を付与するための文字
が「エスケープ文字」です。
まずは前者の意味から解説していきます。
ズバリ!
文字が持つ特別な意味を無効にするために置く文字が「エスケープ文字」です。
例えば「^」という文字には「~で始まる」という特別な意味があるとしましょう。
「^」は「~で始まる」なので「^a」と書くと「『a』で始まる」の意味になります。
コンピュータさんに「『^a』を探して!」と命令すると、コンピュータさんは「『a』で始まるもの」を探してくれます。
この前提で、文字通り「^a」を探したい場合は、どうすれば良いでしょう?
「『a』で始まるもの」ではなく「^a」を探したいのです。
コンピュータさんに「『^a』を探して!」と命令すると、コンピュータさんは「『a』で始まるもの」を探してくれます。
「^a」は探してくれません。
困りました。
ここで登場するのがエスケープ文字です。
例えば「\」がエスケープ文字だったとします。
エスケープ文字は特別な意味を無効にしてくれる文字です。
このエスケープ文字「\」を特別な意味を持つ文字の前に置くと、その文字の持つ特別さが無効になるのです。
例えば「\^」と書いたとしましょう。
「^」には「~で始まる」という特別な意味が ありました。
……が、その特別さが無効になって、文字通り「^」の意味になります。
一息で説明すると「『^』には『~で始まる』という特別な意味があったけど、それは無効で普通に『^』って考えてね!」です。
同じように「\^a」と書くと「『^』は『~で始まる』という特別な意味があったけど、それは無効で普通に『^』って考えてね!だから、これは『aで始まる』じゃなくて、文字通りの『^a』だよ」の意味になります。
というわけで、エスケープ文字「\」を「^」にくっつけて、コンピュータさんに「『\^a』を探して!」と命令すると、コンピュータさんは「^a」を探してくれます。
この話に出てきた「\」のように「特別な意味を無効にする文字」がエスケープ文字です。
これが前者の
1.特別な意味を無効にするための文字
なエスケープ文字です。
次に後者の
2.特別な意味を付与するための文字
なエスケープ文字について説明します。
……の前に「エスケープシーケンス」について説明します。
エスケープシーケンスは「改行などの特殊な文字を、普通の文字の組み合わせで表現したもの」です。
例えば、画面に文字列を表示するプログラムを作ったとしましょう。
プログラミング言語にもよりますが、その処理は
print "これは文字列です";
のように書きます。
こう書いたプログラムを実行すると、画面に
これは文字列です
と表示されるのです。
次に、表示する文字列を2行にしてみましょう。
print "これは文字列です
これは2行目です";
としました。
これで
これは文字列です
これは2行目です
と表示されて……くれれば良いのですが実際には表示されません。
エラーになります。
基本的に1つの処理は1行で書くのがルールなのです。
上の例のように2行に分けて書いた場合、コンピュータさんは
print "これは文字列です
と
これは2行目です";
の2つの処理が書いてあると解釈します。
どちらも単独で見れば書き方ルールに従っていません。
よってエラーになります。
それでは、改行を入力したいときは、どうすれば良いのでしょうか?
そこで登場するのがエスケープシーケンスです。
先程の処理は
print "これは文字列です\nこれは2行目です";
のように書きます。
そうすると画面には
これは文字列です
これは2行目です
のように表示されます。
「\n」が改行と解釈されて2行で表示されるのです。
このときの「\n」がエスケープシーケンスです。
「\n」をコンピュータさんは「改行」だと判断します。
普通の文字の組み合わせですが、特殊な文字だと読み替えてくれるのです。
エスケープシーケンスは、いろいろ あります。
「\t」でタブ扱いになったり「\a」で音を鳴らせ!な指示だったり、あれやこれやです。
※どんなエスケープシーケンスが使えるかは、プログラミング言語によって違います。
さて、ここでエスケープシーケンスの中身を、もう少し分解してみましょう。
「\n」は「\」+「n」です。
これで「改行だよ!」な扱いになります。
「\t」は「\」+「t」です。
これで「タブだよ!」な扱いになります。
「\a」は「\」+「a」です。
これで「音を鳴らせよ!」な扱いになります。
どうやら
「\」+アルファベット
で特殊な意味を表現しているようですね。
このときの「\」が「エスケープ文字」と呼ばれたりします。
これが後者の
2.特別な意味を付与するための文字
であるエスケープ文字です。
例えば「\n」はアルファベットの「n」に対して「\」が「改行」の意味を付与していると解釈できます。
エスケープ文字「\」は、アルファベットに特別な意味を付与している文字ですよね。

ここまで見てきたように「エスケープ文字」という用語には
1.特別な意味を無効にするための文字
2.特別な意味を付与するための文字
の2つの意味があります。
どちらを意図しているかは文脈から判断してください。
一言でまとめるよ
まぁ「エスケープ文字」って単語が出てきたら「特別な意味を無効にしてくれる文字、あるいは特別な意味を付与するための文字なんだな~」と お考えください。
おまけ
■訳してみるよ
「escape(エスケープ)」の意味は「逃げる」とか「逃れる」とか「脱出する」とかです。
「文字」は日本語ですね。
何となく くっつけると
逃れる文字
となります。
■検索してみる?






