---
title: "ACID特性とは？トランザクションの4つの性質をわかりやすく解説【基本情報技術者試験】"
description: "ACID特性を原子性・一貫性・独立性・耐久性の4つに分け、トランザクション処理で「全部実行するか、全く実行しないか」を原子性と判断する視点をFE試験向けに解説します。"
last_modified_at: "2026-07-25"
canonical_url: "https://stemtazoo.github.io/fe/acid-properties/"
section: "fe"
---

## まず結論

ACID特性とは、**データベースのトランザクション処理を安全に行うための4つの性質**です。

基本情報技術者試験では、次のように切り分けると判断しやすくなります。

| 性質 | 英語 | 判断の合図 |
|---|---|---|
| 原子性 | Atomicity | 全部実行するか、全く実行しない |
| 一貫性 | Consistency | データの矛盾を残さない |
| 独立性 | Isolation | 同時に実行しても互いに影響しない |
| 耐久性 | Durability | 確定した結果が失われない |

FE試験では、**完全に行うか、全く処理しなかったように取り消す** とあれば、**原子性**を選びます。

## 直感的な説明

ACID特性は、銀行振込の処理で考えると分かりやすいです。

例えば、AさんからBさんへ1万円を振り込む処理を考えます。

このとき、データベースでは少なくとも次のような更新が必要です。

```text
1. Aさんの残高を1万円減らす
2. Bさんの残高を1万円増やす
```

ここで大事なのは、単に「処理が動くこと」ではありません。  
**正しく、安全に終わること**です。

### 原子性：途中で止まった状態を残さない

Aさんの残高だけ減って、Bさんの残高が増えないと困ります。

そのため、振込処理は、

```text
全部成功する
または
全部取り消す
```

のどちらかで終わる必要があります。

これが **原子性** です。

### 一貫性：データのルールを崩さない

振込の前後で、データベースのルールが崩れてはいけません。

例えば、

```text
口座残高がマイナスにならない
口座番号が存在する
入出金の合計が不自然にずれない
```

といったルールを守る必要があります。

このように、処理の前後でデータの整合性を保つ性質が **一貫性** です。

### 独立性：同時に処理しても結果がおかしくならない

同じ口座に対して、ATM、ネットバンキング、窓口処理が同時に動くことがあります。

そのとき、処理が互いに割り込んで、残高計算がずれてはいけません。

同時に実行しても、順番に処理した場合と同じ結果になるようにする性質が **独立性** です。

### 耐久性：確定した結果を失わない

振込が完了し、コミットされたあとにシステム障害が起きたとします。

それでも、確定した振込結果は失われてはいけません。

このように、正常終了した処理結果を障害後も残す性質が **耐久性** です。

ACID特性は、4つを別々に丸暗記するより、  
**1つの振込処理を安全に終わらせるための条件** として見ると覚えやすいです。

## 定義・仕組み

トランザクションとは、データベースに対する一連の処理を、ひとまとまりの単位として扱う考え方です。

例えば、振込処理では「出金」と「入金」を別々の処理としてではなく、1つのトランザクションとして扱います。

```text
トランザクション開始
  Aさんの残高を減らす
  Bさんの残高を増やす
コミット
```

すべての処理を確定することを **コミット** といいます。

途中で問題が起きたときに、処理前の状態へ戻すことを **ロールバック** といいます。

```text
成功した場合：コミットして確定
失敗した場合：ロールバックして取り消し
```

ACID特性は、このトランザクションを安全に扱うための基本的な性質です。

| 性質 | 何を守る？ | 例 |
|---|---|---|
| 原子性 | 処理を中途半端に残さない | 出金だけ成功した状態を残さない |
| 一貫性 | データのルールを守る | 残高や口座情報に矛盾を残さない |
| 独立性 | 同時実行の影響を防ぐ | 複数の振込が同時でも残高を正しく扱う |
| 耐久性 | 確定結果を失わない | コミット後の振込結果を障害後も残す |

