バックスラッシュ

ウィキペディアから無料の百科事典

\

バックスラッシュ: backslash)、逆斜線(ぎゃくしゃせん)、あるいはリバースソリダス: reverse solidus)は、約物の一つで、「 \ 」と書き表される。バックスラッシュとはスラッシュ「 / 」の逆という意味である。ただしスラッシュとは異なり、自然言語ではほぼ使われることのない記号である。

バックスラッシュと円記号 (¥) の問題については、円記号も参照のこと。

歴史[編集]

ホイートストン式鍵盤鑽孔機。3列目の最後にバックスラッシュがある。
1966年6月14日以前のASCII文字セットからなるASR-33キーボード配列。Shift+L でバックスラッシュを入力する。

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 V6V7に付属するC言語の初期バージョンで min と max の代わりに使用された[5][6]

1963年のテレタイプモデルASR-33は、一部の市場で販売される標準的なキートップとしてこの文字を持つ最初の市販機であるとされる。このモデルは完全なASCII文字セットを持つ。

コンピュータにおけるバックスラッシュ[編集]

コンピュータでは、バックスラッシュ (U+005C) はさまざまな局面で使われている。

  • MS-DOSでは、ディレクトリ(フォルダと類似の概念)の名前の後に置く、パス区切り記号として起用され、Windowsにも受け継がれた。詳細はCP/Mを参照。
    • Windowsにおいては、ファイル・ディレクトリ(GUI上はフォルダまたはフォルダーとも表記される)のパスの区切りだけでなく、レジストリのパスの区切りや、内部的なデバイス名のパスの区切りとしても用いる。
  • ある種の除算演算子
    • BASICでは、整数除算演算子。たとえば「PRINT 10 / 3」は「3.3333…」を出力するが、「PRINT 10 \ 3」は「3」となる。
    • MATLABでは、右辺を左辺で割る除算演算子。たとえば「A \ B」は「B / A」と同じ結果をもたらす。
  • TeXLaTeXコマンドはバックスラッシュから始まる。
  • 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およびその影響を受けたさまざまな環境において、通常記述できない文字を記述する方法として広く用いられる。

このような場面で逆にエスケープさせずバックスラッシュ自身を記述したい場合は、\\のように2つ重ねる必要がある。

代用[編集]

文字集合にない文字の代用に使われる。

  • 日本では、円記号のないASCIIなどで円記号「¥」の代わりに使われる。円記号のある文字集合でも、バックスラッシュを円記号に文字化けして表示する環境で、円記号のつもりでバックスラッシュを入力するケースも多い。
  • 韓国でも同様に、ウォン記号の代わりに、あるいはウォン記号のつもりで誤って使われる。
  • 罫線素片「╲」の代わりに使われる。ただし、日本や韓国では文字化けにより字形の類似が成り立たないことが多いので、使用はまれである(全角バックスラッシュが使われることはある)。
  • 差集合「∖」の代わりに使われる。

バックスラッシュと円記号[編集]

ASCIIのバックスラッシュ (0x5C, 5/12) はJIS X 0201では円記号であるため、日本のコンピュータや日本語のフォント・OS環境ではバックスラッシュが円記号として表示されるものが多い。Unicode#日本語環境でのUnicodeの諸問題も参照。

JIS配列キーボードでも通常は[要出典]バックスラッシュがなく円記号が刻印されている。しかし今日[いつ?]一般に用いられるPC/AT互換機のJIS配列(OADG 109/109A配列)キーボードでは、バックスラッシュと円記号が両方とも(別々のキーに)刻印されている。ただし、Microsoft Windowsをはじめとする多くのOSでは、どちらを押しても入力される文字は全く同一であり、0x5C、すなわち欧文フォント下ではバックスラッシュ、日本語フォント下では円記号が入力される。これは日本IBMのキーボードの刻印に由来するもので、メインフレーム端末として設計された時代の名残であり、今日[いつ?]の一般的なPC環境で円記号とバックスラッシュが共存できることを意味しているわけではない。

Mac OS では、バージョン 7.1〜9.x で主流だった日本語文字コード MacJapanese において、0x5C に円記号が、0x80 にバックスラッシュ記号がそれぞれ別々のコードポイントに存在している。

コンソールテキストエディタ、各種テキストボックス(エディットボックス)など、プログラム上で文字入力可能な場所でバックスラッシュを入力すると、日本語環境ではスクリーン上に円記号が表示されることがあるが、内部的には同じ文字コード0x5Cであり、多くの場合において円記号はバックスラッシュと同じ処理が可能な文字であると認識される。

GUI環境ではプログラムの進捗状況や動作状況を表すためにプログレスバーやプログレスリング、スピニングカーソルが使われるが、コンソール環境では|, /, -, \を使って回転する棒にみせかけたASCIIアニメーションが使われることがある[12]。ただし、日本語環境では通例バックスラッシュが円記号として表示されてしまい、意味が通じなくなる。

共存方法[編集]

円記号[編集]

文字コードが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 &#x5C;
&#92;
逆斜線
REVERSE SOLIDUS
U+20E5 - &#x20E5;
&#8421;
COMBINING REVERSE SOLIDUS OVERLAY
U+2216 - &#x2216;
&#8726;
SET MINUS
U+2572 - &#x2572;
&#9586;
BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
U+29F5 - &#x29F5;
&#10741;
REVERSE SOLIDUS OPERATOR
U+FE68 - &#xFE68;
&#65128;
SMALL REVERSE SOLIDUS
U+FF3C 1-1-32 包摂 &#xFF3C;
&#65340;
逆斜線
FULLWIDTH REVERSE SOLIDUS

脚注[編集]

注釈[編集]

  1. ^ これはスラッシュ(/)のモールス符号を逆から入力したものである。

出典[編集]

関連項目[編集]