「なぜオブジェクト指向方法論に代わる方法論が出ないのか」のメモ

# ただはってくだけ 

## 元記事

https://nowokay.hatenablog.com/entry/2022/08/05/133425

## オブジェクト指向プログラミング by "@"kis

<blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">これは、なぜオブジェクト指向と言うときにオブジェクト指向分析・設計の話がされることはなくなってオブジェクト指向プログラミングを指すようになったかという話でもある。</p>&mdash; きしだൠ(K1S) (@kis) <a href="https://twitter.com/kis/status/1555481497364475905?ref_src=twsrc%5Etfw">August 5, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">「オブジェクト指向はxxxという制限を加えれば全然使えると思う」みたいなコメントがつくことがあって、xxxの代表は継承を使わないとかなんだけど、それならオブジェクト指向じゃなくていいじゃーん他でできることをオブジェクト機能使ってやってるだけじゃーんってなるんよね。</p>&mdash; きしだൠ(K1S) (@kis) <a href="https://twitter.com/kis/status/1555548914421739520?ref_src=twsrc%5Etfw">August 5, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">データとふるまいを一緒に書けるというのも、オブジェクトの依存はなるべくなくしましょうという話になった結果、ふるまいとしては設定データの検証か保持データの別表現くらいになっているので、そこまでキリッって言えるものか？っていう感じがある。</p>&mdash; きしだൠ(K1S) (@kis) <a href="https://twitter.com/kis/status/1555550622178758657?ref_src=twsrc%5Etfw">August 5, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


## アジャイル と DDD by "@"j5ik2o

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">総論として違和感ない。同じような印象かも。OOA/OODの統一化の失敗からの～アジャイルとDDDに関心が移った感じにみえたねー <a href="https://t.co/pCYjUt8dCK">https://t.co/pCYjUt8dCK</a></p>&mdash; かとじゅん (@j5ik2o) <a href="https://twitter.com/j5ik2o/status/1555510830531497985?ref_src=twsrc%5Etfw">August 5, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Evans本として結実する以前でも、ドメイン分析の文脈ではいろんな書籍があるけど、XPなどのアジャイルの動向と共に勢いがついた？もしくは息を吹き返した？という側面はあるかもしれない。<a href="https://t.co/EQObjzAXnW">https://t.co/EQObjzAXnW</a></p>&mdash; かとじゅん (@j5ik2o) <a href="https://twitter.com/j5ik2o/status/1555515728710991872?ref_src=twsrc%5Etfw">August 5, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ユースケースならダグ・ローゼンバーグ先生のICONIXに繋がりが強そう。ICONIXも広義の意味ではドメイン駆動設計と解釈できそう。EvansはXPや責務駆動設計の影響を受けている気がします。ソフトウェア以外のシステムのユースケースや問題の対象に目を向けると言う点では共通してると思いますね。</p>&mdash; かとじゅん (@j5ik2o) <a href="https://twitter.com/j5ik2o/status/1555525038245556225?ref_src=twsrc%5Etfw">August 5, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## ユースケース と XP(スクラム) by "@"HHany

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">たしかにオブジェクト指向方法論は要求定義・システム分析・設計・実装・テストをすべてオブジェクトの観点で統一的に扱うのだという理想にもえた運動でした。オブジェクトというかクラスが知識を載せるビィークルとして上流から下流までトレーサビリティを確保できるとの幻想があったのです。 <a href="https://t.co/P8oeT4bYnP">https://t.co/P8oeT4bYnP</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555707654672384000?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">しかし上流はオブジェクトで整理できるほどそんなに安直じゃない。そこにユースケースのアイデアが登場し世界が歓喜しました。この部分は日本だと要求開発やRDRAに繋がっていまに至ります。世界的にはデザイン思考やサービスデザインでお茶を濁してる感じ <a href="https://t.co/P8oeT4bYnP">https://t.co/P8oeT4bYnP</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555709000175734784?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">そして本丸の設計実装テストのところはJavaと関連フレームワーク群の妥当な取り仕切り方がEJB等の黒魔術を乗り越えてシンプルJavaへ、デザインパターン運動がオブジェクト設計原則へ、それらをXPが一気に統合して第一期のアジャイルに至る感じですかね <a href="https://t.co/P8oeT4bYnP">https://t.co/P8oeT4bYnP</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555711809189216256?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">なので平鍋さんもいうように今しばらくは、レフトwingとしてプロセスマネジメント系はスクラムに、ライトwingの開発方法論系はXPによって担われているイメージでしょうか <a href="https://t.co/P8oeT4bYnP">https://t.co/P8oeT4bYnP</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555712602847981568?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

