単一責任原則( SRP )は、「モジュールは 1 つのアクターにのみ責任を負うべきである」というコンピュータ プログラミングの原則です。[1]アクターという用語は、モジュールの変更を必要とするグループ (1 人以上の利害関係者またはユーザーで構成) を指します。
この用語の考案者であるロバート・C・マーティンは、この原則を「クラスには変更する理由が 1 つだけあるべき」と表現しています。[2]「理由」という言葉をめぐる混乱のため、彼は後に「単一責任の原則」というブログ記事でその意味を明確にしました。この投稿でマーティンは関心の分離について言及し、「単一責任の原則の別の言い方は、同じ理由で変更されるものをまとめる。異なる理由で変更されるものを分離する」と述べています。[3]彼はまた、講演の中で、この原則は特に役割やアクターに関するものだと主張しています。たとえば、会計士の役割はデータベース管理者の役割とは異なりますが、同じ人物である可能性があります。したがって、各モジュールはそれぞれの役割を担当する必要があります。[4]
歴史
この用語は、ロバート・C・マーティンが彼の著書『オブジェクト指向設計の原則』 [5]の一部として記事「OODの原則」で導入し、2003年に出版された彼の著書『アジャイルソフトウェア開発、原則、パターン、および実践』[6]で広く知られるようになりました。マーティンはこれを、トム・デマルコが著書『構造化分析とシステム仕様』[7]で、メイリル・ペイジ・ジョーンズが『構造化システム設計の実践ガイド』 [8]で述べた凝集性の原則に基づいていると説明しました。マーティンは2014年に「単一責任の原則」と題したブログ記事を公開し、「変更の理由」というフレーズの意味を明確にすることを目標としました。[1]
例
Martin は、責任を変更の理由として定義し、クラスまたはモジュールには変更 (書き換えなど) する理由が 1 つだけあるべきであると結論付けています。
例として、レポートをコンパイルして印刷するモジュールを考えてみましょう。このようなモジュールは、2 つの理由で変更される可能性があると考えてください。まず、レポートの内容が変わる可能性があります。次に、レポートの形式が変わる可能性があります。これら 2 つの変更は、異なる原因で発生します。単一責任の原則では、問題のこれら 2 つの側面は実際には 2 つの別々の責任であり、したがって、別々のクラスまたはモジュールにある必要があるとされています。異なる理由で異なるタイミングで変更される 2 つの要素 を組み合わせるのは、不適切な設計です。
クラスを 1 つの関心事に集中させることが重要な理由は、そのクラスをより堅牢にするためです。前述の例を続けると、レポートのコンパイル プロセスに変更があった場合、同じクラスの一部である印刷コードが壊れる危険性が高くなります。
参照
- 責任連鎖パターン
- カップリング(コンピュータプログラミング)
- GRASP(オブジェクト指向設計)
- 情報の隠蔽
- SOLID —「SOLID」の「S」は単一責任の原則を表します
- 関心の分離
参考文献
- ^ Martin, Robert C. (2018). クリーンアーキテクチャ:ソフトウェア構造と設計の職人ガイド。ボストン。ISBN 978-0-13-449432-6. OCLC 1003645626.
{{cite book}}: CS1 メンテナンス: 場所が見つかりません 発行者 (リンク) - ^ Martin, Robert C. (2003). アジャイルソフトウェア開発、原則、パターン、実践。Prentice Hall。p. 95。ISBN 978-0135974445。
- ^ Martin, Robert C. (2014). 「単一責任の原則」. The Clean Code Blog。
- ^ Robert C. Martin (2018)。クリーンアーキテクチャ:ソフトウェア構造と設計の職人ガイド。Prentice Hall。ISBN 978-0-13-449416-6。
- ^ Martin, Robert C. (2005). 「OOD の原則」. butunclebob.com .
- ^ マーティン 2003、95-98 ページ
- ^ デマルコ、トム。 (1979)。構造化分析とシステム仕様。プレンティスホール。ISBN 0-13-854380-1。
- ^ Page-Jones, Meilir (1988).構造化システム設計の実践ガイド。Yourdon Press Computing Series。p. 82。ISBN 978-8120314825。
外部リンク
- 「OOD の原則」ロバート・マーティン著
- 「単一責任原則(2007)」ロバート・マーティン著
- 「単一責任の原則(2014)」ロバート・マーティン著
