<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=Qt%E3%81%AE%E5%BF%9C%E7%94%A8_-_AWS_DynamoDB</id>
	<title>Qtの応用 - AWS DynamoDB - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=Qt%E3%81%AE%E5%BF%9C%E7%94%A8_-_AWS_DynamoDB"/>
	<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=Qt%E3%81%AE%E5%BF%9C%E7%94%A8_-_AWS_DynamoDB&amp;action=history"/>
	<updated>2026-05-01T06:38:37Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://mochiu.net/index.php?title=Qt%E3%81%AE%E5%BF%9C%E7%94%A8_-_AWS_DynamoDB&amp;diff=13513&amp;oldid=prev</id>
		<title>Wiki: /* 概要 */</title>
		<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=Qt%E3%81%AE%E5%BF%9C%E7%94%A8_-_AWS_DynamoDB&amp;diff=13513&amp;oldid=prev"/>
		<updated>2025-11-18T11:26:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;概要&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2025年11月18日 (火) 20:26時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l24&quot;&gt;24行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;24行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* プライマリキー&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* プライマリキー&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*: パーティションキー (必須) と ソートキー (オプション) で構成&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*: パーティションキー (必須) と ソートキー (オプション) で構成&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AWS DynamoDBは永続的な無料利用枠を提供しており、個人利用や小規模なアプリケーションであれば無料枠内で運用できることが多い。&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AWS DynamoDBは永続的な無料利用枠を提供しており、個人利用や小規模なアプリケーションであれば無料枠内で運用できることが多い。&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mochiu_wiki:diff:1.41:old-13512:rev-13513:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
	<entry>
		<id>https://mochiu.net/index.php?title=Qt%E3%81%AE%E5%BF%9C%E7%94%A8_-_AWS_DynamoDB&amp;diff=13512&amp;oldid=prev</id>
		<title>Wiki: ページの作成:「== 概要 == AWS DynamoDBは、AWSが提供するフルマネージド型のNoSQLデータベースサービスである。&lt;br&gt; キー・バリュー型およびドキュメント型のデータモデルをサポートし、高速で予測可能なパフォーマンスとシームレスなスケーラビリティを実現する。&lt;br&gt; &lt;br&gt; 主な特徴を以下に示す。&lt;br&gt; * フルマネージド *: サーバ管理、ソフトウェアパッチ、セットアッ…」</title>
		<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=Qt%E3%81%AE%E5%BF%9C%E7%94%A8_-_AWS_DynamoDB&amp;diff=13512&amp;oldid=prev"/>
		<updated>2025-11-18T11:24:10Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 == AWS DynamoDBは、AWSが提供するフルマネージド型のNoSQLデータベースサービスである。&amp;lt;br&amp;gt; キー・バリュー型およびドキュメント型のデータモデルをサポートし、高速で予測可能なパフォーマンスとシームレスなスケーラビリティを実現する。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; 主な特徴を以下に示す。&amp;lt;br&amp;gt; * フルマネージド *: サーバ管理、ソフトウェアパッチ、セットアッ…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
