【備忘録】調べた用語 2025/1

# 概要
本記事では私が勉強中に「理解が浅い」「他人に説明出来るほど咀嚼できていない」と感じて調査した用語について簡単に記載する。
なお、調査には基本的にChatGPTを用いている。

# 用語

### Azure Event Hub. IoT Hub, Service Busの違い
IoT Hubは、IoTデバイスとやり取りしたいときに使う。デバイスの管理や双方向の通信もできる。
Event Hubは、たくさんのデータを高速で集めて処理したいときに使う。
Service Busは、アプリケーション同士でメッセージを確実にやり取りしたいときに使う。

---
### Azure IoT Hub

IoT Hub
主な用途: IoT（インターネットに接続されたデバイス）を管理して、デバイスからデータを受け取るためのサービス。
どんな時に使う？
IoTデバイス（例: 温度センサー、スマート家電、車など）からデータを受け取って、クラウドでそのデータを処理する。
デバイスとクラウド間で双方向の通信ができる（デバイスにメッセージを送信したり、デバイスからデータを受け取ったり）。
特徴:
デバイス管理機能が強化されている（デバイスの認証や管理、監視ができる）。
デバイスとの双方向通信が可能。
セキュリティ: IoTデバイスとの通信は安全で、個別に認証される。


---
### Azure Event Hub
Azure Event Hubって何？
Azure Event Hubは、たくさんのデータをすばやく集めて、一度に管理するためのツールだよ。たとえば、以下みたいなことをするイメージ：

📱 例1: スマホゲームのデータ

世界中で何百万人もプレイしてるゲームがあるとするよね。みんなが「スコアを更新した」「敵を倒した」っていう情報をAzure Event Hubに送ると、それを全部集めて保存しておける。
🌐 例2: スマート家電

冷蔵庫やエアコン、センサーから出てくる「温度」「電力の使い方」のデータを集めて分析できる。
どうやって動くの？
データを送る人（Producer）

ゲームやセンサー、アプリがデータをEvent Hubに送る。
例: スマホが「Tetsuyaがゲームで100点取った！」と送る。
Event Hubがデータを受け取る

送られてきたデータを一時的に保存する。
データを見る人（Consumer）

別のプログラムやシステムがそのデータを受け取って、使う準備をする。
例: ゲームのランキングを作るシステムがデータを分析する。
何がスゴイの？
超はやい⚡
1秒間に何百万ものデータを受け取れるよ。

柔軟に使える🛠
どんなアプリやデバイスからでもデータを送れる。

安全🔒
データがなくなったり盗まれたりしないように守られてる。

もっと簡単に言うと？
「データの大きな郵便ポスト」みたいなものだね。📮
みんながポストに手紙（データ）を投げ入れると、郵便屋さん（Event Hub）がその手紙を届ける準備をしてくれる。

---
### Azure Service Bus
Azure Service Busは、Microsoft Azureのメッセージングサービスで、アプリケーション間のメッセージ通信を非同期で行うためのツールです。Az-204試験でよく問われるポイントは以下の通りです：

主な特徴
メッセージングモデル:

キュー: 1対1通信（ProducerからConsumer）。
トピックとサブスクリプション: 1対多通信（Publish-Subscribeモデル）。
信頼性: メッセージは確実に配信される（At least once delivery）。

高度な機能:

デッドレターメッセージ。
FIFO（先入れ先出し）キュー。
メッセージのスケジューリング。
試験対策ポイント
基本操作:

キューやトピックの作成。
メッセージの送受信コードの理解。
Azure CLI/Portal操作:

Service Busのセットアップ手順。
メッセージング構成。
エラー処理:

デッドレターメッセージの活用法。
再試行ポリシーの設定。
セキュリティ:

Shared Access Policiesの利用。
ロールベースアクセス制御（RBAC）。
SDKの活用:

Azure.Messaging.ServiceBusライブラリ（C#）やPython SDKの基本的なAPI操作。
👨‍💻 コード例や設定方法も練習すると良いよ！試験がんばって！✨

---

### Azure Service Bus Que
Azure Service Bus Queueは、メッセージを一時的に保存し、1対1の非同期通信を実現する仕組みです。Az-204試験で押さえるべきポイントは以下の通りです：

特徴と動作
Producer（送信者）がキューにメッセージを送信し、Consumer（受信者）がそのメッセージを取り出す。
メッセージはFIFO（先入れ先出し）順で処理される。
メッセージの受信はPeek-LockまたはReceive and Deleteモードを使用。
試験で重要なポイント
メッセージの基本操作

