【Asciidoc】ダイアグラム ー オブジェクト指向分析みたいな ー
昨日に引き続き今日のお題も「創世記」。
オブジェクト指向を扱うなら「古事記」等の日本古典の方が面白そうなのですが、縁遠い方が深みにはまらなくて済むので「聖書」を題材にします。
(尚、宗教的解釈論争はお断りします。)
個人的な解釈なのですが「〇〇指向分析」は「汎用化」の方法論
「構造化分析は機能を分割して其々を関数化し再利用可能にする」
「オブジェクト分析はオブジェクト(物)をクラス(概念)化して再利用可能にする」
を行う事が一つの目的だと思っています。
昨日の「日本語 創世記」と「英語 創世記」を比べると
・ 日本語版は文章をユースケースとして分割した
・ 英語版は「創造」と言う機能カテゴリーでユースケースを纏めた
と言う風に見える。
英語は「主語 + 動詞」の部分から構造化分析しやすい言語体系で、日本語は其の部分に揺れが在るため「分析」其の物が行いにくい言語体系なのだと思う。
それでは自分が行っている「分析」手順を紹介します。
提示された文章を品詞分解します。
分析手法に従い単語を分類します
構造化分析の場合、
「動詞」を関数名に「名詞」を変数に割り当てるオブジェクト指向分析の場合
「名詞」オブジェクトに「動詞」をイベントに割り当てる
作図します。
さて、実際に俺流「オブジェクト指向分析」を行ってみます。
まず、「品詞分解」しながら「動詞」と「名詞」のみを取り出します。
名詞
神、天、地、やみ、淵のおもて、神の霊、水のおもて、光、昼、、夜、夕、朝、第一日
動詞
創造した、ある、おおう、分ける、名づける、なる
構造化の場合、「y= f(x)」的に
昼=名付け(光)
等のイメージで処理します。
本日の本題はオブジェクト指向なので
「名詞」が中心です。
「PlantUML」に入れてみましょう。
@startuml
:神:
(天)
(地)
(やみ)
(淵のおもて)
(神の霊)
(水のおもて)
(光)
(昼)
(夜)
(夕)
(朝)
(第一日)
@enduml
これに「動詞」を利用して関係を作ります。
@startuml
left to right direction
:神:
package (第一日) {
:神:-->(天) : 創造
:神:-->(地) : 創造
(地) -- (淵のおもて)
(地) -- (水のおもて)
(淵のおもて) -- (やみ) : 在る
(神の霊) -- (水のおもて) : 覆う
(やみ) .. (光) : 分かれる
(やみ) --|> (夜) : 名付
(光) --|>(昼) : 名付
(昼) --> (夕)
(夜) --> (朝)
(夕) --> (夜)
(朝) --> (昼)
}
@enduml
取り敢えず変換
単純に作業しただけですが、なんちゃってオブジェクト指向的なUML図にはなってるはず。
ここから、本来は顧客(プログラム注文主)との「Q&A」が始まります。(自問自答も込で・・・。)
例えば
・ 闇と神の霊は創造されたの?天地創造の前から在るの?
・ 「光あれ」は「やみ」に対しての命令?「神の霊」に対しての命令?
・ やみと光が分かれたとするなら同一の物(オブジェクト)?
・ そうすると、「闇」、「光」、「朝昼夕夜」は同一オブジェクトの状態遷移?
適当な図を書くだけでも自分の思い込みが顧客とのすれ違いを生みそうなことが見て取れます(「人それをバグと言う」)。たぶん、世界の一日目なのか?一日のサイクルを作る話なのか?から問題に・・・神学的には?・・・。AIに質問したら答えてくれるかなぁ。。
そもそも、アクターがオブジェクト生成をダイレクトに行っているところから修正が必要とか。。。プログラム的には「神の霊」が最初から世界に存在していれば各イベント・インターフェースを組み込みやすいよね。。。とか。。。其々を詰めていくと良い「天地創造」ができそうですが、この先の改造は読者にお任せいたします。
さて、今回はこのあたりまで・・・・・・
こういった考え方は「プログラミング思考」と言っていいのか?
…ではまた。
当Noteは下記の「AsciiDoc Language Documentation」の文法に従っています。