##  カプセル化と先祖返り "@"kis

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">オブジェクト指向って継承による多態があるからこそなんだけど、継承が非推奨になって以降に雰囲気でオブジェクト指向を知った人って、継承はオプションでカプセル化だけでオブジェクト指向って言ってしまいがち。<br>カプセル化はオブジェクト指向固有じゃなくて、クラスでカプセル化を実現してるだけ。</p>&mdash; きしだൠ(K1S) (@kis) <a href="https://twitter.com/kis/status/1555698415635689472?ref_src=twsrc%5Etfw">August 5, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">アランケイのオブジェクト指向だと、多態はメッセージによって行われるけど、いずれにせよカプセル化+多態というのが重要。</p>&mdash; きしだൠ(K1S) (@kis) <a href="https://twitter.com/kis/status/1555698417560862721?ref_src=twsrc%5Etfw">August 5, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">ストラウストラップがCにクラスを組み込んでC with Classesを作ったとき、仮想関数はまだ導入されていなくて多態ができなかったので、クラスの機能はユーザー定義型機能と呼ばれていた。<br>仮想関数が導入されてオブジェクト指向機能と呼ばれた。</p>&mdash; きしだൠ(K1S) (@kis) <a href="https://twitter.com/kis/status/1555699018277482496?ref_src=twsrc%5Etfw">August 5, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">クラスを使わないカプセル化、最近はいろんな言語にextensionとして導入されてる。多態はできない。<br>実際のところこれってオブジェクト指向以前に戻る先祖返りなのよね。</p>&mdash; きしだൠ(K1S) (@kis) <a href="https://twitter.com/kis/status/1555701228344320000?ref_src=twsrc%5Etfw">August 5, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">AdaやModula-2はオブジェクト指向の特徴と思われてる機能を継承以外はもっていたけどオブジェクト指向言語と呼ばれることはなくて、継承可能なクラスを導入したAda 95やModula-3からオブジェクト指向言語と呼ばれた。</p>&mdash; きしだൠ(K1S) (@kis) <a href="https://twitter.com/kis/status/1555740359111884801?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## アジャイル と 強い型付け言語 からの DDDの登場 by　"@"HHany

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">オブジェクト指向方法論で狙っていた一貫したトレーサビリティというのは、現在では、「ストーリー」単位で企画し、「クラス」単位で設計・実装し、クラスとストーリー単位でテストすることで、「実行可能アーキテクチャ」を段階的に作り「検証」ながら、 <a href="https://t.co/P8oeT4bYnP">https://t.co/P8oeT4bYnP</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555781656879202305?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">動的なアジャイルチームの人間系とセットでトレーサブルにするということに落ち着いたのでしょう。<br>さらに強い型付け言語を用いて、型推論で柔軟性を確保しながらドメイン記述語彙として適切な型とその制約をどんどん定義していくことで、「実行可能アーキテクチャ」が妥当であることを検証し続ける <a href="https://t.co/P8oeT4bYnP">https://t.co/P8oeT4bYnP</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555782045993172992?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ユーザー目的にとってもシステム制約にとっても検証のベースになるというのが確立した。<br>　その流れの中で、DDDが意味を持つわけで、実装やシステム設計とビジネスドメイン仕様とを論理的に分離しつつも「実行可能アーキテクチャ」で常に検証はできる状態を保ちたいという欲求に答えるのがDDD登場理由 <a href="https://t.co/P8oeT4bYnP">https://t.co/P8oeT4bYnP</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555782581106667520?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ここでは、型と制約をクラスとメソッドで記述しても、関数型言語で記述してもいいわけなので、オブジェクト指向は乗り越えた議論になってる。 <a href="https://t.co/P8oeT4bYnP">https://t.co/P8oeT4bYnP</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555783225968332800?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">同一のクラスで上流と下流をつなぐのではなく、ドメインという純粋にビジネスや業務のしくみに特化したモデルをビジネス関係者とコラボしてつくり、それをラッピングするシステム層(層というかなんというか)と分離して管理するソフトウェア技法がDDDということです。 <a href="https://t.co/P8oeT4bYnP">https://t.co/P8oeT4bYnP</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555783898508165120?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


