ヘビはマスクになるか

以下のような記事がありました。バスの乗客、生きたヘビをマスクとして着用 当局が注意喚起 英国

英語版:Bus passenger uses live snake as a face mask

https://www.cnn.co.jp/fringe/35159721.html

https://edition.cnn.com/2020/09/16/uk/man-snake-face-covering-bus-intl-scli-gbr/index.html

ばかばかしいような記事ですが、用語の定義は、ビジネスルールの重要な研究分野なので、これを例題として、用語の定義問題を少し真面目に考えてみたいと思います。

用語は、注意深く定義する必要があります。 マスクとは何でしょうか? Wikipediaによると、「人体のうち顔の一部または全体に被るもの、または、覆うものを指す」となっています。これを、概念モデルで表現します。

f:id:bawbr:20200919133106p:plain

ヘビは顔を覆うことができるでしょうか?

f:id:bawbr:20200919134022p:plain

出来そうです。これだと、マスクの定義にヘビは入ってしまいます。ヘビとマスクを入れ替えても成り立つからです。しかし、区別したいものです。

用語の定義には、理論的には、4つの側面から定義を試みることができます。 そこで、まず、オブジェクト指向でいうところのインタフェースで定義してみましょう。マスクは、空気を通しますが、塵や飛沫を遮蔽します。

f:id:bawbr:20200919134046p:plain

これで、マスクとヘビを入れ替えることができるでしょうか? できなさそうです。 しかし、通気、防塵、防飛沫機能があればスカーフや、ハンカチに置き換えられます。これだと、マスクの定義にはなりません。

f:id:bawbr:20200919134102p:plain

マスクの定義は、そうすると、何でしょう。材質によるものでしょうか? オブジェクト指向的には、抽象クラスを用いる方法をとってみましょう。不織布で作られているスカーフはないでしょうから、以下のようにすることで、もう少し明確になるでしょう。

f:id:bawbr:20200919134153p:plain

これで、スカーフは除外できそうです。でも、不織布マスクは再利用できないものですし、手作りというわけにもいきません。勝手にできるようなものではないので、ファクトリクラスを使って生成方法を補足することで、定義を補強します。

f:id:bawbr:20200919134213p:plain

これによって、マスクの定義がだいぶ明確になりました。 マスクとは、「防塵、防飛沫を目的として通気性のある不織布製品で、顔を覆ったり、被ったりするものであり、ドラッグストアの衛生商品として販売されたもの」と定義するのがよさそうということが図解により分かるようになりました。

アリストテレスの4原因説

アリストテレスは、原因を4種類に分けて説明しています。

  • 形相因
  • 目的因
  • 質料因
  • 作用因

いろいろな考え方があると思いますが、私はオブジェクト指向の理論として議論されているのかどうかはわかりませんが、対応関係があるのではないかと思っています。

マスクの定義でみると、形相因はマスクは顔を覆うものということは当然ですし、目的因として「通気」「防塵」「防飛沫」をとりました。 また、不織布製品であるという質料因も欠かせませんし、ドラッグストアで買うという作用因も必要です。

したがって、形相因=実装クラス、目的因=インタフェース、質料因=抽象クラス、作用因=コンストラクタ(またはファクトリークラス)と対応付けて考えています。