このテーマは、基本情報技術者試験の「データベース」と関係する内容です。公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できます。

## 科目Aでどう出る？

科目Aでは、ACID特性の説明文から、どの性質かを選ぶ問題が出やすいです。

特に、次の対応を押さえると選択肢を切りやすくなります。

| 問題文の表現 | 選ぶ性質 |
|---|---|
| 完全に行う、または全く行わない | 原子性 |
| 途中まで実行された状態を残さない | 原子性 |
| データの矛盾が生じない | 一貫性 |
| 整合性が保たれる | 一貫性 |
| 同時に実行しても結果が等しい | 独立性 |
| 順番に実行した場合と同じ結果になる | 独立性 |
| 障害が発生しても確定結果が失われない | 耐久性 |
| コミット後の結果を保持する | 耐久性 |

FE試験の選択肢では、

```text
更新処理を完全に行うか、
全く処理しなかったかのように取り消す
```

とあります。

これは、処理を中途半端に残さない性質です。

したがって、判断すべき性質は **原子性** です。

## どんな場面で使う？

問題文では、ACID特性の名前を直接選ぶよりも、トランザクション処理の流れを読ませる形で出ることがあります。

見るポイントは、次の3つです。

```text
1. どこからどこまでが1つの処理か
2. 失敗したときにロールバックするか
3. 成功したあとにコミットするか
```

例えば、次のような処理を考えます。

```text
トランザクション開始
  在庫数を減らす
  注文履歴を追加する
  請求情報を登録する
コミット
```

途中で請求情報の登録に失敗した場合、在庫数だけ減った状態を残すと困ります。

この場合は、在庫数の更新や注文履歴の追加も含めて、処理全体を取り消す必要があります。

```text
途中で失敗
  → ロールバック
  → 処理前の状態に戻す
```

この読み方は、原子性の理解とつながります。

また、同じ商品に複数の注文が同時に入る場合は、在庫数の更新が互いにずれないようにする必要があります。

これは独立性の考え方と関係します。

問題文では、用語名を覚えるだけでなく、
**処理の途中で何が確定し、何が取り消されるか** を追うことが大切です。

## よくある誤解・混同

### 誤解1：原子性と一貫性を同じだと思ってしまう

原子性は、処理を **全部やるか、全部やらないか** です。

一貫性は、処理の前後で **データのルールや整合性を崩さない** ことです。

| 性質 | 見るポイント |
|---|---|
| 原子性 | 中途半端に処理が残っていないか |
| 一貫性 | データに矛盾が残っていないか |

FE試験で「完全に行う」「全く処理しなかったように取り消す」とあれば、原子性です。

### 誤解2：独立性を「別々のシステムで動くこと」と考える

独立性は、システムが別々という意味ではありません。

複数のトランザクションを同時に実行しても、互いに悪い影響を与えない性質です。

```text
同時実行しても
順番に実行した場合と同じ結果になる
```

という表現が出たら、独立性を考えます。

### 誤解3：耐久性をバックアップ全般の話と広く考えすぎる

耐久性は、バックアップ全般を指す言葉ではありません。

ポイントは、**コミットされた結果が失われないこと**です。

障害、停電、システム停止などが出てきても、確定済みの更新結果を保持する話であれば、耐久性です。

### 誤解4：ACIDの順番だけ覚えて満足してしまう

ACIDは、頭文字の順番を覚えるだけでは試験で迷います。

基本情報技術者試験では、説明文から性質を選ぶことが多いので、次の合図で切り分けます。

```text
全部 or なし       → 原子性
矛盾しない         → 一貫性
同時実行でも安全   → 独立性
確定後に消えない   → 耐久性
```

## まとめ（試験直前用）

- ACID特性は、トランザクション処理を安全に行うための4つの性質
- **全部実行するか、全く実行しない** は原子性
- **データの矛盾を残さない** は一貫性
- **同時実行しても互いに影響しない** は独立性
- **コミット後の結果が失われない** は耐久性
