自己記述性

これは何の話?

他人がつくったC言語のdll を使うときは、ヘッダファイルがいるよね。ヘッダファイルがないと、dllにどんな関数があるか分からないからね。 でも、他人がつくったC#の(.NETの) dll はリフレクションで、そのdllにどんなメソッドが含まれているか調べることができるし、呼ぶこともできるよね。そういう技術をリフレクションと読んでいるね。リフレクションできるように、プログラミング言語がそなえている性質を、自己記述性と呼ぶことにする。

自己記述性

C#に限らず現代的なプログラミング言語は、ビルドしたバイナリ(dll や classファイル)から、そこにどんなメソッドが含まれているか分かるようになっている。これを自己記述性がある、とか呼ぶことにする。

Webサービスにも似たような性質があって、たとえばSOAPサービスが自身の提供するメソッドの情報をWSDLとして利用者に提示できるのも、この性質の親戚みたいなものだと思います。

「ビルドしたバイナリ」と「Webサービス」は、自己記述性を備えている、と捉えるのがよいと思う。

正確な用語ではない

この性質を自己記述性と呼ぶのは、あまり確立された呼び名ではないかもしれない。ググっても、「自己記述性」という言葉で説明している文章にはあまり出会わないんだよね。 また、この性質を、「ビルドしたバイナリ」と「Webサービス」が共通して備えている性質、と捉えることも、どれほど一般的なのかわかりません。
個人的には、自己記述性は、最近のプログラム言語とWebサービスが備えている、自身が提供するメソッドの情報の開示を実現する性質、と思っています。