広木大地氏(@hiroki_daichi)による、古典OO=オントロジーモデルから、代数的構造+テレオロジー的モデルへのパラダイムシフトについてのツイートまとめ

6

2019年6月19日の一連ツイート

広木 大地/ エンジニアリング組織論への招待 @hiroki_daichi

ソフトウェアのパラダイムとしてある抽象構造が、自明のものとして先験的に存在し、それを分析しながら、それらをツリーによって分類可能であろうとして、再利用可能なコンポーネントに設計するというOOP初期に描かれた継承による抽象の考え方を僕は、「オントロジー的抽象」と表現していて、

2019-06-19 18:55:48
広木 大地/ エンジニアリング組織論への招待 @hiroki_daichi

対して、抽象構造は事後的に発見され機能やビジネスの目的によって蒸留されることによって姿が見えてくる、それらはツリーではなくセミラティス構造になって発見されStructual SubtypingやDelegation/Composition、Mixinなどにより表現されることの多い抽象を「テレオロジー的抽象」と表現している。

2019-06-19 18:55:49
広木 大地/ エンジニアリング組織論への招待 @hiroki_daichi

この抽象を先験的に発見しようとする試みが、「設計フェーズ」で、ウォーターフォール的な思考とアーキテクチャを関係づけるものになる。 その逆に一度機能実装された後に事後的に見出されることを「リファクタリング」と考えるとアジャイル的な思考とアーキテクチャを関係づけるものになる。

2019-06-19 18:55:49
広木 大地/ エンジニアリング組織論への招待 @hiroki_daichi

また、これは「要求していたもの」の不確実性の高さにも関連する。 かつては、業務に関わる知識があれば、十分なレベルでソフトウェアを設計するに足るドメイン知識になると考えられがちであったため、事前に設計することが可能であると考えられがちだった。

2019-06-19 18:55:50
広木 大地/ エンジニアリング組織論への招待 @hiroki_daichi

目で見て、業務に取り入れながら初めて顧客のニーズがわかってくる。これは事後的に本当の目的が発見されることによる。これがテレオロジー的な抽象で、あり、これを発見していく過程がアジャイル的開発フローの示唆するところなわけだ。

2019-06-19 18:55:50
広木 大地/ エンジニアリング組織論への招待 @hiroki_daichi

オントロジー的抽象では、さんまといわしがあるとき「魚」を先験的に見出す。 テレオロジー的抽象では、さんまといわしから 「夕飯のメイン具材」を事後的に見出す。 その後、豚肉が作られたら、 「魚」という抽象は、空虚なものになって、YAGNI原則の違反に見える。

2019-06-19 18:55:50

2020年1月27日の一連ツイート

広木 大地/ エンジニアリング組織論への招待 @hiroki_daichi

オントロジー 的抽象のおわりとテレオロジー的抽象の話として、動物クラスとリスコフの置換原則が以下に満たされないかという話は、歴史学的に学ぶ方がいいけど、今の人たちは構造的部分型と代数的データ型の上に物を考えるのが当然だろうから無理に継承なんか教えないでいいのではないのかな。

2020-01-27 23:09:42
広木 大地/ エンジニアリング組織論への招待 @hiroki_daichi

「抽象は先見的に存在しない」ということから「抽象は事後的に発見される」ということのパラダイムの変化と、「ドメイン知識」という概念の認識の齟齬には関係がある。

2020-01-27 23:29:11
広木 大地/ エンジニアリング組織論への招待 @hiroki_daichi

ドメインエキスパートが存在し、彼らのメンタルモデルそのものを自明のものとしてとりだすというドメイン知識の捉え方は誤解があって、実際には存在しないドメインエキスパートに惑わされることになる。

2020-01-27 23:29:12
広木 大地/ エンジニアリング組織論への招待 @hiroki_daichi

ドメイン知識とは事後的に発見され蒸留されることによるもので、ここにはドメインエキスパートがいるのではなくて、良き設計者とステークホルダー、そして良きファシリテーターがきるだけ。 このような抽象は自明なツリーではないし、そうしない方が良いことが多い。

2020-01-27 23:29:13
広木 大地/ エンジニアリング組織論への招待 @hiroki_daichi

このドメインエキスパートと設計者の二項対立的な捉え方から、テレオロジー的な抽象への変化は、僕の主張する「組織のエマルション(タスクダイバーシティを高め、ソフトウェアエンジニアがLoBにとけることで事業速度が高速化する)」という変化と双子の関係にある。

2020-01-27 23:36:11
広木 大地/ エンジニアリング組織論への招待 @hiroki_daichi

業務に存在するワークフローは、これからはLens圏のupdaterのように記述されるかもしれない。CQRS+ESのアーキテクチャやDAGネットワークとして、閉じたカテゴリーのなかに副作用が隠れるようになっていくときに、その抽象構造はオブジェクト指向アナリシスのそれとは変わる。

2020-01-27 23:41:37