対象試験と出題頻度

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円」を書き込み
残高: 1200円 と即時応答 ✅


分断
(Partition)

A↔B 通信不可

🖥 ノードB

クライアントY が「残高-100円」を書き込み
残高: 900円 と即時応答 ✅

👉 この時点で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定理の理解で十分です。