Web制作、Web開発の歩き方

分かりやすいコードの書き方

第7話:テストがしやすいコード

(最終更新日:2025.4.23)


分かりやすいコード

この記事は5分で読めます!
(絵が小さい場合はスマホを横に)

テストしやすいコードに!

コードが分かりにくい、読みにくい、変更しづらい。 そんな悩みを解決するための一つの基準が「テストしやすいコードかどうか」である。 テストがしやすいコードとは、外部に依存せず、単独で動作確認ができるコードだ。 これはそのまま「読みやすく、再利用しやすく、壊れにくいコード」にもつながる。 今回は「テストしやすさ」から見た分かりやすいコードの条件について解説する。



1.テストしやすいコードは分かりやすいコード

なぜ「テストしやすいコードは分かりやすいコードなのか」。 これは、テストしやすいコードは下記の4つの特徴を持っているからである。 つまり「テストしやすい=構造が明快で、責任が分かれている」ということだ。 これはそのまま、可読性・保守性・拡張性の高さに直結する。

  • 目的が明確 :テストの対象がはっきりしている
  • 副作用が少ない:テスト中に外部の影響を受けにくい
  • 単独で動く:外部環境や状態に依存しない
  • 関数が小さい: テスト範囲を限定しやすい

このことを踏まえて、次のテストしやすいコードを書くポイントを見ていこう。

2.テストしやすいコードを書くポイント

テストをしやすいコードには3つのポイントがある。 「依存性を減らす」「モックやダミーを使う」「ユニットテストが書きやすい関数設計」である。 それぞれ順番に見ていこう。

2.1 依存性を減らす(ロジックを分離する)
まずは「依存性を減らす」だ。 下記は「依存性を減らす」ための悪い例と良い例になる。 悪い例ではデータベースに接続してしまうので単体テストが難しい。

悪い例

次に良い例だ。データ取得処理を外から注入できる。この方法だと、テストはモック関数を渡せる。 単体でテストがしやすくなる。

良い例

2.2 モックやダミーを使う
外部のAPIやDBに依存している関数は、テスト時に仮の関数(モック)を差し替えることで検証可能になる。 下記はモック関数の例になる。これにより、本物のデータベースを使わなくても、安全、簡単にテストができる。 user_idが123の時のユーザー名を返す。

モック関数を使った例

2.3 ユニットテストが書きやすい関数の設計
関数の責任が1つだけで、入力から出力の意図が明確なら、テストは簡単だ。 下記は、その例になる。単純に価格に税率をかけて税込の値段にしている。 そして、関数自体が状態を持っていないので、テストがしやすい。

テストがしやすいコードの例

3.テストがしにくいコードとしやすいコードの比較

最後に、テストがしにくいコードとしやすいコードの比較を挙げる。 次のようにまとめられる。外部依存が少なく、責任の範囲が1つで、副作用を持たない。 再現性が高く、テストコードが書きやすいというものだ。

テストしやすい、しにくいコードの比較

項目 テストしにくいコード テストしやすいコード
外部依存 直接DBやAPIを呼び出す 処理を外から注入できる
関数の責任 複数の処理が混在 単一の責務に絞っている
副作用 グローバル変数を変更 副作用を持たない
再現性 環境に依存して結果が変わる 常に同じ入力で同じ結果が出る
テストコード 書くのが難しい 簡単に書けてすぐ実行できる

4.まとめ

今回、テストがしやすいコードは、設計がシンプルで読みやすいことが分かった。 加えて、外部依存を避けてそれ単体で意味が成立する、テストできるようにすることが重要だ。 そのためには、モックやダミーを使うことが必要だということも分かった。 今回のようなコードを書くことを心がけることで、可読性・保守性・信頼性のすべてが上がるはずだ。

▼参考図書、サイト

 「リーダブルコード」 Dustin Boswell、Trevor Foucher 著、角 征典 訳 オライリー