AWS DynamoDBは、AWSが提供するフルマネージド型のNoSQLデータベースサービスである。&amp;lt;br&amp;gt;&lt;br /&gt;
キー・バリュー型およびドキュメント型のデータモデルをサポートし、高速で予測可能なパフォーマンスとシームレスなスケーラビリティを実現する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
主な特徴を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
* フルマネージド&lt;br /&gt;
*: サーバ管理、ソフトウェアパッチ、セットアップ不要&lt;br /&gt;
* 高パフォーマンス&lt;br /&gt;
*: 一桁ミリ秒のレスポンスタイム&lt;br /&gt;
* 自動スケーリング&lt;br /&gt;
*: トラフィックに応じて自動的に容量を調整&lt;br /&gt;
* 高可用性&lt;br /&gt;
*: 複数のAZに自動的にデータを複製&lt;br /&gt;
* 柔軟なスキーマ&lt;br /&gt;
*: 各アイテムが異なる属性を持つことが可能&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
AWS DynamoDBのデータモデルを以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
* テーブル&lt;br /&gt;
*: データを格納する最上位のコンテナ&lt;br /&gt;
* アイテム&lt;br /&gt;
*: テーブル内の個々のレコード&lt;br /&gt;
* 属性&lt;br /&gt;
*: アイテムを構成するデータフィールド (カラムに相当)&lt;br /&gt;
* プライマリキー&lt;br /&gt;
*: パーティションキー (必須) と ソートキー (オプション) で構成&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
AWS DynamoDBは永続的な無料利用枠を提供しており、個人利用や小規模なアプリケーションであれば無料枠内で運用できることが多い。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== AWS SDK for C++のインストール ==&lt;br /&gt;
[[Qtの応用_-_AWS|Qtの応用_-_AWS#AWS_SDK_for_C++のインストール]]のページを参照すること。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1件のデータ挿入 : PutItem ==&lt;br /&gt;
テーブルに新しいアイテムを追加する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 // アイテムを挿入&lt;br /&gt;
 Aws::DynamoDB::Model::PutItemRequest putReq;&lt;br /&gt;
 putReq.SetTableName(tableName);&lt;br /&gt;
 putReq.AddItem(&amp;quot;id&amp;quot;, toAttr(1));&lt;br /&gt;
 putReq.AddItem(&amp;quot;name&amp;quot;, toAttr(&amp;quot;Taro Yamada&amp;quot;));&lt;br /&gt;
 putReq.AddItem(&amp;quot;age&amp;quot;, toAttr(30));&lt;br /&gt;
 putReq.AddItem(&amp;quot;email&amp;quot;, toAttr(&amp;quot;taro@example.com&amp;quot;));&lt;br /&gt;
 &lt;br /&gt;
 auto putResult = client.PutItem(putReq);&lt;br /&gt;
 if (putResult.IsSuccess()) {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✓ Item inserted successfully&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✗ Error: &amp;quot; &amp;lt;&amp;lt; QString::fromStdString(putResult.GetError().GetMessage());&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1件のデータ取得 :GetItem ==&lt;br /&gt;
プライマリキーを指定して1件のアイテムを取得する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 // プライマリキーでアイテムを取得&lt;br /&gt;
 Aws::DynamoDB::Model::GetItemRequest getReq;&lt;br /&gt;
 getReq.SetTableName(tableName);&lt;br /&gt;
 getReq.AddKey(&amp;quot;id&amp;quot;, toAttr(1));&lt;br /&gt;
 &lt;br /&gt;
 auto getResult = client.GetItem(getReq);&lt;br /&gt;
 if (getResult.IsSuccess()) {&lt;br /&gt;
    const auto&amp;amp; item = getResult.GetResult().GetItem();&lt;br /&gt;
    if (!item.empty()) {&lt;br /&gt;
       printItem(item);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;Item not found&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✗ Error: &amp;quot; &amp;lt;&amp;lt; QString::fromStdString(getResult.GetError().GetMessage());&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 複数件のデータ取得 : Query ==&lt;br /&gt;
パーティションキーを条件として複数件のアイテムを取得する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 // クエリで複数件取得 (パーティションキーでフィルタ)&lt;br /&gt;
 Aws::DynamoDB::Model::QueryRequest queryReq;&lt;br /&gt;
 queryReq.SetTableName(tableName);&lt;br /&gt;
 queryReq.SetKeyConditionExpression(&amp;quot;id = :value&amp;quot;);&lt;br /&gt;
 queryReq.AddExpressionAttributeValues(&amp;quot;:value&amp;quot;, toAttr(1));&lt;br /&gt;
 &lt;br /&gt;
 // オプション : 取得件数制限&lt;br /&gt;
 queryReq.SetLimit(10);&lt;br /&gt;
 &lt;br /&gt;
 auto queryResult = client.Query(queryReq);&lt;br /&gt;
 if (queryResult.IsSuccess()) {&lt;br /&gt;
    const auto&amp;amp; items = queryResult.GetResult().GetItems();&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;Found&amp;quot; &amp;lt;&amp;lt; items.size() &amp;lt;&amp;lt; &amp;quot;items&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
    for (const auto&amp;amp; item : items) {&lt;br /&gt;
       printItem(item);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✗ Error: &amp;quot; &amp;lt;&amp;lt; QString::fromStdString(queryResult.GetError().GetMessage());&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ソートキー条件を含むクエリ ==&lt;br /&gt;
パーティションキーとソートキーを組み合わせた条件でデータを取得する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 // パーティションキーとソートキーでクエリ&lt;br /&gt;
 Aws::DynamoDB::Model::QueryRequest queryReq;&lt;br /&gt;
 queryReq.SetTableName(tableName);&lt;br /&gt;
 &lt;br /&gt;
 // 例: userId = 100 かつ timestamp &amp;gt; 1234567890&lt;br /&gt;
 queryReq.SetKeyConditionExpression(&amp;quot;userId = :uid AND #ts &amp;gt; :time&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 // 属性名のエイリアス（予約語の場合に使用）&lt;br /&gt;
 queryReq.AddExpressionAttributeNames(&amp;quot;#ts&amp;quot;, &amp;quot;timestamp&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 // 属性値&lt;br /&gt;
 queryReq.AddExpressionAttributeValues(&amp;quot;:uid&amp;quot;, toAttr(100));&lt;br /&gt;
 queryReq.AddExpressionAttributeValues(&amp;quot;:time&amp;quot;, toAttr(1234567890));&lt;br /&gt;
 &lt;br /&gt;
 auto queryResult = client.Query(queryReq);&lt;br /&gt;
 if (queryResult.IsSuccess()) {&lt;br /&gt;
    const auto&amp;amp; items = queryResult.GetResult().GetItems();&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;Found&amp;quot; &amp;lt;&amp;lt; items.size() &amp;lt;&amp;lt; &amp;quot;items&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
    for (const auto&amp;amp; item : items) {&lt;br /&gt;
       printItem(item);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 全件取得 : Scan ==&lt;br /&gt;
テーブル内の全アイテムをスキャンして取得する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Scanは全テーブルスキャンのため、大量データには使用しない。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;Queryを優先すること。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 // テーブル全体をスキャン&lt;br /&gt;
 Aws::DynamoDB::Model::ScanRequest scanReq;&lt;br /&gt;
 scanReq.SetTableName(tableName);&lt;br /&gt;
 &lt;br /&gt;
 // オプション: 取得件数制限&lt;br /&gt;
 scanReq.SetLimit(100);&lt;br /&gt;
 &lt;br /&gt;
 auto scanResult = client.Scan(scanReq);&lt;br /&gt;
 if (scanResult.IsSuccess()) {&lt;br /&gt;
    const auto&amp;amp; items = scanResult.GetResult().GetItems();&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;Found&amp;quot; &amp;lt;&amp;lt; items.size() &amp;lt;&amp;lt; &amp;quot;items&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
    for (const auto&amp;amp; item : items) {&lt;br /&gt;
       printItem(item);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✗ Error: &amp;quot; &amp;lt;&amp;lt; QString::fromStdString(scanResult.GetError().GetMessage());&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== フィルタ条件付きスキャン ==&lt;br /&gt;
スキャン時に特定の条件でフィルタリングする。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 // 条件付きスキャン（例: age &amp;gt; 25）&lt;br /&gt;
 Aws::DynamoDB::Model::ScanRequest scanReq;&lt;br /&gt;
 scanReq.SetTableName(tableName);&lt;br /&gt;
 scanReq.SetFilterExpression(&amp;quot;age &amp;gt; :minAge&amp;quot;);&lt;br /&gt;
 scanReq.AddExpressionAttributeValues(&amp;quot;:minAge&amp;quot;, toAttr(25));&lt;br /&gt;
 &lt;br /&gt;
 auto scanResult = client.Scan(scanReq);&lt;br /&gt;
 if (scanResult.IsSuccess()) {&lt;br /&gt;
    const auto&amp;amp; items = scanResult.GetResult().GetItems();&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;Found&amp;quot; &amp;lt;&amp;lt; items.size() &amp;lt;&amp;lt; &amp;quot;items with age &amp;gt; 25&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
    for (const auto&amp;amp; item : items) {&lt;br /&gt;
       printItem(item);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== データの更新 : UpdateItem ==&lt;br /&gt;
既存のアイテムの属性を更新する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 // アイテムを更新&lt;br /&gt;
 Aws::DynamoDB::Model::UpdateItemRequest updateReq;&lt;br /&gt;
 updateReq.SetTableName(tableName);&lt;br /&gt;
 updateReq.AddKey(&amp;quot;id&amp;quot;, toAttr(1));&lt;br /&gt;
 &lt;br /&gt;
 // 更新式: SET age = 31, email = &amp;quot;new@example.com&amp;quot;&lt;br /&gt;
 updateReq.SetUpdateExpression(&amp;quot;SET age = :newAge, email = :newEmail&amp;quot;);&lt;br /&gt;
 updateReq.AddExpressionAttributeValues(&amp;quot;:newAge&amp;quot;, toAttr(31));&lt;br /&gt;
 updateReq.AddExpressionAttributeValues(&amp;quot;:newEmail&amp;quot;, toAttr(&amp;quot;new@example.com&amp;quot;));&lt;br /&gt;
 &lt;br /&gt;
 auto updateResult = client.UpdateItem(updateReq);&lt;br /&gt;
 if (updateResult.IsSuccess()) {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✓ Item updated successfully&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✗ Error: &amp;quot; &amp;lt;&amp;lt; QString::fromStdString(updateResult.GetError().GetMessage());&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 条件付き更新 ==&lt;br /&gt;
特定の条件を満たす場合のみ更新を実行する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 // 条件付き更新（例: ageが30の場合のみ更新）&lt;br /&gt;
 Aws::DynamoDB::Model::UpdateItemRequest updateReq;&lt;br /&gt;
 updateReq.SetTableName(tableName);&lt;br /&gt;
 updateReq.AddKey(&amp;quot;id&amp;quot;, toAttr(1));&lt;br /&gt;
 &lt;br /&gt;
 updateReq.SetUpdateExpression(&amp;quot;SET age = :newAge&amp;quot;);&lt;br /&gt;
 updateReq.AddExpressionAttributeValues(&amp;quot;:newAge&amp;quot;, toAttr(31));&lt;br /&gt;
 &lt;br /&gt;
 // 条件式&lt;br /&gt;
 updateReq.SetConditionExpression(&amp;quot;age = :currentAge&amp;quot;);&lt;br /&gt;
 updateReq.AddExpressionAttributeValues(&amp;quot;:currentAge&amp;quot;, toAttr(30));&lt;br /&gt;
 &lt;br /&gt;
 auto updateResult = client.UpdateItem(updateReq);&lt;br /&gt;
 if (updateResult.IsSuccess()) {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✓ Conditional update succeeded&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    if (updateResult.GetError().GetErrorType() == Aws::DynamoDB::DynamoDBErrors::CONDITIONAL_CHECK_FAILED) {&lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;Condition not met - update skipped&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;✗ Error: &amp;quot; &amp;lt;&amp;lt; QString::fromStdString(updateResult.GetError().GetMessage());&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== データの削除 : DeleteItem ==&lt;br /&gt;
プライマリキーを指定してアイテムを削除する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 // アイテムを削除&lt;br /&gt;
 Aws::DynamoDB::Model::DeleteItemRequest delReq;&lt;br /&gt;
 delReq.SetTableName(tableName);&lt;br /&gt;
 delReq.AddKey(&amp;quot;id&amp;quot;, toAttr(1));&lt;br /&gt;
 &lt;br /&gt;
 auto delResult = client.DeleteItem(delReq);&lt;br /&gt;
 if (delResult.IsSuccess()) {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✓ Item deleted successfully&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✗ Error: &amp;quot; &amp;lt;&amp;lt; QString::fromStdString(delResult.GetError().GetMessage());&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 条件付き削除 ==&lt;br /&gt;
特定の条件を満たす場合のみ削除を実行する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 // 条件付き削除&lt;br /&gt;
 // 例: statusが&amp;quot;inactive&amp;quot;の場合のみ削除&lt;br /&gt;
 Aws::DynamoDB::Model::DeleteItemRequest delReq;&lt;br /&gt;
 delReq.SetTableName(tableName);&lt;br /&gt;
 delReq.AddKey(&amp;quot;id&amp;quot;, toAttr(1));&lt;br /&gt;
 &lt;br /&gt;
 delReq.SetConditionExpression(&amp;quot;#status = :statusValue&amp;quot;);&lt;br /&gt;
 delReq.AddExpressionAttributeNames(&amp;quot;#status&amp;quot;, &amp;quot;status&amp;quot;);&lt;br /&gt;
 delReq.AddExpressionAttributeValues(&amp;quot;:statusValue&amp;quot;, toAttr(&amp;quot;inactive&amp;quot;));&lt;br /&gt;
 &lt;br /&gt;
 auto delResult = client.DeleteItem(delReq);&lt;br /&gt;
 if (delResult.IsSuccess()) {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✓ Conditional delete succeeded&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    if (delResult.GetError().GetErrorType() == &lt;br /&gt;
       Aws::DynamoDB::DynamoDBErrors::CONDITIONAL_CHECK_FAILED) {&lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;Condition not met - delete skipped&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== バッチ書き込み : BatchWriteItem ==&lt;br /&gt;
複数のアイテムを1度に挿入または削除する。&amp;lt;br&amp;gt;&lt;br /&gt;
BatchWriteItemは最大25件まで1度に処理可能である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 #include &amp;lt;aws/dynamodb/model/BatchWriteItemRequest.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;aws/dynamodb/model/WriteRequest.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 // バッチ書き込み&lt;br /&gt;
 Aws::DynamoDB::Model::BatchWriteItemRequest batchReq;&lt;br /&gt;
 &lt;br /&gt;
 // 複数のPutRequestを作成&lt;br /&gt;
 std::vector&amp;lt;Aws::DynamoDB::Model::WriteRequest&amp;gt; writeRequests;&lt;br /&gt;
 &lt;br /&gt;
 for (int i = 1; i &amp;lt;= 5; i++) {&lt;br /&gt;
    Aws::DynamoDB::Model::PutRequest putRequest;&lt;br /&gt;
    Aws::Map&amp;lt;Aws::String, Aws::DynamoDB::Model::AttributeValue&amp;gt; item;&lt;br /&gt;
    item[&amp;quot;id&amp;quot;] = toAttr(i);&lt;br /&gt;
    item[&amp;quot;name&amp;quot;] = toAttr(QString(&amp;quot;User %1&amp;quot;).arg(i));&lt;br /&gt;
    item[&amp;quot;age&amp;quot;] = toAttr(20 + i);&lt;br /&gt;
    putRequest.SetItem(item);&lt;br /&gt;
 &lt;br /&gt;
    Aws::DynamoDB::Model::WriteRequest writeReq;&lt;br /&gt;
    writeReq.SetPutRequest(putRequest);&lt;br /&gt;
    writeRequests.push_back(writeReq);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 batchReq.AddRequestItems(tableName, writeRequests);&lt;br /&gt;
 &lt;br /&gt;
 auto batchResult = client.BatchWriteItem(batchReq);&lt;br /&gt;
 if (batchResult.IsSuccess()) {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✓ Batch write completed&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
    // 未処理のアイテムがあるか確認&lt;br /&gt;
    const auto&amp;amp; unprocessed = batchResult.GetResult().GetUnprocessedItems();&lt;br /&gt;
    if (!unprocessed.empty()) {&lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;Warning: Some items were not processed&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✗ Error: &amp;quot; &amp;lt;&amp;lt; QString::fromStdString(batchResult.GetError().GetMessage());&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== バッチ読み込み : BatchGetItem ==&lt;br /&gt;
複数のアイテムを1度に取得する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 #include &amp;lt;aws/dynamodb/model/BatchGetItemRequest.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;aws/dynamodb/model/KeysAndAttributes.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 // バッチ取得&lt;br /&gt;
 Aws::DynamoDB::Model::BatchGetItemRequest batchGetReq;&lt;br /&gt;
 Aws::DynamoDB::Model::KeysAndAttributes keysAndAttrs;&lt;br /&gt;
 &lt;br /&gt;
 // 取得したいキーのリストを作成&lt;br /&gt;
 std::vector&amp;lt;Aws::Map&amp;lt;Aws::String, Aws::DynamoDB::Model::AttributeValue&amp;gt;&amp;gt; keys;&lt;br /&gt;
 for (int i = 1; i &amp;lt;= 3; i++) {&lt;br /&gt;
    Aws::Map&amp;lt;Aws::String, Aws::DynamoDB::Model::AttributeValue&amp;gt; key;&lt;br /&gt;
    key[&amp;quot;id&amp;quot;] = toAttr(i);&lt;br /&gt;
    keys.push_back(key);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 keysAndAttrs.SetKeys(keys);&lt;br /&gt;
 batchGetReq.AddRequestItems(tableName, keysAndAttrs);&lt;br /&gt;
 &lt;br /&gt;
 auto batchGetResult = client.BatchGetItem(batchGetReq);&lt;br /&gt;
 if (batchGetResult.IsSuccess()) {&lt;br /&gt;
    const auto&amp;amp; responses = batchGetResult.GetResult().GetResponses();&lt;br /&gt;
 &lt;br /&gt;
    for (const auto&amp;amp; tablePair : responses) {&lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;Table:&amp;quot; &amp;lt;&amp;lt; QString::fromStdString(tablePair.first);&lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;Items count:&amp;quot; &amp;lt;&amp;lt; tablePair.second.size();&lt;br /&gt;
 &lt;br /&gt;
       for (const auto&amp;amp; item : tablePair.second) {&lt;br /&gt;
          printItem(item);&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✗ Error: &amp;quot; &amp;lt;&amp;lt; QString::fromStdString(batchGetResult.GetError().GetMessage());&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ページネーション (継続トークン) ==&lt;br /&gt;
大量のデータを取得する際に、ページネーションを使用して分割取得する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 // ページネーション付きスキャン&lt;br /&gt;
 Aws::DynamoDB::Model::ScanRequest scanReq;&lt;br /&gt;
 scanReq.SetTableName(tableName);&lt;br /&gt;
 scanReq.SetLimit(10);  // 1ページあたり10件&lt;br /&gt;
 &lt;br /&gt;
 Aws::Map&amp;lt;Aws::String, Aws::DynamoDB::Model::AttributeValue&amp;gt; lastKey;&lt;br /&gt;
 int pageNum = 1;&lt;br /&gt;
 &lt;br /&gt;
 do {&lt;br /&gt;
    if (!lastKey.empty()) {&lt;br /&gt;
       scanReq.SetExclusiveStartKey(lastKey);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    auto scanResult = client.Scan(scanReq);&lt;br /&gt;
    if (scanResult.IsSuccess()) {&lt;br /&gt;
       const auto&amp;amp; items = scanResult.GetResult().GetItems();&lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;\n=== Page&amp;quot; &amp;lt;&amp;lt; pageNum &amp;lt;&amp;lt; &amp;quot;===&amp;quot; &amp;lt;&amp;lt; items.size() &amp;lt;&amp;lt; &amp;quot;items&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
       for (const auto&amp;amp; item : items) {&lt;br /&gt;
          printItem(item);&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
       // 次のページがあるか確認&lt;br /&gt;
       lastKey = scanResult.GetResult().GetLastEvaluatedKey();&lt;br /&gt;
       pageNum++;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;✗ Error: &amp;quot; &amp;lt;&amp;lt; QString::fromStdString(scanResult.GetError().GetMessage());&lt;br /&gt;
        break;&lt;br /&gt;
    }&lt;br /&gt;
 } while (!lastKey.empty());&lt;br /&gt;
 &lt;br /&gt;
 qDebug() &amp;lt;&amp;lt; &amp;quot;Total pages processed:&amp;quot; &amp;lt;&amp;lt; (pageNum - 1);&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== トランザクション書き込み : TransactWriteItems ==&lt;br /&gt;
複数の操作をトランザクションとして実行する。(全成功または全失敗)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;トランザクションは最大100項目まで可能である。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 #include &amp;lt;aws/dynamodb/model/TransactWriteItemsRequest.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;aws/dynamodb/model/TransactWriteItem.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 // トランザクション書き込み&lt;br /&gt;
 Aws::DynamoDB::Model::TransactWriteItemsRequest transactReq;&lt;br /&gt;
 std::vector&amp;lt;Aws::DynamoDB::Model::TransactWriteItem&amp;gt; transactItems;&lt;br /&gt;
 &lt;br /&gt;
 // アイテム1: 挿入&lt;br /&gt;
 Aws::DynamoDB::Model::TransactWriteItem item1;&lt;br /&gt;
 Aws::DynamoDB::Model::Put put1;&lt;br /&gt;
 Aws::Map&amp;lt;Aws::String, Aws::DynamoDB::Model::AttributeValue&amp;gt; newItem;&lt;br /&gt;
 newItem[&amp;quot;id&amp;quot;] = toAttr(100);&lt;br /&gt;
 newItem[&amp;quot;name&amp;quot;] = toAttr(&amp;quot;Transaction User&amp;quot;);&lt;br /&gt;
 newItem[&amp;quot;balance&amp;quot;] = toAttr(1000);&lt;br /&gt;
 put1.SetTableName(tableName);&lt;br /&gt;
 put1.SetItem(newItem);&lt;br /&gt;
 item1.SetPut(put1);&lt;br /&gt;
 transactItems.push_back(item1);&lt;br /&gt;
 &lt;br /&gt;
 // アイテム2: 更新&lt;br /&gt;
 Aws::DynamoDB::Model::TransactWriteItem item2;&lt;br /&gt;
 Aws::DynamoDB::Model::Update update2;&lt;br /&gt;
 update2.SetTableName(tableName);&lt;br /&gt;
 Aws::Map&amp;lt;Aws::String, Aws::DynamoDB::Model::AttributeValue&amp;gt; key2;&lt;br /&gt;
 key2[&amp;quot;id&amp;quot;] = toAttr(101);&lt;br /&gt;
 update2.SetKey(key2);&lt;br /&gt;
 update2.SetUpdateExpression(&amp;quot;SET balance = balance - :amount&amp;quot;);&lt;br /&gt;
 update2.AddExpressionAttributeValues(&amp;quot;:amount&amp;quot;, toAttr(100));&lt;br /&gt;
 item2.SetUpdate(update2);&lt;br /&gt;
 transactItems.push_back(item2);&lt;br /&gt;
 &lt;br /&gt;
 transactReq.SetTransactItems(transactItems);&lt;br /&gt;
 &lt;br /&gt;
 auto transactResult = client.TransactWriteItems(transactReq);&lt;br /&gt;
 if (transactResult.IsSuccess()) {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✓ Transaction completed successfully&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;✗ Transaction failed: &amp;quot; &amp;lt;&amp;lt; QString::fromStdString(transactResult.GetError().GetMessage());&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== エラーハンドリング ==&lt;br /&gt;
DynamoDB操作時の一般的なエラーハンドリングパターンを以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 auto result = client.GetItem(getReq);&lt;br /&gt;
 &lt;br /&gt;
 if (!result.IsSuccess()) {&lt;br /&gt;
    const auto&amp;amp; error = result.GetError();&lt;br /&gt;
 &lt;br /&gt;
    switch (error.GetErrorType()) {&lt;br /&gt;
       case Aws::DynamoDB::DynamoDBErrors::RESOURCE_NOT_FOUND:&lt;br /&gt;
          qDebug() &amp;lt;&amp;lt; &amp;quot;テーブルが見つかりません&amp;quot;;&lt;br /&gt;
          break;&lt;br /&gt;
       case Aws::DynamoDB::DynamoDBErrors::PROVISIONED_THROUGHPUT_EXCEEDED:&lt;br /&gt;
          qDebug() &amp;lt;&amp;lt; &amp;quot;スループット制限を超えました。リトライしてください。&amp;quot;;&lt;br /&gt;
          break;&lt;br /&gt;
       case Aws::DynamoDB::DynamoDBErrors::CONDITIONAL_CHECK_FAILED:&lt;br /&gt;
          qDebug() &amp;lt;&amp;lt; &amp;quot;条件チェックに失敗しました&amp;quot;;&lt;br /&gt;
          break;&lt;br /&gt;
       case Aws::DynamoDB::DynamoDBErrors::VALIDATION:&lt;br /&gt;
          qDebug() &amp;lt;&amp;lt; &amp;quot;入力検証エラー: &amp;quot; &amp;lt;&amp;lt; QString::fromStdString(error.GetMessage());&lt;br /&gt;
          break;&lt;br /&gt;
       default:&lt;br /&gt;
          qDebug() &amp;lt;&amp;lt; &amp;quot;エラー: &amp;quot; &amp;lt;&amp;lt; QString::fromStdString(error.GetMessage());&lt;br /&gt;
          break;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== サンプルコード ==&lt;br /&gt;
以下の例では、AWS DynamoDBにアクセスしてデータを取得、挿入、更新、削除している。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
 #include &amp;lt;QCoreApplication&amp;gt;&lt;br /&gt;
 #include &amp;lt;QDebug&amp;gt;&lt;br /&gt;
 #include &amp;lt;aws/core/Aws.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;aws/dynamodb/DynamoDBClient.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;aws/dynamodb/model/PutItemRequest.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;aws/dynamodb/model/GetItemRequest.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;aws/dynamodb/model/DeleteItemRequest.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;aws/dynamodb/model/UpdateItemRequest.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;aws/dynamodb/model/ScanRequest.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 // ヘルパー関数&lt;br /&gt;
 Aws::DynamoDB::Model::AttributeValue toAttr(const QVariant&amp;amp; value)&lt;br /&gt;
 {&lt;br /&gt;
    Aws::DynamoDB::Model::AttributeValue attr;&lt;br /&gt;
    if (value.typeId() == QMetaType::QString)&lt;br /&gt;
       attr.SetS(value.toString().toStdString());&lt;br /&gt;
    else if (value.typeId() == QMetaType::Bool)&lt;br /&gt;
       attr.SetBool(value.toBool());&lt;br /&gt;
    else&lt;br /&gt;
       attr.SetN(value.toString().toStdString());&lt;br /&gt;
 &lt;br /&gt;
    return attr;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void printItem(const Aws::Map&amp;lt;Aws::String, Aws::DynamoDB::Model::AttributeValue&amp;gt; &amp;amp;item)&lt;br /&gt;
 {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;Item:&amp;quot;;&lt;br /&gt;
    for (const auto&amp;amp; pair : item) {&lt;br /&gt;
       QString key = QString::fromStdString(pair.first);&lt;br /&gt;
       QString value;&lt;br /&gt;
       if (!pair.second.GetS().empty())&lt;br /&gt;
          value = QString::fromStdString(pair.second.GetS());&lt;br /&gt;
       else if (!pair.second.GetN().empty())&lt;br /&gt;
          value = QString::fromStdString(pair.second.GetN());&lt;br /&gt;
       else if (pair.second.GetBool())&lt;br /&gt;
          value = &amp;quot;true&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;  &amp;quot; &amp;lt;&amp;lt; key &amp;lt;&amp;lt; &amp;quot;:&amp;quot; &amp;lt;&amp;lt; value;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
    QCoreApplication app(argc, argv);&lt;br /&gt;
 &lt;br /&gt;
    Aws::SDKOptions options;&lt;br /&gt;
    Aws::InitAPI(options);&lt;br /&gt;
 &lt;br /&gt;
    {&lt;br /&gt;
       // DynamoDBクライアント作成 (~/.aws/configからリージョンを自動取得)&lt;br /&gt;
       Aws::Client::ClientConfiguration config;&lt;br /&gt;
       // リージョンの指定を削除することで、AWS設定ファイルから自動取得&lt;br /&gt;
       Aws::DynamoDB::DynamoDBClient client(config);&lt;br /&gt;
       const std::string tableName = &amp;quot;&amp;lt;DynamoDBのテーブル名&amp;gt;&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;=== DynamoDB CRUD Demo ===\n&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
       // 挿入 : PutItem&lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;### 1. Insert Item ###&amp;quot;;&lt;br /&gt;
       Aws::DynamoDB::Model::PutItemRequest putReq;&lt;br /&gt;
       putReq.SetTableName(tableName);&lt;br /&gt;
       putReq.AddItem(&amp;quot;id&amp;quot;, toAttr(1));&lt;br /&gt;
       putReq.AddItem(&amp;quot;name&amp;quot;, toAttr(&amp;quot;Taro Yamada&amp;quot;));&lt;br /&gt;
       putReq.AddItem(&amp;quot;age&amp;quot;, toAttr(30));&lt;br /&gt;
       putReq.AddItem(&amp;quot;email&amp;quot;, toAttr(&amp;quot;taro@example.com&amp;quot;));&lt;br /&gt;
 &lt;br /&gt;
       if (client.PutItem(putReq).IsSuccess())&lt;br /&gt;
           qDebug() &amp;lt;&amp;lt; &amp;quot;✓ Item inserted&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
       // 取得 : GetItem&lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;\n### 2. Get Item ###&amp;quot;;&lt;br /&gt;
       Aws::DynamoDB::Model::GetItemRequest getReq;&lt;br /&gt;
       getReq.SetTableName(tableName);&lt;br /&gt;
       getReq.AddKey(&amp;quot;id&amp;quot;, toAttr(1));&lt;br /&gt;
 &lt;br /&gt;
       auto getResult = client.GetItem(getReq);&lt;br /&gt;
       if (getResult.IsSuccess())&lt;br /&gt;
           printItem(getResult.GetResult().GetItem());&lt;br /&gt;
 &lt;br /&gt;
       // 更新 : UpdateItem&lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;\n### 3. Update Item ###&amp;quot;;&lt;br /&gt;
       Aws::DynamoDB::Model::UpdateItemRequest updateReq;&lt;br /&gt;
       updateReq.SetTableName(tableName);&lt;br /&gt;
       updateReq.AddKey(&amp;quot;id&amp;quot;, toAttr(1));&lt;br /&gt;
       updateReq.SetUpdateExpression(&amp;quot;SET age = :val, email = :email&amp;quot;);&lt;br /&gt;
       updateReq.AddExpressionAttributeValues(&amp;quot;:val&amp;quot;, toAttr(31));&lt;br /&gt;
       updateReq.AddExpressionAttributeValues(&amp;quot;:email&amp;quot;, toAttr(&amp;quot;taro.new@example.com&amp;quot;));&lt;br /&gt;
 &lt;br /&gt;
       if (client.UpdateItem(updateReq).IsSuccess()) {&lt;br /&gt;
           qDebug() &amp;lt;&amp;lt; &amp;quot;✓ Item updated&amp;quot;;&lt;br /&gt;
           printItem(client.GetItem(getReq).GetResult().GetItem());&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
       // 全件取得 : Scan&lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;\n### 4. Scan Table ###&amp;quot;;&lt;br /&gt;
       Aws::DynamoDB::Model::ScanRequest scanReq;&lt;br /&gt;
       scanReq.SetTableName(tableName);&lt;br /&gt;
 &lt;br /&gt;
       auto scanResult = client.Scan(scanReq);&lt;br /&gt;
       if (scanResult.IsSuccess()) {&lt;br /&gt;
           qDebug() &amp;lt;&amp;lt; &amp;quot;Found&amp;quot; &amp;lt;&amp;lt; scanResult.GetResult().GetItems().size() &amp;lt;&amp;lt; &amp;quot;items&amp;quot;;&lt;br /&gt;
           for (const auto&amp;amp; item : scanResult.GetResult().GetItems())&lt;br /&gt;
              printItem(item);&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
       // 削除 : DeleteItem&lt;br /&gt;
       qDebug() &amp;lt;&amp;lt; &amp;quot;\n### 5. Delete Item ###&amp;quot;;&lt;br /&gt;
       Aws::DynamoDB::Model::DeleteItemRequest delReq;&lt;br /&gt;
       delReq.SetTableName(tableName);&lt;br /&gt;
       delReq.AddKey(&amp;quot;id&amp;quot;, toAttr(1));&lt;br /&gt;
 &lt;br /&gt;
       if (client.DeleteItem(delReq).IsSuccess())&lt;br /&gt;
          qDebug() &amp;lt;&amp;lt; &amp;quot;✓ Item deleted&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    Aws::ShutdownAPI(options);&lt;br /&gt;
 &lt;br /&gt;
    return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[カテゴリ:Qt]]&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
</feed>