SOLID原則 - そりっどげんそく

SOLID原則の五つの文字が幽霊のように漂う黒い背景に、赤い警告マークが浮かぶイラスト
SOLID原則:理論の理想に漂う五つの幽霊。現場では警告と失望を呼び寄せるだけ。
テクノロジー・科学

説明

SOLID原則とは、オブジェクト指向設計の神聖不可侵とされる五つの教義。だが実際には、理想を追い求めるあまりコードを哲学書のように難解にする呪文群でもある。依存関係を嫌い、拡張を賛美し、濫用すると自らの首を絞める罠。理論的には完璧だが、現場ではバグの隠れ蓑となり、議論の種にされる宗教のような存在。そして何より、原則を忠実に守る者ほど、レビューで死線を彷徨う覚悟が必要となる。

定義

  • 単一責任とは、クラスが一つの責任しか持てないという教義。しかし実際には無数のファイルとクラスを生み出す過激思想。
  • 開放閉鎖とは、修正には閉ざし、拡張には開くという矛盾した理想。
  • リスコフの置換法則とは、派生クラスが親を裏切らないよう祈る儀式。
  • インターフェイス分離とは、不必要なメソッドを拒絶し、必要以上にインターフェイスを増殖させる強迫観念。
  • 依存性逆転とは、詳細より抽象を崇拝しすぎて、依存の所在を見失う行為。
  • 高凝集とは、似た者同士を固めすぎて外部と会話できなくなる排他主義。
  • 低結合とは、他者との接点を避け続ける孤高の美学。
  • ビルド可能性とは、常に通るはずなのに現実には奇跡を要する聖杯。
  • 拡張性とは、新機能ごとにファイル増殖を促進する魔法。
  • テスト可能性とは、テストコードの山を前に開発者の意欲を奪う試練。

用例

  • 「単一責任って何?クラスは一つの仕事だけ?じゃあログ記録も別クラス?」
  • 「開放閉鎖原則守ったら拡張するたびファイルが増えて大惨事だよ。」
  • 「リスコフの置換?子クラスが親クラスの説明を裏切らないよう祈るしかないね。」
  • 「インターフェイス分離って、インターフェイス地獄を作り出す魔法だよね。」
  • 「依存性逆転で依存が逆転して、もう何が依存なのかわからない。」
  • 「SOLID徹底したらコミットする前にコード量見ただけで心が折れるわ。」
  • 「このライブラリ、開放閉鎖できてる?確認するのに新しい拡張書くはめに…」
  • 「SRPを守るために工数が5倍になったけど、レビューで全否定された。」
  • 「インターフェイスが多すぎて何に依存してるか誰にもわからない。」
  • 「依存性逆転して抽象が増えすぎて具象に辿り着けない。」
  • 「リスコフの置換について話すとコーヒー5杯じゃ足りないね。」
  • 「SOLID原則?まず名前すら暗号だよ。」
  • 「単一責任守ったら結局全部Facadeに丸投げだよ。」
  • 「InterfaceSegregationのIが何を指すのか、話すだけで頭が痛い。」
  • 「拡張には開いているらしいけど、クラス図は見たくもない。」
  • 「依存性逆転は神話で、現場ではまだnewしている。」
  • 「SOLID信者ほど抽象クラスを増やす現象、陰謀か何か?」
  • 「オープンクローズドって、結局修正箇所にテストが引っかかる罠だよ。」
  • 「SRPを守っているときほどバグを生むパターンが多い気がする。」
  • 「SOLID原則?最初の一文字で既に僕の集中力が消える。」

語り

  • プロジェクト開始前、チームはSOLID原則を布教し、甘美な理想を囁いたが、気がつけばファイル数は四桁を突破し、混沌の巷と化していた。
  • ある夜、開発者はリスコフの置換を守るために眠りを捨て、抽象クラスの森で彷徨った。
  • インターフェイス分離を徹底した結果、依存関係は一見美しく見えても、その裏でクラス間の冷戦が勃発した。
  • 彼は単一責任を追い求め、ついにはログ記録すら別サービス化してしまった自分を嘲笑った。
  • 依存性逆転の教義を学んだ新人は、先輩への依存がなくなりすぎて居場所を失った。
  • Open-Closed原則に殉じるあまり、拡張の度に震え上がるトリガー地獄を生み出したチームがあった。
  • SOLIDを守る決意を固めた瞬間から、コードは詩ではなく難解な法典となった。
  • レビューで『ここもSOLIDに反している』と指摘されるたびに、開発者の精神は一粒ずつ削られていった。
  • 午後3時、チームは依然としてSRP違反を巡る議論に興じ、納期への視界は霞んでいた。
  • ビルドが通らぬ理由を探していたが、真の原因は抽象クラスの無限ループにあった。
  • Liskovを崇拝する彼女は、すべてのテストが緑になるその日を夢見て、コードに祈りを捧げた。
  • ISPを極めようとした彼は、インターフェイスの数に圧倒され、ついには名前すら書けなくなった。
  • 拡張のたびにファイルが増殖する現象を見て、彼らはついに『SOLIDバクテリア』と呼ぶようになった。
  • 依存性逆転を行った場所は、いつしか‘配置ファイル泥沼’と呼ばれる禁断地となった。
  • 彼らのコードベースには、SOLIDの五原則と未知のバグだけが均等に散りばめられていた。
  • あるメンバーは『SOLIDは古代の魔法書』と呼び、夜な夜な暗号解読に勤しんでいた。
  • 美しい設計を目指すあまり、美しさこそが最高の敵となった。
  • 理論の彼岸に飛び立った開発者は、現実のバグという重力に引き戻された。
  • SOLID宗教の教祖は、コードレビューこそが信仰の試練であると言い残した。
  • 最終的にチームは原則よりも動くコードを尊び、階級社会が静かに崩壊していった。

関連語

別名称

  • 設計の十戒
  • OOPのオマジナイ
  • クラスの呪縛
  • 綺麗コード教
  • 抽象信仰
  • 原則の聖杯
  • 依存恐怖症
  • SRPラブ
  • LSPカルト
  • ISP迷宮
  • OCP洗脳
  • SOLID教
  • コードの戒律
  • 継承地獄の門
  • 疎結合の祈り
  • 凝集の神殿
  • 抽象の檻
  • 設計ハラスメント
  • プリンシプルの檻
  • ソースコード教典

同義語

  • 設計の錬金術師
  • オブジェクトの司祭
  • 原則の裁判官
  • クラスの司令塔
  • 抽象の探索者
  • 依存の狩人
  • 凝集の守護者
  • 結合の逃亡者
  • 拡張の異端者
  • 修正の反逆者
  • 継承の苦行僧
  • コードの錬金術
  • 理論の象牙塔
  • 実装の迷子
  • 設計の執行者
  • プリンシプルの弁護士
  • インターフェイスの審判
  • 抽象の探検家
  • 依存の逆転者
  • 原則の伝道師

キーワード