0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SOLID原則①】単一責任の原則(SRP)を初心者向けにやさしく解説【TypeScript】

Last updated at Posted at 2026-01-14

1. はじめに

「ちょっと修正しただけなのに、別のところが壊れた…」
そんな経験はありませんか?😢

それ、1つのクラス(または関数)がやりすぎているのが原因かもしれません。

この記事では、SOLID原則の1つ目
単一責任の原則(Single Responsibility Principle / SRP)
初心者向けに「考え方」から解説します。

📌 TypeScriptのコードも使いますが、
理解のための補助として最小限にしています。

2. この記事でわかること

  • 単一責任の原則とは何か
  • なぜ「責任を1つにする」必要があるのか
  • SRPを意識すると何が嬉しいのか
  • TypeScriptでの簡単な例

3. 単一責任の原則とは?

一言でいうと、こうです。

「1つのクラスや関数などは、1つの役割(責任)だけを持つべき」

…と言われても、ちょっと抽象的ですよね 🤔
なので、まずは「なぜ必要なのか」から考えてみましょう。

4. そもそも「責任が多い」と何が困る?

次のようなクラスを想像してみてください。

class UserService {
  createUser(name: string) {
    // ユーザーを作成する
  }

  sendWelcomeEmail() {
    // 登録完了メールを送信する
  }

  saveToFile() {
    // ユーザー情報をファイルに保存する
  }
}

このクラス、何をしているでしょうか?

  • ユーザー作成
  • メール送信
  • ファイル保存

……ちょっとやりすぎですよね 😅

何が問題なのか?

このクラスには、変更される理由がいくつもあります。

  • メールの仕様が変わった

  • 保存先がDBに変わった

  • ユーザー作成のルールが変わった

📌 どれか1つが変わるだけで、このクラスを修正する必要がある

これが続くと、

  • 修正が怖い
  • テストが大変
  • バグが入りやすい

という状態になります。

5. SRPの本当の意味

単一責任の原則で大事なのは、

「変更される理由は1つだけか?」

という視点です。

  • 「メソッドが1つだけ」
  • 「ファイルが小さい」

という意味ではありません ⚠️

:relaxed: 改善してみる

では、役割ごとに分けてみましょう。

class UserCreator {
  create(name: string) {
    // ユーザーを作成する
  }
}

class EmailService {
  sendWelcome() {
    // 登録完了メールを送信する
  }
}

class UserRepository {
  save() {
    // ユーザー情報を保存する
  }
}

それぞれのクラスは、

  • 何をするクラスか
  • 何が変わったら修正が必要か

がはっきりしています 👍

6. SRPを意識すると何が嬉しい?

  • 修正の影響範囲が小さくなる
  • クラスの名前を見ただけで役割がわかる
  • テストが書きやすくなる
  • チーム開発でも理解しやすい

📌 「読む人にやさしいコード」 になるのが最大のメリットです。

7. まとめ

  • 単一責任の原則は「責任を1つにしよう」という考え方
  • ポイントは「変更理由が1つかどうか」

最初から完璧に守らなくてOK

迷ったら 「このクラス、何担当?」 と自分に聞く

次回予告

次回はオープン・クローズドの原則 を解説します。

「新機能を追加するたびに、if文が増えていく…」

そんな悩みを解決する考え方です 💡
ぜひ続けて読んでみてください!

8. おわりに

最後まで読んでいただきありがとうございました!🎉

よろしければ他の記事もご覧頂けるとすごくうれしいです。

👍 いいね / 💬 コメントいただけると励みになります!

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?