C# (.NET 8) で DynamoDB に書き込む方法|Windows フォーム + AWS SDK

DynamoDB に書き込む

Visual Studio 2022 + Windows フォームアプリで AWSSDK.DynamoDBv2 を使い、C# (.NET 8) からAWS DynamoDB にデータを書き込む実装例を紹介します。

💡 AWS_ACCESS_KEY_ID などの認証情報をアプリ内でユーザー入力するケースを想定


🔰 前提条件

以下の環境を想定しています:

  • Windows 11 / 10
  • Visual Studio 2022
  • .NET 8(Windows Forms アプリ)
  • AWS IAM ユーザーのアクセスキー保有済み
  • DynamoDB テーブルが作成済み(例:MySampleTable

🛠 NuGet パッケージのインストール

まずは必要な AWS SDK パッケージをインストールしましょう。

1. AWSSDK.DynamoDBv2 の追加

Visual Studio の「ソリューションエクスプローラー」→「NuGet パッケージの管理」→「参照」タブで、以下のパッケージをインストールします:

AWSSDK.DynamoDBv2

またはパッケージマネージャーコンソールで:

Install-Package AWSSDK.DynamoDBv2

🖼 フォームのUI想定

フォームに以下の UI を設置します:

コントロールName備考
TextBoxtxtAccessKeyAWS_ACCESS_KEY_ID
TextBoxtxtSecretKeyAWS_SECRET_ACCESS_KEY
TextBoxtxtSessionTokenAWS_SESSION_TOKEN(省略可)
TextBoxtxtRegionAWS_DEFAULT_REGION
ButtonbtnRun書き込み実行ボタン

※ セキュリティ上、UseSystemPasswordChar = true 推奨

https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html


💻 実装コード例

ボタンクリックで DynamoDB に書き込む処理

using Amazon;
using Amazon.Runtime;
using Amazon.DynamoDBv2;
using Amazon.DynamoDBv2.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

private async void btnRun_Click(object sender, EventArgs e)
{
    var accessKey = txtAccessKey.Text.Trim();
    var secretKey = txtSecretKey.Text.Trim();
    var sessionToken = txtSessionToken.Text.Trim();
    var regionString = txtRegion.Text.Trim();

    if (string.IsNullOrEmpty(accessKey) || string.IsNullOrEmpty(secretKey) || string.IsNullOrEmpty(regionString))
    {
        MessageBox.Show("必要な情報が入力されていません。");
        return;
    }

    RegionEndpoint region;
    try
    {
        region = RegionEndpoint.GetBySystemName(regionString);
    }
    catch
    {
        MessageBox.Show("リージョン名が不正です。例: ap-northeast-1");
        return;
    }

    AWSCredentials credentials = string.IsNullOrEmpty(sessionToken)
        ? new BasicAWSCredentials(accessKey, secretKey)
        : new SessionAWSCredentials(accessKey, secretKey, sessionToken);

    using var client = new AmazonDynamoDBClient(credentials, region);

    var request = new PutItemRequest
    {
        TableName = "MySampleTable",
        Item = new Dictionary
        {
            { "Id", new AttributeValue { S = Guid.NewGuid().ToString() } },
            { "Name", new AttributeValue { S = "テストユーザー" } }
        }
    };

    try
    {
        var response = await client.PutItemAsync(request);
        MessageBox.Show("DynamoDB に書き込み成功!");
    }
    catch (Exception ex)
    {
        MessageBox.Show("書き込みエラー: " + ex.Message);
    }
}

AWS_ACCESS_KEY_ID 保存場所

今回の例では環境変数を使わずにアプリ内で直接渡しています
そのため .aws/credentials や OSの環境変数には保存されません。


DynamoDB テーブルが存在しないときは?

PutItemAsync 実行時に「ResourceNotFoundException」が発生します。
テーブルが存在することを事前に確認しましょう(または CreateTableAsync を使って自動作成も可能です)。


🔐 セキュリティに関しての注意

この実装では AWS 認証情報を直接テキストボックスから入力しています。本番利用時には認証情報をハードコードしたりログに出力したりしないよう注意してください。


✅ まとめ

C# (.NET 8) + Windows Forms アプリケーションから AWS DynamoDB にデータを書き込むのは、AWSSDK.DynamoDBv2 と適切なクレデンシャルクラスを使うことで簡単に実現できます。


改行・カンマを含むCSVを正しく読み込む2つの方法

DateTimeを日本時間でISO 8601形式に変換する方法

ファイルから重複行を削除する2つの方法

HTML・CSS・JavaScriptでスマホ&PC対応のダークモードを自動手動切替 実装

スマホ&PC対応のダークモード

HTML・CSS・JavaScriptのみを使って、スマホとPCの両方に対応したダークモードの自動&手動切り替え機能を実装する方法を詳しく解説します。


ダークモードに対応するメリット

  • 夜間の閲覧がしやすく、目の負担を軽減?
  • デバイスのバッテリー消費を抑制?(OLEDディスプレイの場合)
  • ユーザーのOS設定に合わせたUIで満足度向上

方法1:CSSだけで実現する自動ダークモード

ユーザーのOSやブラウザの設定に応じて自動的に切り替えるには、以下のように prefers-color-scheme メディアクエリを使います。

/* 通常(ライトモード) */
body {
  background-color: white;
  color: black;
}

/* ダークモード */
@media (prefers-color-scheme: dark) {
  body {
    background-color: #121212;
    color: white;
}

方法2:JavaScriptとlocalStorageを使った手動切り替え

ユーザーがボタンを使って自分でライト/ダークを切り替えたい場合は、以下の3つのファイルを用意します。

1. HTMLコード

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>ダークモード切替</title>
  <link rel="stylesheet" href="style.css" />
</head>
<body>
  <button id="toggle-theme">テーマ切り替え</button>
  <h1>こんにちは、世界!</h1>
  <p>ライト/ダークテーマを自動&手動で切り替えできます。</p>
  <script src="script.js"></script>
</body>
</html>

2. CSSコード

:root {
  --bg-color: white;
  --text-color: black;
}

[data-theme="dark"] {
  --bg-color: #121212;
  --text-color: white;
}

body {
  background-color: var(--bg-color);
  color: var(--text-color);
  font-family: sans-serif;
  transition: background-color 0.3s, color 0.3s;
}

button {
  margin: 1rem;
  padding: 0.5rem 1rem;
  cursor: pointer;
}

3. JavaScriptコード

const toggleButton = document.getElementById('toggle-theme');
const userPrefKey = 'theme';

function applyTheme(theme) {
  document.documentElement.setAttribute('data-theme', theme);
}

function initTheme() {
  const savedTheme = localStorage.getItem(userPrefKey);
  if (savedTheme) {
    applyTheme(savedTheme);
  } else {
    const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
    applyTheme(systemPrefersDark ? 'dark' : 'light');
  }
}

toggleButton.addEventListener('click', () => {
  const current = document.documentElement.getAttribute('data-theme');
  const newTheme = current === 'dark' ? 'light' : 'dark';
  applyTheme(newTheme);
  localStorage.setItem(userPrefKey, newTheme);
});

initTheme();

スマホ&PC対応状況(2025年最新)

デバイス/ブラウザ対応状況
iOS Safari✅ 完全対応
Android Chrome✅ 完全対応
Windows Edge / Chrome✅ 完全対応
macOS Safari / Chrome✅ 完全対応

ユーザーフレンドリー&SEOにも有利なダークモード対応

今回紹介したように、HTML・CSS・JavaScriptだけで、OS設定連動+手動切替が可能なダークモード対応を簡単に実装できます。
ダークモードは単なる見た目だけでなく、ユーザー体験やサイト評価向上に貢献します。ぜひあなたのWebサイトにも導入してみてください。


MBTI診断 | あなたの性格タイプを分析

PNGをファビコン(favicon.ico)に変換

Googleサーチコンソールに反映されるための最低限のSEO構造とは

Googleサイト確認のTXTレコードをnslookupで確認する方法

PHPで複数ファイルを順番に削除する方法

Python networkxでグラフ構造を簡単に可視化・解析する方法

networkxの基本的な使い方

Pythonでグラフ構造(ノードとエッジからなるネットワーク)を扱いたいなら、networkxは非常に便利なライブラリです。

networkxとは何か、どんな用途に使えるのか、そして基本的な使い方についてと、最短経路の探索や中心性の計算といった解析もサンプルコード付きで紹介


✅ networkxとは?どんなことができるの?

networkxは、グラフ(ネットワーク)構造をPythonで扱うためのライブラリです。以下のような分野で活用されています:

  • ソーシャルネットワーク分析(SNSのユーザー関係)
  • 道路・交通ネットワークの最適化
  • 通信・電力ネットワークの構造解析
  • 知識グラフや推薦システムの基盤構築

🔰 networkxのインストール方法

まずはpipでインストールしましょう:

pip install networkx

🛠️ networkxの基本的な使い方

1. グラフの作成とノード・エッジの追加

import networkx as nx
import matplotlib.pyplot as plt

# 無向グラフの作成
G = nx.Graph()

# ノードとエッジの追加
G.add_nodes_from(["A", "B", "C", "D"])
G.add_edges_from([("A", "B"), ("B", "C"), ("C", "D")])

# グラフの可視化
nx.draw(G, with_labels=True)
plt.show()

2. グラフ構造の確認

print("ノード一覧:", G.nodes())
print("エッジ一覧:", G.edges())
print("各ノードの次数:", dict(G.degree()))

🔍 グラフの解析も簡単に!

3. 最短経路の計算

path = nx.shortest_path(G, source="A", target="D")
print("AからDへの最短経路:", path)

4. ノードの中心性(centrality)の計算

centrality = nx.degree_centrality(G)
print("各ノードの中心性スコア:", centrality)

🌐 他にもできること一覧

機能説明
有向グラフの作成nx.DiGraph()を使えば方向付きのエッジを持つグラフも作成可能
重み付きグラフエッジにweight属性を付けて、コストや距離を表現
ネットワークアルゴリズムPageRank、最大フロー、クラスタリングなどもサポート
グラフの保存・読み込みGML、GraphML、JSON形式での保存と読込が可能

networkxはPythonでネットワーク分析を行う強力ツール

networkxを使えば、Pythonでネットワークの可視化、解析、探索などが直感的に行えます。特にソーシャルグラフ、インフラネットワーク、推薦アルゴリズムなど、現代の多くのアプリケーションに応用可能です。

MBTI診断 | あなたの性格タイプを分析