## DDD と お手本不足 by "@"HHany

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ところが現状のDDDは、ドメインとシステムのモデル分離の仕掛け実装にばかり頭が言ってしまっていて、ドメインの中身をどのようにモデルとして整理・表現すればよいかの部分がヒントがない・お手本がないということで困っているように見受けられます。 <a href="https://t.co/P8oeT3TP9H">https://t.co/P8oeT3TP9H</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555784739142770688?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ところが現状のDDDは、ドメインとシステムのモデル分離の仕掛け実装にばかり頭が言ってしまっていて、ドメインの中身をどのようにモデルとして整理・表現すればよいかの部分がヒントがない・お手本がないということで困っているように見受けられます。 <a href="https://t.co/P8oeT3TP9H">https://t.co/P8oeT3TP9H</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555784739142770688?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">椿正明氏のTHモデルとか勧めると引く人多数と思うので、心の中でIT界の橋本治として勝手に尊敬する羽生章洋『楽々ERDレッスン』翔泳社2006を熟読玩味することをお勧め。上流のモデリングという意味では、羽生さんの『はじめよう! 要件定義 ~ビギナーからベテランまで』とセットで読むと最強です。 <a href="https://t.co/P8oeT4bYnP">https://t.co/P8oeT4bYnP</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555786117190135809?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


## ポスト OO の ベースラインの混乱 by "@"HHany

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">いまではWebサービス事業会社がアジャイルとDevOpsやSREと呼ばれる実践的なソフトウェア・エンジニアリングを推進しているわけだけど、それらのどこまでが基本的なソフトウェア開発技術でどこからが各組織の目的や成熟度に応じたオプションなのかが見極められずに混沌としているかも(某IPA見解)。 <a href="https://t.co/P8oeT4bYnP">https://t.co/P8oeT4bYnP</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555786817139806209?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">レフト翼はようやくPMBOK７でアジャイルと組織運営の方法をフレーム化して自分たちでテイラーリング(取捨選択)するという方向で（お化けのように複雑な大規模アジャイル手法ではなく）DAベースで整理を進めようとしているところは望ましい動きと受け止めつつ、混沌はしばし続く <a href="https://t.co/P8oeT4bYnP">https://t.co/P8oeT4bYnP</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555786974002556929?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ライト翼はまさにポスト・オブジェクト指向方法論が出てこないといけないわけですが、組込みエンジニアリング界隈ではMBD(モデルベース開発)がそれなりに定着しつつある一方で、ビジネス系はいましばらくの混沌が。。ソフトウェア工学がGoogleソフトウェアエンジニアリングを再整理する必要性を感じる <a href="https://t.co/P8oeT4bYnP">https://t.co/P8oeT4bYnP</a></p>&mdash; 羽生田 栄一 (@HHany) <a href="https://twitter.com/HHany/status/1555788906855301121?ref_src=twsrc%5Etfw">August 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# 感想

分析設計論は分化していて、プログラミングそのものは型付けと制約による柔軟な検証装置が目的で(クラスまたた抽象データ型はさほど重要ではない)という感じで腑に落としました～～