識別子

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

識別子(しきべつし、: identifier)とは、ある実体の集合の中で、特定の元を他の元から曖昧さ無く区別することを可能とする、その実体に関連する属性の集合のこと[1]をいう。ほぼすべての情報処理システムで何らかの識別子が使われており、識別子を利用することで機械的な処理が可能になる。

識別子の例[編集]

プログラミング言語における識別子[編集]

プログラミング言語においては変数関数などを識別する、プログラム中のトークンとして表される。それぞれ変数名、関数名のように呼ばれることもある。

識別子はスコープ内で複数の意味を持ってはならない。また曖昧さが許されないので、文法上定まった形式に沿った名前でなければならない。

言語によって識別子に使える名前の規則は違うが、半角英数字と_ (アンダーバー)などの一部の記号から構成され、空白を含まず、時曖昧さを避けるために数字を先頭に使えないものが多い。大文字小文字を区別しない場合もある。日本語のような全角文字(Unicode文字)が使える言語があるが、C#では使えない絵文字がSwiftでは識別子として使えるなど、言語によってUnicodeの中でも使える範囲が同じとは限らない。

また、多くの言語で識別子として使うことができない予約語が設定されている。

FORTRANPerl などの様に変数名によって変数の意味が定まる場合もある。

言語間の問題[編集]

別の言語間でオブジェクトが共有できる場合など、識別子に関連した問題が発生することがある。

C#では大文字小文字が区別されるので、大文字小文字のみが違う識別子を含むライブラリを作成できる。それを大文字小文字を区別しないVB.NETで使おうとすると同じ名前のメンバが多種類存在するとしてコンパイルエラーになる。

また、共通中間言語では文法上の曖昧さが生じないため、記号やスペースが含まれる識別子が許容されており、F#などではスペースや記号を含む識別子を使う手段が提供される。しかし、C#など非対応の言語からはその識別子を扱うことはできず、リフレクションなどの手段を使わない限り参照することができない。

この問題を回避するためにライブラリなどは共通言語仕様(CLS)に従うべきとされている。

また、JavaScriptJSONでは$(ドルマーク)が識別子として使える。 $が識別子として利用できない言語からJSONを利用する場合、通常はdata.hogeのようにアクセスできる言語でもdata["hoge$piyo"]のように文字列として処理するなど、回避策をとる必要が出る。


例:

  • abc
  • function
  • _item
  • sector1
  • value_of_item
  • @var

参考文献[編集]

  1. ^ ISO/IEC 25760-1:2011 3.1.1~3.1.4

関連項目[編集]