対象試験と出題頻度
CAP定理のAPは、応用情報技術者で出題されるテーマです。基本情報技術者でもCAP定理そのものが扱われることがあり、3つの性質のうちどの2つを優先するかという観点で問われます。
CAP定理の3類型(CA・CP・AP)の中でも、APはNoSQLデータベースの設計思想として頻出です。CPとの違いを正確に区別できるかが得点の分かれ目になります。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★☆☆☆☆
ランクD(発展)参考程度
用語の定義
分散データベースを勉強していると、「APってつまり一貫性を捨てるってこと?それで大丈夫なの?」と引っかかりがちです。
AP(Availability + Partition Tolerance)とは、一言で言うと
「ネットワーク分断が起きても、一貫性を犠牲にして可用性を維持する分散システムの設計方針」
のことです。
イメージとしては、「複数の支店を持つ図書館」です。
本店と支店の通信が切れた状態でも、APの図書館は「在庫情報が少し古いかもしれませんが、貸出処理は受け付けます」と営業を続けます。
後から本店と同期が取れたとき、データを整える方針です。
一方、CPの図書館は「最新の在庫が確認できないので、復旧まで貸出停止します」と窓口を閉じます。
📊 APの基本情報
| 項目 | 内容 |
|---|---|
| 正式名称 | Availability + Partition Tolerance |
| 優先する性質 | 可用性(A)と分断耐性(P) |
| 犠牲にする性質 | 一貫性(C:Consistency) |
| 代表的な製品 | Cassandra、DynamoDB、CouchDB、Riak |
| 整合性モデル | 結果整合性(Eventual Consistency) |
解説
分散システムでは、複数のサーバーが協調して動きます。サーバー間のネットワークは物理的なものなので、ケーブル断・スイッチ故障・遅延などで「分断(Partition)」が必ず発生します。
このときシステムが取れる選択肢は2つだけです。
「全ノードが最新データを持つまで応答しない(C優先=CP)」か、「古いデータでも返して応答を続ける(A優先=AP)」かです。両立はできません。これがCAP定理が示すトレードオフの正体です。
図解:分断発生時のAPの振る舞い
① 分断発生中:それぞれのノードが応答を返し続ける
|
🖥 ノードA クライアントX が「残高+200円」を書き込み |
⚡ A↔B 通信不可 |
🖥 ノードB クライアントY が「残高-100円」を書き込み |
👉 この時点でA(1200円)とB(900円)はデータが食い違うが、可用性(A)は守られている
⬇
② 分断解消後:レプリカ同士で同期し、最終的に揃う(結果整合性)
|
🖥 ノードA 同期後 → 残高: 1100円 ✅ |
🔄 |
🖥 ノードB 同期後 → 残高: 1100円 ✅ |
ポイント:分断中は一貫性(C)を犠牲にしてでも応答を止めない。これが「A(可用性)+ P(分断耐性)」の選択。一貫性は事後の同期で取り戻す(=結果整合性)。
CP・CAとの比較
| 分類 | 優先する性質 | 代表例 | 適した用途 |
|---|---|---|---|
| AP | 可用性+分断耐性 | Cassandra、DynamoDB | SNS、ECのカート、ログ収集 |
| CP | 一貫性+分断耐性 | HBase、MongoDB(既定) | 金融取引、在庫管理 |
| CA | 一貫性+可用性 | RDBMS(単一ノード) | 分散しない従来型DB |
APは「結果整合性」と相性が良く、書き込みは即座に成功させ、レプリカ間の差分は時間をかけて埋めていきます。SNSの「いいね」が一瞬反映されないことがあっても許容できる場面では、APの設計が合理的です。
💡 APの核心を3行で
・分断時に「一貫性を諦め、応答を続ける」設計方針
・代表例はCassandra、DynamoDBなどのNoSQL
・整合性は後追いで揃える「結果整合性」モデルを採用
では、この用語が試験でどのように出題されるか見ていきましょう。
試験ではこう出る!
APは応用情報技術者でCAP定理の文脈とともに出題されます。単独で「APとは何か」を問うより、3つの分類(AP・CP・CA)のうち適切なものを選ばせる形式が中心です。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| AP R元秋 午前 問28 |
CAP定理の説明として適切なものを選ぶ問題。 | ・3要素のうち同時に保証できるのは2つまで ・APは「一貫性を諦める」が要点 |
| AP H29春 午前 問28 |
分散DBの整合性モデルに関する出題。 | ・結果整合性=APと結びつける ・即時の一貫性とは異なる点を区別 |
📝 出題パターンとひっかけ
パターン1:「APの説明として正しいものを選べ」
キーワードは「ネットワーク分断時も応答を返す」「結果整合性」「Cassandra・DynamoDB」。ひっかけ選択肢には「常に最新のデータを返す」(CPの説明)や「分散しないシステム」(CAの説明)が混じります。
パターン2:「ユースケースに合うのはどれか」
「金融取引」と書かれていればCP、「SNSの投稿」「ECサイトのカート」と書かれていればAPが妥当です。問題文の業務特性から逆算する形で選ばせます。
頻出度はDなので、ここまででOKです。BASE特性やPACELC定理など派生理論への深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. CAP定理における「AP」の説明として、最も適切なものはどれでしょうか?
- A. ネットワーク分断発生時、データの一貫性を保つために応答を停止し、全ノードが最新値を持つまで書き込みを受け付けない方針である。
- B. ネットワーク分断発生時、一貫性を一時的に犠牲にしてでも応答を返し続け、後から結果整合性でデータを揃える方針である。
- C. ネットワーク分断が発生しないことを前提として、一貫性と可用性のみを保証する単一ノード型のデータベース設計方針である。
正解と解説を見る
正解:B
解説:
APは可用性(Availability)と分断耐性(Partition Tolerance)を優先し、一貫性(Consistency)を犠牲にする方針です。分断中も応答を返し続け、整合性は事後の同期で回復させる「結果整合性」モデルが特徴です。
選択肢AはCPの説明です。一貫性を最優先するため、分断時には応答を止めてでもデータの正しさを守ります。金融取引のように「古いデータを返すくらいなら止める」業務に向きます。選択肢CはCAの説明です。分断耐性を持たないため分散環境では成立せず、実質的に単一ノードのRDBMSを指します。
よくある質問(FAQ)
Q. APを採用すると、データが永久に食い違ったままになりませんか?
なりません。APは「結果整合性」を採用しており、分断が解消した後にレプリカ同士で差分を交換し、最終的にすべてのノードが同じ状態に収束します。差分解消の手法にはベクタークロック、Last-Write-Wins、CRDTなどがあり、Cassandraは前者2つを、Riakの一部機能はCRDTを採用しています。試験範囲では「最終的に揃う」とだけ覚えれば十分です。
Q. BASE特性とAPはどう関係しますか?
BASE特性(Basically Available, Soft state, Eventual consistency)は、APの設計思想を実装レベルで表した特性です。RDBMSのACID特性と対比される概念で、NoSQL系のAP型データベースが共通して持つ性質を指します。試験で「結果整合性」「BASE」というキーワードが出てきたら、ほぼAPの文脈と判断して問題ありません。
Q. AmazonのECサイトはAPですか、CPですか?
用途によって使い分けています。商品カタログやレコメンド、カート機能はDynamoDBなどAP型のサービスを使い、応答性を最優先します。一方、決済処理や在庫の最終確定は強い一貫性が必要なため、CP寄りの仕組み(Aurora、トランザクション付きDynamoDB)を組み合わせます。一つのサービスでも、機能ごとにAPとCPを使い分けるのが現代的な設計です。
Q. CAP定理は今でも通用する理論ですか?
基本的な枠組みとしては今も有効ですが、提唱者のEric Brewer自身が2012年に「3つから2つを選ぶ」という単純な解釈は誤解を招くと述べています。現実の分散システムは分断が起きていない通常時はCもAも両立でき、分断時のみトレードオフが顕在化します。この点を精緻化したのがPACELC定理ですが、応用情報の試験範囲では従来のCAP定理の理解で十分です。