Web制作の現場で活きる!「単一責任の原則」でコードをスッキリと保つ方法

はじめに

Web制作の現場で働くエンジニアの皆様、日々のコーディング業務、お疲れ様です。

「書いたコードが複雑で、後から修正するのが大変…」

「機能を追加しようとしたら、コードのあちこちを修正する羽目になってしまった…」

このような経験はありませんか?

Webサイトは、常に変化するユーザーのニーズやビジネスの状況に合わせて、柔軟に改修していく必要があります。そのため、コードの保守性や拡張性を高めることが非常に重要になってきます。

そこで今回は、Web制作の現場で欠かせない考え方である 「単一責任の原則」 について、具体的な事例を交えながらわかりやすく解説いたします。

単一責任の原則とは?

単一責任の原則とは、1つの関数やクラスといったプログラムの構成要素は、それぞれ1つの責任のみを持つべきであるという原則です。

例えば、ユーザー登録機能を例に考えてみましょう。

ユーザー登録処理を行う際、以下の処理が必要になる場面を想定します。

  1. ユーザーが入力したデータのバリデーション(入力内容のチェック)
  2. バリデーションを通過したデータのデータベースへの登録
  3. 登録完了メールの送信

これらの処理を全て1つの関数にまとめてしまうと、どうなるでしょうか?

// ユーザー登録処理(単一責任の原則に違反している例)
function registerUser() {
  // ユーザーデータの取得
  // バリデーション処理
  // データベースへの登録処理
  // メール送信処理
}

一見シンプルに見えますが、この関数には問題点があります。

  • 関数の役割が不明確: 関数名から、バリデーションやメール送信も行っていることが読み取れません。
  • 修正の影響範囲が大きくなる: バリデーションルールが変わったり、メールの文面を変更したりする際に関数全体に影響が及びます。
  • 再利用性の低下: データベースへの登録処理のみを他の箇所で利用したくても、この関数にはバリデーションやメール送信の処理も含まれてしまっているため、再利用できません。

これらの問題点を解決するのが、単一責任の原則です。

単一責任の原則を適用したコード例

先ほどのユーザー登録処理を、単一責任の原則に基づいて書き直してみましょう。

// ユーザーデータのバリデーション
function validateUserData() {
  // バリデーション処理
}

// ユーザーデータのデータベース登録
function registerUserToDatabase() {
  // データベースへの登録処理
}

// 登録完了メール送信
function sendRegistrationEmail() {
  // メール送信処理
}

// ユーザー登録処理
function registerUser() {
  // ユーザーデータの取得

  // バリデーション
  validateUserData();

  // データベースへの登録
  registerUserToDatabase();

  // メール送信
  sendRegistrationEmail();
}

このように、各関数をそれぞれの役割に特化させることで、以下のメリットが生まれます。

  • コードの可読性向上: 関数名を見れば、その関数が何をしているのかが明確になります。
  • 保守性の向上: 一部の処理を変更する場合でも、影響範囲が限定的になります。
  • 再利用性の向上: 必要に応じて、特定の処理だけを他の箇所で再利用することが可能になります。

まとめ

今回は、Web制作におけるコードの保守性や拡張性を高める上で重要な「単一責任の原則」について解説しました。

単一責任の原則を守ってコードを書くことで、以下のメリットを得られます。

  • コードの可読性が向上し、開発効率が上がる
  • 保守性が向上し、バグ修正などが容易になる
  • 再利用性が向上し、開発コスト削減につながる

「単一責任の原則」は、シンプルながらも非常に重要な原則です。

ぜひ、日々のWeb制作業務に取り入れて、より質の高いWebサイト制作を目指しましょう。

関連記事