送信: SendMessageAsync メソッド。
受信: ReceiveMessageAsync または PeekMessagesAsync。
デッドレターメッセージ

配送失敗や期限切れのメッセージはDead-letter Queueに送られる。
メッセージTTL（Time-to-Live）

メッセージの有効期限を設定可能。
セキュリティ

Shared Access Signature (SAS) を使用してアクセス権を管理。
スケーラビリティ

Auto-forwardingを利用して、メッセージを別のキューやトピックに転送。
コード例 (C#)
csharp
コードをコピーする
var client = new ServiceBusClient("<ConnectionString>");
var sender = client.CreateSender("<QueueName>");

await sender.SendMessageAsync(new ServiceBusMessage("Hello, Azure!"));
Console.WriteLine("Message sent!");

---

### Azure Refis Cache
Azure Redis Cache は、Azureで提供される超高速なデータキャッシュサービスだよ！⚡🗂️

Redisというオープンソースのデータストアを使っていて、主に以下のような特徴がある👇

主なポイント
1️⃣ 超高速
データはメモリ上に保存されるから、読み書きがめちゃくちゃ速い！🏎️💨

2️⃣ キャッシュとして活用
頻繁に使うデータ（例: ユーザーセッション情報やランキングデータ）を保存して、アプリのパフォーマンスを向上させる。📈

3️⃣ 分散環境に対応
複数のサーバー間で同じキャッシュを共有できるから、大規模アプリにも対応可能！🌐✨

4️⃣ 高可用性
データの複製や自動フェイルオーバー機能があるから、信頼性が高い。☁️🔄

使いどころ
ウェブアプリのレスポンスを速くする。
一時的なデータ保存やキュー管理。
リアルタイムアプリ（例: チャット、ゲーム）でデータ処理を高速化。
Azure Redis Cacheを使えば、アプリのスピードと効率がグンと上がるよ！

---

### サービスプリンシパル
サービスプリンシパルは、アプリやプログラムがAzureの中で仕事をするために使う特別なアカウントみたいなものだよ。これがあると、実際の人間がログインしなくても、アプリが自動でデータを読み書きしたり、設定を変えたりできるんだ。もちろん、必要以上のことはできないように、「どこまで許可するか」を細かく決められるよ！

---
### マネージドID
マネージドIDは、Azureが自動的に管理する「アプリ専用の身分証明書」だよ。サービス プリンシパルを使うけど、IDやパスワードを自分で管理する必要がないんだ。💡✨

例えば、アプリがデータベースにアクセスしたいとき、このマネージドIDを使うと安全にアクセスできる。Azureが全部面倒を見てくれるから、設定も簡単で安心なんだ！🔐🎉

---
### OAuth2.0
OAuth 2.0は、インターネット上で「安全にアクセス権を渡すための仕組み」だよ。🌐🔒

例えば、アプリが他のサービス（GoogleやTwitter）から情報を使いたいとき、パスワードを直接渡すんじゃなくて、トークンという「一時的な鍵」を使ってアクセスするんだ。🔑✨

主な流れはこんな感じ：
1. ユーザーがアプリに「使っていいよ」と許可を出す。
1. アプリが認証サーバーからトークンをもらう。
1. アプリがそのトークンを使って、必要なデータにアクセスする。

だから、パスワードを直接共有しなくていいし、安全なんだよ！🎉

---
### Shared Access Signature (SAS)
Shared Access Signature (SAS) は、Azureのストレージリソースに対して一時的なアクセスを許可するための安全なURLだよ！🌐🔑

例えば、誰かに特定のファイルをダウンロードしてほしいとき、以下のように使うんだ👇

1️⃣ アクセスの範囲を指定
読み取りだけ、書き込みだけ、などの権限を細かく設定できる。📜

2️⃣ 有効期限を設定
何時間後、何日後までアクセスできるか、期間を指定できる。⏳

3️⃣ アクセスURLを発行
特定の署名付きURLを生成して、それを渡すだけでOK！✨

主なポイント
安全性: アクセスは指定された範囲と時間内だけ有効。
便利さ: アカウント全体を見せなくてもいいので安心。
例: https://mystorage.blob.core.windows.net/myfile.txt?SAS_TOKEN
このURLを使えば、そのファイルにアクセスできるよ！

---
### ストアドプロシージャ

ストアドプロシージャ（Stored Procedure）は、データベースの中に保存される一連のSQLコマンドやロジックの集まりです。🗂️

ポイント:

効率的: 繰り返し使う処理をまとめておける。
高速: データベース内で直接実行されるので、通信の手間が省ける。
安全: 外部アプリケーションにSQLの詳細を見せなくて済む。

1. 作成する
まず、ストアドプロシージャを作る。
例えば、在庫の合計を計算する例：


```
CREATE PROCEDURE CalculateTotalStock
AS
BEGIN
    SELECT SUM(Quantity) AS TotalStock
    FROM Inventory;
END;
```

2. 実行する
作ったプロシージャを呼び出して実行する。
以下のコマンドを実行：

```
EXEC CalculateTotalStock;
```
すると、Inventoryテーブル内のQuantity列の合計が返ってくる！📊

3. パラメータを渡す場合
特定の条件を絞りたいときには、パラメータを使う。
例: 特定のカテゴリーの在庫を計算

```
CREATE PROCEDURE CalculateCategoryStock @Category NVARCHAR(50)
AS
BEGIN
    SELECT SUM(Quantity) AS TotalStock
    FROM Inventory
    WHERE Category = @Category;
END;
```
実行例:

```
EXEC CalculateCategoryStock 'Fruits';
```
→ 結果: Fruitsカテゴリーの合計在庫が出る！🍎🍌

メリットまとめ
複雑な処理をシンプルに再利用できる
データベース内で直接実行するので効率的
パラメータで柔軟な操作が可能
試してみると便利さがわかるよ！💡

---
### CosmosDB パーティション
CosmosDBのパーティションは、データを分けて保存する仕組みだよ。📂
たくさんのデータがあるときに、効率よく探せるように分けているんだ。

例えば：
🍎フルーツを「種類」で分けるイメージ！

→ リンゴは1つの箱、バナナは別の箱みたいに！

---
### FQDN
FQDN (Fully Qualified Domain Name) は、インターネットやネットワーク上で特定のホストを一意に識別するための完全なドメイン名です。🌐

構成
FQDN は以下のように階層的に構成されます：

ホスト名（例: www）
ドメイン名（例: example.com）
トップレベルドメイン (TLD)（例: .com）
例
FQDN: www.example.com
www (ホスト名)
example (ドメイン名)
.com (TLD)
特徴
必ずドット (.) で区切られる。
ネットワーク上で一意であり、他と混同されない。
DNS (Domain Name System) を通じて IP アドレスに変換されます。
簡単に言うと、インターネット上で「住所」にあたる名前だよ！📬✨

---
### APIエンドポイント
APIエンドポイントは、API（Application Programming Interface）を介してアクセス可能な特定のURLやURIのことを指します。これは、クライアント（例えばアプリやサービス）がサーバーと通信する際の「入り口」や「窓口」のような役割を果たします。🌐✨

APIエンドポイントの概要
役割:

クライアント（ユーザー側）からサーバーにリクエストを送るためのアクセス先。
サーバー側で定義される特定の機能やデータにアクセスするための窓口。
構成:

エンドポイントは通常、ベースURLとリソースパスで構成されます。
例:
arduino
コードをコピーする
https://api.example.com/users/123
https://api.example.com → ベースURL
/users/123 → リソースパス（ユーザーID123の情報を取得）
エンドポイントの種類
APIエンドポイントは通常、HTTPメソッド（リクエストの種類）と組み合わせて利用されます。例えば：

GET: データ取得
例: /users（全ユーザーの取得）
POST: データ作成
例: /users（新しいユーザーの作成）
PUT: データ更新
例: /users/123（ユーザーID123の更新）
DELETE: データ削除
例: /users/123（ユーザーID123の削除）
実際の利用例
認証API:

POST /login
クライアントがログイン情報を送信してトークンを取得。
リソース取得API:

GET /products
全ての商品データを取得。
検索API:

GET /products?category=electronics
カテゴリーが「electronics」の商品のみ取得。
ポイント
エンドポイントは一意: APIのエンドポイントはユニークに設計され、特定の操作やリソースに対応。
セキュリティ: HTTPSを使用して通信を暗号化。認証（APIキー、OAuthなど）がよく利用される。
ドキュメントの確認: エンドポイントの構造や使い方はAPIのドキュメントで確認可能。
APIエンドポイントは、アプリとサーバーが会話するための共通言語の「住所」みたいなものだよ！📬✨