開放・閉鎖原則(OCP)とは?かいほう・へいさげんそく
開放・閉鎖原則(OCP)とは、機能の拡張に対しては開いており、既存コードの修正に対しては閉じているべきという設計原則。インタフェースや抽象クラスに依存させ、振る舞いの追加を実装クラスの追加で吸収することで、動いているコードへ手を入れずに済ませる。SOLID原則の一つ。
最終更新:2026-10-06
この語が出る過去問を解く →背景
稼働中のシステムでは、既存コードへ手を入れるたびに回帰テストの範囲が広がり、変更コストの大半が検証に消える。要求は必ず増えるという前提に立つなら、増える部分をあらかじめ差し替え可能な形にしておくほうが安い——という判断がこの原則の根拠になる。どこを可変点として抽象化するかは設計者の見立てで、外すと無駄な抽象だけが残る。
具体例
決済処理を「決済手段」インタフェースで受けておけば、クレジットカードに加えてPayPayやコンビニ払いを扱うときも実装クラスを1本足すだけで注文側の呼出しコードは無変更で済み、既存機能の回帰テストも要らない。
試験での引っ掛け
「拡張に閉じ、修正に開く」と向きを入れ替えた選択肢が定番。加えて、あらゆる箇所を抽象化すれば守れるわけではなく、変わらない部分まで拡張点にすると読みにくさだけが増える。実際に変化する軸を見極めて適用する原則である点も押さえる。
関連用語
出た過去問
出典:令和7年度 春期 システムアーキテクト試験 午前Ⅱ 問2(IPA)
オブジェクト指向設計における設計原則の説明のうち,開放・閉鎖原則のものはどれか。
正解:モジュールは,機能の追加や変更が可能であって,その影響を他のモジュールに及ぼしてはならない。
要点:拡張には開き修正には閉じるのが開放・閉鎖原則
開放・閉鎖原則(Open-Closed Principle)は、モジュールは機能の拡張に対しては開いており、既存コードの修正に対しては閉じているべきだという原則である。抽象に依存する構造にしておけば、新しい振る舞いは実装の追加で対応でき、既存モジュールに手を入れずに済むため、変更の影響が他へ波及しない。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。