属性の概要
計算機科学において、属性(英: attribute)はオブジェクトや要素、ファイルの特性を定義する要素です。これにより、特定の
インスタンスに対して
値を参照したり設定したりすることが可能になります。属性は
メタデータとして理解されるべきですが、技術によっては
プロパティという用語が同義語として使用されることもあります。
属性とその機能
属性という考え方は、様々な用途に応じて拡張可能です。具体的には、表示形式や既定
値、さらには正当な操作(ルール)や制約(
ゼロ除算は許可されない等)の定義と密接に関係しています。例えば、
JPEGファイルはPNGとは異なる方法でデコードされ、浮動小数点数は特定の
整数型に適用されるルールに基づいて操作されます。
コンピュータグラフィックスの分野では、例えば線オブジェクトには太さや色、破線といった属性が存在します。また、円オブジェクトは同じくこれらに加えて円の中心と半径に関する属性を持つことができます。
C#における属性の利用
C#プログラミング言語では、属性はフィールドやアセンブリ、メンバー、型などのコードブロックに関連する
メタデータの一種であり、
Javaの
アノテーションに類似しています。C#では、属性を通じて横断的な問題に対応するケースが多く、これによって属性の利用目的が誤解されることもあります。たとえば、属性を利用してabstractやsealed、publicといった修飾子を拡張することが可能です。
開発者がどのように
メタデータとして属性を使うかは自由であり、任意のアプリケーションやクラス、メンバーに関連する情報を網羅できます。属性はSystem.Attributeから派生したクラスであり、CLRサービス(COMとの互換性、RPC、シリアル化など)によって使用されることが多いです。
attributesとXMLの比較
属性はXMLドキュメントにおいても重要な役割を果たします。XMLでは、属性は開始タグや空要素タグ内で名前と
値のペアを構成し、マークアップ言語におけるデータ記述に不可欠です。例えば、ある属性が要素に対して
値を代入する際、要素自身の中ではなく、終了タグの前に
配列されます。要素は多数の属性を持つことができ、
プロパティごとに異なる属性が設定されることもあります。
多値データベースにおける属性
マルチバリューまたは脱リレーショナルデータベースシステムでも、属性はテーブルがファイル、行がアイテム、列が属性として扱われます。これにより、データベースおよびプログラミングの両方で属性はバリューとサブバリューを含むことができ、
プロパティや変数の同義語として用いることが可能です。
このように、属性は
計算機科学やプログラミング言語、データベース、マークアップ言語など、様々な分野で利用され、特定の
値を管理するための重要な要素といえます。