計算機科学におけるフィールド(英: field)とは、レコードと呼ばれる複合的なデータ構造の一部分を形成する各要素のことであり、分離されたデータ項目である[1]。フィールドは領域や欄といった意味を持つ。例えば、コンピュータではDate (日付) というデータ構造を、3つの異なるフィールド: Year (年), Month (月), Day (日) の集合によって表現することもある。
- データベースレコードの集合としてのリレーショナルデータベースの配列データは行とも呼ばれる。各々のレコードは様々なフィールドからなり、すべてのレコードの同一フィールドは列を形作る。
- オブジェクト指向プログラミングでは、フィールドはクラスや構造体などに直接宣言される任意の型の変数であり[3]、オブジェクト内にカプセル化されたデータである。そのため、言語によってはデータメンバー(data member)とも呼ばれる。クラスのメソッドがオブジェクトへの操作を担うのに対して、フィールドはオブジェクトの状態を表す。通常のフィールドはインスタンス変数(instance variable)と呼ばれることもあり、オブジェクトのインスタンスごとに存在する。一方静的フィールド(static field)はクラス変数(class variable)とも呼ばれ、クラスのすべてのインスタンスで共有される一つの変数である。
- 構造体やレコードのような単純なデータ集合型を定義する機能をサポートしない言語において、クラスで代用する場合、フィールドをクラス外部に公開して直接操作できるようにすることもあるが、一般的にはカプセル化の促進および機能拡張時のメンテナンス性向上などの観点からクラス外部には公開せず隠蔽する。
- フィールドは、プログラミング言語によっては、メンバー変数(member variable)と呼ばれることもある。さらに言語によっては、フィールドとメソッドの中間に位置する概念として、プロパティ(property)をサポートするものもある。
- GUIにおいて、通例「入力フィールド」と言えばテキストボックスなどでユーザーがデータを設定することのできる入力欄のことを指す。
脚注
脚注
- ^ フィールドをまったく持たない複合データ型は、単体では特に使い道がないため、標準的にサポートされていない言語もある。C言語ではフィールド(メンバー変数)を持たない構造体は未定義動作となるが、一部のコンパイラでは拡張機能としてサポートされている[2]。一方C++ではフィールド(メンバー変数)を持たない構造体がサポートされており、関数オブジェクトを定義したり、インタフェース機能の代用として利用したりすることもある。
出典
関連項目