For faster navigation, this Iframe is preloading the Wikiwand page for 識別子.

識別子

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

識別子の例

プログラミング言語における識別子

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

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

言語によって識別子に使える名前の規則は違うが、通例ASCII[2]の英数字[3]と '_' (アンダーバーもしくはアンダースコア) などの一部の記号から構成され、空白(スペース)やハイフン '-' を含めることができない言語が多い。またレキシカルアナライザが容易に数値リテラルと判別できるように、先頭にだけは数字を使えない言語が多い。大文字/小文字を区別しない言語もある。Unicodeをサポートする言語では、ソースコードをUnicodeでエンコードすることにより、ASCII英数字に限らず日本語文字のようなUnicode文字が使える場合もあるが、C#ではサロゲートペアを識別子に使えない一方で、Swiftでは絵文字などのサロゲートペアを識別子として使えるなど、言語によってUnicodeの中でも使える範囲が異なる場合がある。

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

FORTRANPerlなどの様に変数名によって変数の中身となる値の型が定まる場合もある(正確には、FORTRANの仕様は、決められたいくつかのアルファベットで始まる名前の変数はデフォルトで整数型などで定義されているものと自動的にみなされる、というものである。Perlの仕様は、識別子自体ではなく、識別子に付ける $ や @ や # や & というプレフィックスと文脈により、その識別子の扱い方が変わる、というものである)。

言語間の問題

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

C#やC++/CLIでは大文字/小文字が区別されるので、同じ名前空間内に大文字/小文字の差異しかない識別子を持つ複数の型を定義したり、同じ型内に大文字/小文字の差異しかない識別子を持つ複数のメソッドプロパティを定義したりすることができる。しかし、これらを公開 (public/protected) シンボルとして含むアセンブリ(ライブラリ)を作成し、そのアセンブリを、大文字/小文字を区別しないVB.NETで使おうとすると、同じ名前の識別子が複数存在する(競合)と判断されてコンパイルエラーになる。

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

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

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

形式

識別子はしばしば構造を持つ。例えば郵便地域を識別する郵便番号は階層構造(上位の3桁あるいは5桁が広域、残りが区域内区分)をもつ。区切り文字などを用いた形式により識別子に構造が導入される。

典型的な区切り文字としてはピリオドIPv4: 4階層 - 196.0.0.1)やコロンIPv6: 6階層 - 2001:0db8:0000:0000:0000:0000:0000:9abc)、スラッシュ(パス: 任意階層 - root/home/app)などがある。構造が固定長の場合、省略記法が定義される場合もある(IPv6: 0の連続を省略 - 2001:0db8::9abc, ARN:存在しない階層を省略 - arn:aws:iam::123:role/roleA)。

参考文献

  1. ^ ISO/IEC 25760-1:2011 3.1.1~3.1.4
  2. ^ 言語および処理系によってはASCIIコードでないこともありえる。
  3. ^ 便宜上、「半角英数」と呼ばれることもある。
  4. ^ Capitalization Conventions | Microsoft Docs
  5. ^ Visual Basic Naming Conventions | Microsoft Docs

関連項目

この項目は、工学技術に関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めていますPortal:技術と産業)。
{{bottomLinkPreText}} {{bottomLinkText}}
識別子
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.