ケース・センシティブ(英: case-sensitive)とは、コンピューターの分野において、文字列の大文字と小文字を区別して扱うことである。逆に、大文字と小文字を区別しないことを、ケース・インセンシティブ(英: case-insensitive)と言う。たとえば、以下の文字列は、ケース・センシティブな場合やケース・インセンシティブな場合がある。
プログラミング言語の一部(たとえば、C言語、C++、Java、C#、Verilog[1]、Ruby[2]、XMLなど)は、識別子に対してケース・センシティブである。ケース・インセンシティブな言語としては、ABAP、Ada、ほとんどのBASIC(BBC BASIC(英語版)は例外)Fortran、SQL[NB 1]、Pascalがある。また、Haskell、Prolog、Goなどの言語は、識別子の大文字・小文字自体に特別な意味を持たせることをセマンティックとして定義している。
テキスト検索の操作は、システム・アプリケーション・コンテキストによって、ケース・センシティブにもケース・インセンシティブにもなりうる。たとえば、大部分のテキストエディタや文章処理プログラム、ウェブブラウザなど、多くの場合で、ユーザーはセンシティブで実行するかどうかを選択することができる。ケース・インセンシティブな検索はより多くの結果を見つけることができるため、"Language"(文頭の単語など)や"language"、"LANGUAGE"(タイトルなど)のすべてを検索できる。ケース・センシティブな検索を行えば、プログラミング言語の"BASIC"という単語を検索する場合に、望まない単語を除外することができる。たとえば、Google検索のエンジンは、オプションでケース・センシティブな検索を指定することもできるが、基本的にはケース・インセンシティブである[3]。Oracle SQLは、ほとんどのオペレーションや検索がデフォルトでケース・センシティブである[4]が、それ以外のほとんどのDBMSのSQL検索では、デフォルトではケース・インセンシティブとなっている[5]。
ケース・インセンシティブな操作はフォールドケース (fold case) と言われることがある。文字コードのテーブルが大文字または小文字に一致するように畳み込む (fold) という考えから来ている。
Unix系システムのファイルシステムでは、ファイル名は通常ケース・センシティブである(同じディレクトリにreadme.txtとReadme.txtというファイルを別のファイルとして保存できる)。macOSはその点でいくらか変わった扱いをする。デフォルトではHFS+をケースインセンシティブで使用する(そのため、同じディレクトリにreadme.txtとReadme.txtと保存することはできない)が、デフォルトではcase-preserving(英語版)モードで使用される(そのため、readme.txtという名前で作成したファイルはreadme.txtとして表示され、Readme.txtという名前で作成したファイルはReadme.txtとして表示される)。他のほとんどの環境はケース・センシティブであり、多くのMacインストーラがケースセンシティブなファイルシステムで失敗するため、このことが開発者やパワーユーザーにとって問題を引き起こすことがある。
古いMicrosoft WindowsのファイルシステムであるFATやFAT32はケース・センシティブではないが、case-preservingである。さらに古いFAT12ファイルシステムはケース・インセンシティブであり、ケース・プリザービングではなかった。そのため、readme.txtやReadMe.txtという名前で保存されたはREADME.TXTとして保存される[6]。後のWindowsのファイルシステムであるNTFSは、内部ではケース・センシティブであるため、readme.txtとReadme.txtが同じディレクトリに共存できる。しかし、実用的な目的では、ユーザーやほとんどのソフトウェアが扱う場合には、ファイルはできるだけケース・インセンシティブなものとして振る舞う[7]。
注釈
- ^ ただし、単一のデータベースまたはカラムの照合順序(英語版)を明示的にケース・センシティブに設定することもできる。
参考文献