わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

三つに分けて考える

初回の授業で,情報セキュリティの三大要素は,機密性・完全性・可用性であり,この順番に言えるようになってくださいねと言いました.
こういうふうに,物事を3つに分けて考えるのを,三分法と言います.
突然ですが,パチンコ玉を4つ,頭の中で描いてください.もしパチンコになじみがなければ,数学でいう球を,同じ大きさのものを4つ,用意してください.頭の中でですよ.そのうち3つを,互いに隣り合うようにしてぴったりくっつけると,三角形になります.正三角形です.これが安定する形です.
さらに,その三角形になった3つの玉のすべてにくっつくように,4つめの球を配置します.数学的には2種類あります.上か下かでも,左か右か,表か裏か.でもどちらに置こうが,出来上がる形は同型です.球がいずれも同じ大きさなら,それらの中心は,正四面体の4つの頂点になります.
ここで3つの球を,三大要素,最後につけた球を,情報セキュリティとすれば,それによって三分法を,立体的に安定的なものとして表現できたことになります.まあ,球の大きさは同じだけど,「情報セキュリティ」のところだけ,別の色にするほうが見やすいでしょうね*1
二分法だとどうかですが…情報セキュリティで二分法と言えば,対称暗号と公開鍵暗号ですね.ちなみにかつての雑談では,タイプA学習とタイプB学習,SSHにおけるLとR,アクティブ攻撃かパッシブ攻撃か,なんてのを取り上げたことがあります.
これらの二分法は,なるほど物事を2つに分類したというのが見てとれますが,その後,それらを融合することが,内に含まれているように感じます.対称暗号と公開鍵暗号を融合させたら…ハイブリッド暗号ですね.一人の先生は,審判という意味では,タイプA学習の支援者なのですが,それと同時に,知識の供給源という点で,タイプB学習において不可欠な存在です.他も同様に,考えることができます.
本日の雑談のメインテーマは,三分法,あるいはものごとの三大要素です.正四面体もしくは三角錐の一つの頂点が決まっていて,残りの,正三角形をなす3つの頂点に,何と何と何を置けばいいのか,です.
みなさんがこれまでに学んできた中では,オブジェクト指向プログラミングの三大要素というのがあったのではないかと思います.オブジェクト指向という科目は選択科目ですが,Javaでプログラミングする科目は必修でしたね.
オブジェクト指向というのは,大きく3つの考え方に分かれます.オブジェクト指向分析,Object-Oriented AnalysisなのでOOAオブジェクト指向設計,Object-Oriented DesignなのでOOD,そしてオブジェクト指向プログラミング,Object-Oriented Programmingの頭文字をとってOOPです.
オブジェクト指向プログラミング言語は,「クラス」に着目すると,クローズドクラス,オープンクラス,プロトタイプベースの3つに分けることができます.細かくは,自習してください.ちなみにきちんとした分類方法はというと,クラスベースとプロトタイプベースに2分して,その上でクラスベースのものを,クローズドクラスとオープンクラスに2分します.ただ,個人的にJavaRubyJavaScriptであれこれプログラムを作ってきた経験から言うと,クローズドクラス,オープンクラス,プロトタイプベースの3つに分けるほうが合理的です.もう一つ「ちなみに」ですが,このクラスに着目した三分法は,オブジェクト指向プログラミング言語の分類であって,オブジェクト指向プログラミングではない点に,注意してくださいね.
では,オブジェクト指向プログラミングの三大要素は何でしょう.みなさん,何でしたっけ? …カプセル化,継承,ポリモーフィズム,でしたね.ここでも各要素の名称を挙げるだけとして,具体的に何だったかは,過去の授業なりWikipediaなりを調べることとしてください.
三分法としてはここまで.なのですが,ポリモーフィズムという言葉に,焦点を当ててみたいと思います.これを日本語で書くと,「ポリモーフィズム」のほか,「ポリモルフィズム」とか,「ポリモフィズム」なんてのもあります.漢字では,「多態性」「多様性」「多相性」と書かれたりします.英語の綴りはpolymorphismで,これを「poly」「morph」「ism」に分けて一つひとつに漢字を割り当てると,morphの解釈次第で,3種類あるわけです.実際にはもっとあるかもしれませんが.またmorphをどう読むかで,「モーフ」「モルフ」「モフ」とカタカナ表記が違ってきます.
個人的には「オー」の長母音が入っていますし,辞書を引くとアクセントも「ぽりモーふぃずむ」でここにアクセントがあるので*2,「ポリモーフィズム」が最もよい書き方なのかなと思います.Googleで比較しても,件数はこれが一番ですし,Wikipediaも,この表記でページが作られています.
ただ「ポリモフィズム」も根強い人気のようで,はてなキーワードでは,「ポリモフィズム」を参照するようにとなっています.私はオブジェクト指向の専門家ではないので,これは想像ですが,定評のあるオブジェクト指向プログラミングの書籍に,「ポリモフィズム」という表記が使われているのではないかと推測します.

*1:ベン図を描いて,情報セキュリティという囲い(集合)の中に,機密性・完全性・可用性の集合をそれぞれ作るというのは,ちょっとしっくりきません.各要素は別物として,いわばis-aではなくhas-aの関係で結ぶほうが,良いように思えます.

*2:対して,「information」はoのところにアクセントが来ず,長母音になりません.ただ,「インフォメーション」とカタカナ書きするせいで,「infomation」という綴りミスも見かけるのですが.なお,1970年代のある研究会の予稿集で,表紙に「インホメーション」と書かれていて,びっくりしたことがあります.

*3:この中の「ポリモフィズム」は,wikipedia:ポリモーフィズムにリンクされています.