認知負荷
開発者がコードを理解 / 変更するために必要な精神的な労力の量
認知負荷とは
認知負荷 (Cognitive Load) は、開発者がコードを理解 / 変更するために必要な精神的な労力の量である。認知負荷が高いコードは、バグが生まれやすく、変更に時間がかかり、新メンバーのオンボーディングが遅くなる。
3 種類の認知負荷
下の表の 3 種類のうち、内在的な負荷は扱う問題で決まり、外在的な負荷はコードの書き方や構成で増減する。
| 種類 | 説明 | 例 |
|---|---|---|
| 内在的 (Intrinsic) | 問題自体の複雑さ | 分散トランザクション、暗号化 |
| 外在的 (Extraneous) | 不要な複雑さ | 悪い命名、過度な抽象化 |
| 学習的 (Germane) | 理解を深める負荷 | 新しいパターンの学習 |
認知負荷が高いコードの特徴
下の 2 つは同じ意図の処理で、違いは名前と定数の書き方、処理を 1 つの式に詰めるか分けるかにある。
// ❌ 認知負荷が高い: 何をしているか分からない
const r = d.filter(x => x.s === 'A' && x.t > Date.now() - 86400000)
.reduce((a, c) => ({...a, [c.g]: [...(a[c.g] || []), c]}), {});
// ✅ 認知負荷が低い: 読めば分かる
const activeItems = data.filter(item =>
item.status === 'active' && item.timestamp > oneDayAgo
);
const groupedByCategory = groupBy(activeItems, 'category');
認知負荷を下げる方法
方法には、明確な命名 (変数名 / 関数名から意図が分かる)、小さな関数 (1 つの関数が 1 つのことだけ行う)、早期リターン (ネストを浅く保つ)、型による制約 (TypeScript の型で不正な状態を表せないようにする)、コロケーション (関連するコードを近くに配置) がある。
Team Topologies と認知負荷
Team Topologies (Matthew Skelton, Manuel Pais) では、チームの認知負荷を設計の制約として扱う。
❌ 1 チームが巨大なモノリスを担当 → 認知負荷が限界を超える
✅ チームごとに独立したサービスを担当 → 認知負荷が管理可能
チームが担当するサービスの数と複雑さを、チームの認知負荷の上限内に収める。
マイクロサービスと認知負荷
モノリスはコードベース全体の理解が必要。マイクロサービスは個々のサービスは小さいが、サービス間の連携が複雑になる。モジュラーモノリスはモジュール境界で認知負荷を分けつつ、デプロイの単位は 1 つのままにできる。
コードレビューでの認知負荷
PR が大きいとレビュアーの認知負荷が高くなる。Google のコードレビューの指針は、大きさに厳密な決まりは無いとしつつ、100 行ほどを妥当な大きさ、1,000 行ほどを大きすぎる目安に挙げ、判断はレビュアーに委ねている (2026 年 10 月時点)。
認知負荷を扱う関連書籍も多い。
この記事は役に立ちましたか?
関連用語
コードの不吉な匂い
リファクタリングが必要であることを示唆するコード上の兆候や構造的な問題のパターン
KISS 原則
Keep It Simple, Stupid - 設計をできるだけシンプルに保つことを求める原則
バス係数 (バスファクター) とは - 属人化リスクの目安と上げ方
バス係数 (Bus Factor) とは、チームの何人が突然離脱したらプロジェクトが停止するかを示す指標。バスファクターやトラックナンバーとも呼ばれる。数値ごとのリスクの目安、属人化の兆候、ペアプログラミングやドキュメント化で係数を上げる方法を解説。
モジュラーモノリス
モノリスの内部をモジュールに分割し、マイクロサービスの利点を取り入れたアーキテクチャ
マイクロサービス
1 つの大きなアプリケーションを複数の小さなサービスに分割し、それぞれが独立してデプロイ / スケール可能な状態で協調動作するアーキテクチャパターン
モノリス
全機能を 1 つのデプロイ単位にまとめたアーキテクチャで、シンプルだが大規模化で課題が生じる
関連する記事
技術書のレビュアーになる方法 - 出版前の本を読む特権
技術書のレビュアー (査読者) になるための 3 つのルートと、良いレビューの書き方、レビュアーとしての心構えを紹介します。
Pull Request が通らない人に足りないのは、たいてい語彙力
コードレビューで指摘が多い人に共通する「設計の語彙力不足」という問題と、技術書で語彙力を効率的に増やす方法を解説します。
Amazon レビュー星 5 でも合わない本がある - 技術書選びの落とし穴
Amazon で星 5 の技術書でも、自分には合わないことがあります。レビュー評価だけで本を選ぶリスクと、自分のレベルに合った技術書を見つける 4 つの判断基準を紹介します。