バックスラッシュ
バックスラッシュ(英: backslash)、逆斜線(ぎゃくしゃせん)、あるいはリバースソリダス(英: reverse solidus)は、約物の一つで、「 \ 」と書き表される。バックスラッシュとはスラッシュ「 / 」の逆という意味である。ただしスラッシュとは異なり、自然言語ではほぼ使われることのない記号である。
歴史
編集2021年11月現在、起源は特定されておらず、判明している最も古い文献は、ホイートストン式 (Wheatstone system) のクラインシュミット鍵盤鑽孔機WPE-3のキーボードの写真を伴うテレタイプの1937年の整備規程である[1][2]。この記号は"diagonal key"(対角線キー)と呼ばれ[3]、「・-・・-」の(非標準)モールス符号が与えられた[4][注釈 1]。
1960年6月、IBMは「拡張文字セット規格」("extended character set standard") を発表し、バックスラッシュを 0x19 に割り当てた[2]。1961年9月、IBMのボブ・ベーマーはX3.2規格委員会に、バックスラッシュを "reverse division operator"(逆除算演算子)と表現し、電気通信におけるテレタイプによる先行利用を引用して [
, ]
と \
の3記号を標準化への提唱に含めるよう提案した。特に、ALGOLのブール演算子である∧
(論理積)と∨
(論理和)を、それぞれ/
と\
で合成できるようにするために、\ を必要だとした。委員会は1961年11月の会合で、これらの変更をASCIIの草稿に採用した[2]。
これらの演算子は、Unix V6とV7に付属するC言語の初期バージョンで min と max の代わりに使用された[5][6]。
1963年のテレタイプモデルASR-33は、一部の市場で販売される標準的なキートップとしてこの文字を持つ最初の市販機であるとされる。このモデルは完全なASCII文字セットを持つ。
コンピュータにおけるバックスラッシュ
編集コンピュータでは、バックスラッシュ (U+005C) はさまざまな局面で使われている。
- MS-DOSでは、ディレクトリ(フォルダと類似の概念)の名前の後に置く、パス区切り記号として起用され、Windowsにも受け継がれた。詳細はCP/Mを参照。
- ある種の除算演算子。
- TeX や LaTeX のコマンドはバックスラッシュから始まる。
- Doxygenのコマンドはバックスラッシュまたは単価記号
@
から始まる。 - C/C++では、行末に
\
が出現した場合、行の継続として扱われ、直後の改行とともに無視される[7]。これはプリプロセッサが動作する前に解釈されるため、特に長いプリプロセッサマクロを複数行に分けて記述するときに使われる。 - UNIXのシェルスクリプト、Makefileなどにおいて、論理行が複数の物理行にまたがる場合に、行の継続を表すために用いる。
- 関数型プログラミング言語のHaskellでは、ラムダ式(匿名関数)の開始記号として
\
を使用する。これはギリシア文字のλに形状が似ていることが由来となっている[8]。
MS-DOSにおいてパス区切り文字としてバックスラッシュが選択された理由としては、MS-DOSではコマンドラインオプションの先頭識別文字にスラッシュが使われていたことも関係している。ただし、内部的にはスラッシュへの切り替えにも対応していた[9]。Windowsでは、多くの場面でパス区切り文字としてバックスラッシュの代わりにスラッシュも使うことができるが、APIによってはスラッシュに対応しておらず、バックスラッシュのみを受け付けるものもある。
なお、DOS/Windowsパスでは、C:\foo\bar.txt
のようにドライブレターとドライブ区切り文字:
の直後にバックスラッシュを入れた場合は絶対パスとなるが、C:foo\bar.txt
のようにバックスラッシュを入れなかった場合は該当するドライブの現在のディレクトリからの相対パスとなる[10]。この仕様はWindowsのファイルパス関連のバグの共通の源にもなっている。
Shift_JISのマルチバイト文字には、「能」(94,5C) や「表」(95,5C) など、2バイト目が0x5Cとなるような文字がいくつか存在する。このような文字は様々な問題を引き起こすことがあり、通称「ダメ文字」と呼ばれている。例えばC/C++のソースコードでは、//
で始まる形式のコメント行末尾が\
で終わっていると、前述の仕様によって次の行もコメントアウトされるが、もしソースファイルをShift_JISでエンコードしており、// 実行可能
や// 一覧表
のようにコメントの行末にShift_JISのダメ文字が来ると、Shift_JISの扱いに対応していない処理系の場合は次の行も意図せずコメントアウトされてしまう。
なお、Pythonにも\
による類似の行継続の機能は存在するが、C/C++と違ってコメント行を継続することはできない仕様となっている[11]。
エスケープ
編集UNIXおよびその影響を受けたさまざまな環境において、通常記述できない文字を記述する方法として広く用いられる。
- C言語およびその派生言語(C++、Java、Perlなど)において、文字定数や文字列定数内でエスケープ文字として用いる。
- UNIXのシェルのコマンドラインや、スクリプト言語の正規表現において、特殊な意味を持つ記号(メタ文字)の前に記述し、その意味を打ち消し単なる文字として扱う。
- 正規表現においては、逆に特殊な意味を付与することもある。
\(
\)
\1
など。
- 正規表現においては、逆に特殊な意味を付与することもある。
このような場面で逆にエスケープさせずバックスラッシュ自身を記述したい場合は、\\
のように2つ重ねる必要がある。
代用
編集文字集合にない文字の代用に使われる。
バックスラッシュと円記号
編集ASCIIのバックスラッシュ (0x5C, 5/12) はJIS X 0201では円記号であるため、日本のコンピュータや日本語のフォント・OS環境ではバックスラッシュが円記号として表示されるものが多い。Unicode#日本語環境でのUnicodeの諸問題も参照。
JIS配列のキーボードでも通常は[要出典]バックスラッシュがなく円記号が刻印されている。しかし今日[いつ?]一般に用いられるPC/AT互換機のJIS配列(OADG 109/109A配列)キーボードでは、バックスラッシュと円記号が両方とも(別々のキーに)刻印されている。
GUI環境ではプログラムの進捗状況や動作状況を表すためにプログレスバーやプログレスリング、スピニングカーソルが使われるが、コンソール環境では|
, /
, -
, \
を使って回転する棒にみせかけたASCIIアニメーションが使われることがある[12]。ただし、日本語環境では通例バックスラッシュが円記号として表示されてしまい、意味が通じなくなる。
Mac OSではバックスラッシュと円記号とは区別される。バージョン 7.1〜9.x で主流だった日本語文字コード MacJapanese において、0x5C に円記号が、0x80 にバックスラッシュ記号がそれぞれ別々のコードポイントに存在している。
バックスラッシュの入力方法
編集Mac OS
編集バックスラッシュ記号 \ が刻印されたキーボードではそのままキー入力する。もしくは option + Y とキーボード入力しても良い。
JIS配列のキーボードでは、バックスラッシュ記号 \ ではなく ¥ が刻印されているが、option + ¥ とキーボード入力しても良い。
Microsoft Windows
編集バックスラッシュと円記号は同一視され(文字 0x5C)、キーボード上のどちらのキーを押しても同じ文字が入力される。表示では、欧文フォント下ではバックスラッシュ、日本語フォント下では円記号が入力される。これは日本IBMのキーボードの刻印に由来するもので、メインフレームの端末として設計された時代の名残であり、今日[いつ?]の一般的なPC環境で円記号とバックスラッシュが共存できることを意味しているわけではない。
コンソール、テキストエディタ、各種テキストボックス(エディットボックス)など、プログラム上で文字入力可能な場所でバックスラッシュを入力すると、日本語環境ではスクリーン上に円記号が表示されることがあるが、内部的には同じ文字コード0x5Cであり、多くの場合において円記号はバックスラッシュと同じ処理が可能な文字であると認識される。
共存方法
編集円記号
編集文字コードがISO-8859-1やUnicode等欧文フォントが用いられる環境で確実に円記号を表示するためには0x5Cでなく0xA5の文字を使えばよい。この文字はHTML文書においては文字参照「¥
」(¥)や「¥
」(¥)で表示させることができるほか、Mac OS XではOption+Yで入力可能である。ただし、円記号は人民元の意味でも用いられるため、国際的なやりとりの場面では誤解のないようJPYやCNYと表記または併記すべきである。
バックスラッシュ
編集確実にバックスラッシュを表示させるには全角のバックスラッシュ (U+FF3C) を指定する以外にはない。日本語・韓国語以外のフォントの指定であれば0x5Cの文字はバックスラッシュとして表示される可能性が高いが、OSやテキストレンダリングエンジンやアプリケーションによってはフォールバックにより日本語フォントが部分的に使われて円記号になることもある。フォントの指定をしたくない場合、次善の策としてHTMLのlang属性を英語 (en) などにすると、多くの環境ではバックスラッシュで表示される。ただしブラウザの設定によっては英語の表示フォントが日本語フォントになっている場合もありうるため、確実な方法ではない。
ブラウザでの表示 | HTMLソース |
---|---|
\ \ ¥ \ |
<html>
<head>
</head>
<body>
<span lang="en">\</span> <span lang="ja">\</span> ¥ \
</body>
</html>
|
符号位置
編集記号 | Unicode | JIS X 0213 | 文字参照 | 名称 |
---|---|---|---|---|
\ | U+005C |
1-1-32 |
\ \ |
逆斜線 REVERSE SOLIDUS |
⃥ | U+20E5 |
- |
⃥ ⃥ |
COMBINING REVERSE SOLIDUS OVERLAY |
∖ | U+2216 |
- |
∖ ∖ |
SET MINUS |
╲ | U+2572 |
- |
╲ ╲ |
BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT |
⧵ | U+29F5 |
- |
⧵ ⧵ |
REVERSE SOLIDUS OPERATOR |
﹨ | U+FE68 |
- |
﹨ ﹨ |
SMALL REVERSE SOLIDUS |
\ | U+FF3C |
1-1-32 包摂 |
\ \ |
逆斜線 FULLWIDTH REVERSE SOLIDUS |
脚注
編集注釈
編集- ^ これはスラッシュ(/)のモールス符号を逆から入力したものである。
出典
編集- ^ Bulletin 125, issue 2: Description and Adjustments of the Teletype Wheatstone Perforator, Teletype Corporation, (May 1938), p. ii
- ^ a b c Fischer, Eric (2000-06-20), The Evolution of Character Codes, 1874–1968, pp. 14-15, doi:10.1.1.96.678
- ^ Bulletin 188: Teletype automatic perforator set, Teletype Corporation, (August 1945)
- ^ Bulletin 1025, issue 3: Parts for Teletype Wheatstone Perforator, Teletype Corporation, (July 1945)
- ^ “C compiler source”. bitsavers.org (1975年). 2022年9月20日閲覧。
- ^ “C compiler source”. mit.edu (1979年). 2022年9月20日閲覧。
- ^ 翻訳フェーズ - cppreference.com
- ^ Anonymous function - HaskellWiki
- ^ ASCII.jp:Windowsのパス区切り文字は、なぜ逆スラッシュになったのか?
- ^ Windows システムのファイル パス形式 - .NET | Microsoft Learn
- ^ 2. 字句解析 — Python 3.10 ドキュメント
- ^ Spinning rod animation/Text - Rosetta Code