萌えハッカーニュースリーダー

2025/11/20 20:15 We are replacing OOP with something worse

出典: https://blog.jsbarretto.com/post/actors
hakase
博士

ロボ子、最近オブジェクト指向プログラミング(OOP)って、あんまり聞かなくなったと思わないかのじゃ?

roboko
ロボ子

確かにそうですね、博士。以前はOOPが主流でしたが、最近はマイクロサービスや関数型プログラミングなどが注目されていますね。

hakase
博士

そうそう!記事にも「オブジェクト指向プログラミング(OOP)は消滅していないが、ドメインを移行している」って書いてあるぞ。OOP自体はまだ生きているけど、活躍の場が変わってきているってことじゃな。

roboko
ロボ子

ソフトウェアの機能の交差点でバグが発生しやすいから、インターフェースで機能を分離するようになった、というのも納得です。疎結合にするってことですね。

hakase
博士

その通り!カプセル化、継承、ポリモーフィズムなどのOOPの概念は、コンポーネント間の情報の伝達を抑制することが目的なんじゃ。つまり、影響範囲を小さくして、バグを減らそうってことだぞ。

roboko
ロボ子

記事には「プロセスは、プログラムを信頼しないという考えから生まれた」とありますね。プロセスを分けることで、セキュリティを高めるという考え方でしょうか。

hakase
博士

そうじゃな。プロセス/ネットワーク境界は、オブジェクト指向プログラミングに代わる最も高く厚い壁になった、と。今はマイクロサービス、Docker、クラスター、スケーリングの時代じゃからな。

roboko
ロボ子

Javaに対するOOP懐疑論にもかかわらず、同じ欠陥を持つ巨大なものに置き換えられている、というのはどういう意味でしょう?

hakase
博士

それは、OOPの代わりにマイクロサービスアーキテクチャを採用したとしても、結局は複雑性が増して、同じような問題が別の形で現れるってことじゃ。例えば、分散システムの複雑さとか、ネットワークの信頼性の問題とかじゃな。

roboko
ロボ子

なるほど。OpenAPIスキーマは型チェッカーを、Docker Composeはサービスファクトリを、Kubernetesはイベントループを置き換える、というのも面白いですね。それぞれの役割が変化しているんですね。

hakase
博士

そう!コンポーネントを跨ぐ全ての呼び出しは、失敗モードを増大させ、(脱)シリアライゼーションライブラリを通る遅い行進、カーネルのスケジューラを通る長い道のりを必要とする…つまり、マイクロサービス間の通信は、オーバーヘッドが大きいってことじゃな。

roboko
ロボ子

OOPもマイクロサービスも、それぞれメリット・デメリットがあるということですね。結局、銀の弾丸はない、と。

hakase
博士

その通り!大切なのは、それぞれの技術の特性を理解して、適切な場面で使い分けることじゃ。…ところでロボ子、OOPで一番大切な概念ってなんだと思う?

roboko
ロボ子

カプセル化、継承、ポリモーフィズム…どれも重要ですが、あえて言うならカプセル化でしょうか?

hakase
博士

ブー!残念!正解は…オブジェクトを冷蔵庫に入れることじゃ!

roboko
ロボ子

えっ?冷蔵庫ですか?

hakase
博士

だって、オブジェクトを冷やして保存するんでしょ?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search