プログラミングの用語一覧へ
このページの目次
プログラミング初級図解あり

トレードオフとは?

読み方:トレードオフ

最終更新:2026/08/18

3秒でわかる

何かを良くすると別の何かが悪くなる関係。速度とメモリ、安全と手軽さのように、設計では必ずどちらを取るかを選ぶことになります。

30秒図解

実行速度とメモリ使用量の優先順位で線形探索やインデックスやキャッシュを選ぶ図
トレードオフには万能な正解がありません。速度、メモリ、安全性など、今回優先する軸を決めて選択します。

もう少し詳しく

どういうものか

トレードオフは、ある指標を良くしようとすると別の指標が悪くなる関係のことです。どちらも同時に最大化はできず、どこで折り合うかを選ぶことになります。技術選定の議論で「どちらが正解か」がいつまでも決まらないとき、その多くは正解が無いトレードオフを正解探しとして扱っているために起きています。

なぜ必要か

この言葉を持っていると、比較の仕方が変わります。良いか悪いかではなく、何を差し出して何を得るのかという形で選択肢を並べられるようになるからです。設計レビューで理由を説明するときにも、速度のためにメモリを使うと決めた、と言えれば後任にも意図が伝わります。数年後に前提が変わったとき、当時の判断を安全に覆せるのは、この交換条件が書き残されている場合だけです。

具体例

データベースインデックスが分かりやすい例です。

-- 検索を速くするためにインデックスを張る CREATE INDEX idx_orders_user_id ON orders(user_id); -- 得るもの user_id での検索が全件走査から木の探索になる -- 失うもの INSERT と UPDATE のたびに索引の更新が入り書き込みが遅くなる -- 索引そのものがディスクを消費する

同じ形はどこにでも現れます。キャッシュを持てば表示は速くなり、代わりに古いデータが出るリスクを抱えます。を厳しくすれば実行時のバグは減り、代わりに書く量が増えます。マイクロサービスに分ければ独立して直せるようになり、代わりに通信と運用の複雑さが増えます。

つまずきやすいところ

トレードオフだと言えばどんな選択も正当化できてしまう、という落とし穴があります。何を失うのかを具体的に書かないまま交換条件だと主張する説明は、判断の根拠になりません。実際には、片方が明確に優れていて交換条件が存在しない場面も多くあります。たとえばパスワードの平文保存に速度という利点はありません。もうひとつは、測らずに交換してしまうことです。速度のためにコードを複雑にしたのに、実測すると遅かったのは別の箇所だった、という手戻りは珍しくありません。交換するなら先に測ります。

似た用語との違い

意味
トレードオフ一方を取ると他方を失う関係
ボトルネック全体の性能を決めている最も遅い箇所
技術的負債早さを優先して後回しにした修正の蓄積


覚え方

「何を差し出したのか」を必ず一緒に言えるかどうかで、判断が理解できているかを確かめられます。速くしたと言うだけでは足りず、何と引き換えに速くしたのかまで言えて初めて、その選択を他人が検証できる状態になります。

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地トレードオフプログラミング

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

この用語を扱うコース

コース

DB設計入門 ER図・正規化・インデックス

47レッスン
コース

コンピューターサイエンス上級:アルゴリズムとデータ構造

50レッスン
コース

エンジニアキャリアの歩き方

30レッスン
SQL・データベースコースの全編を見る