domain-iot
IoTデバイスやセンサーからのデータを活用し、MQTTなどのプロトコルを用いてスマートホームやエッジコンピューティングなどのIoTアプリケーションを構築するSkill。
📜 元の英語説明(参考)
Use when building IoT apps. Keywords: IoT, Internet of Things, sensor, MQTT, device, edge computing, telemetry, actuator, smart home, gateway, protocol, 物联网, 传感器, 边缘计算, 智能家居
🇯🇵 日本人クリエイター向け解説
IoTデバイスやセンサーからのデータを活用し、MQTTなどのプロトコルを用いてスマートホームやエッジコンピューティングなどのIoTアプリケーションを構築するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o domain-iot.zip https://jpskill.com/download/9257.zip && unzip -o domain-iot.zip && rm domain-iot.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/9257.zip -OutFile "$d\domain-iot.zip"; Expand-Archive "$d\domain-iot.zip" -DestinationPath $d -Force; ri "$d\domain-iot.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
domain-iot.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
domain-iotフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
IoTドメイン
レイヤー3:ドメイン制約
ドメイン制約 → 設計への影響
| ドメインルール | 設計制約 | Rustへの影響 |
|---|---|---|
| 不安定なネットワーク | オフラインファースト | ローカルバッファリング |
| 電力制約 | 効率的なコード | スリープモード、最小限のアロケーション |
| リソース制限 | 小さなフットプリント | 必要な場合は no_std |
| セキュリティ | 暗号化された通信 | TLS、署名付きファームウェア |
| 信頼性 | 自己回復 | ウォッチドッグ、エラー処理 |
| OTAアップデート | 安全なアップグレード | ロールバック機能 |
重要な制約
ネットワークの不安定性
ルール:ネットワークはいつでも失敗する可能性がある
理由:ワイヤレス、遠隔地
RUST:ローカルキュー、バックオフ付きのリトライ
電力管理
ルール:消費電力を最小限に抑える
理由:バッテリー寿命、エネルギーコスト
RUST:スリープモード、効率的なアルゴリズム
デバイスセキュリティ
ルール:すべての通信を暗号化する
理由:物理的なアクセスが可能
RUST:TLS、署名付きメッセージ
トレースダウン ↓
制約から設計へ(レイヤー2):
"オフラインファーストの設計が必要"
↓ m12-lifecycle: 永続性のあるローカルバッファ
↓ m13-domain-error: バックオフ付きのリトライ
"電力効率が必要"
↓ domain-embedded: no_std パターン
↓ m10-performance: 最小限のアロケーション
"信頼性の高いメッセージングが必要"
↓ m07-concurrency: タイムアウト付きのAsync
↓ MQTT: QoSレベル
環境比較
| 環境 | スタック | クレート |
|---|---|---|
| Linuxゲートウェイ | tokio + std | rumqttc, reqwest |
| MCUデバイス | embassy + no_std | embedded-hal |
| ハイブリッド | ワークロードの分割 | 両方 |
主要なクレート
| 目的 | クレート |
|---|---|
| MQTT (std) | rumqttc, paho-mqtt |
| 組み込み | embedded-hal, embassy |
| Async (std) | tokio |
| Async (no_std) | embassy |
| ロギング (no_std) | defmt |
| ロギング (std) | tracing |
デザインパターン
| パターン | 目的 | 実装 |
|---|---|---|
| Pub/Sub | デバイス通信 | MQTTトピック |
| エッジコンピューティング | ローカル処理 | アップロード前にフィルタ |
| OTAアップデート | ファームウェアのアップグレード | 署名付き + ロールバック |
| 電力管理 | バッテリー寿命 | スリープ + ウェイクイベント |
| ストア&フォワード | ネットワークの信頼性 | ローカルキュー |
コードパターン: MQTTクライアント
use rumqttc::{AsyncClient, MqttOptions, QoS};
async fn run_mqtt() -> anyhow::Result<()> {
let mut options = MqttOptions::new("device-1", "broker.example.com", 1883);
options.set_keep_alive(Duration::from_secs(30));
let (client, mut eventloop) = AsyncClient::new(options, 10);
// コマンドをサブスクライブ
client.subscribe("devices/device-1/commands", QoS::AtLeastOnce).await?;
// テレメトリをパブリッシュ
tokio::spawn(async move {
loop {
let data = read_sensor().await;
client.publish("devices/device-1/telemetry", QoS::AtLeastOnce, false, data).await.ok();
tokio::time::sleep(Duration::from_secs(60)).await;
}
});
// イベントを処理
loop {
match eventloop.poll().await {
Ok(event) => handle_event(event).await,
Err(e) => {
tracing::error!("MQTT error: {}", e);
tokio::time::sleep(Duration::from_secs(5)).await;
}
}
}
}
よくある間違い
| 間違い | ドメイン違反 | 修正 |
|---|---|---|
| リトライロジックがない | データ損失 | 指数バックオフ |
| 常にオンの無線 | バッテリーの消耗 | 送信間隔を空けてスリープ |
| 暗号化されていないMQTT | セキュリティリスク | TLS |
| ローカルバッファがない | ネットワーク停止 = データ損失 | ローカルに永続化 |
レイヤー1へのトレース
| 制約 | レイヤー2のパターン | レイヤー1の実装 |
|---|---|---|
| オフラインファースト | ストア&フォワード | ローカルキュー + フラッシュ |
| 電力効率 | スリープパターン | タイマーベースのウェイク |
| ネットワークの信頼性 | リトライ | tokio-retry, backoff |
| セキュリティ | TLS | rustls, native-tls |
関連スキル
| いつ | 参照 |
|---|---|
| 組み込みパターン | domain-embedded |
| Asyncパターン | m07-concurrency |
| エラー回復 | m13-domain-error |
| パフォーマンス | m10-performance |
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
IoT Domain
Layer 3: Domain Constraints
Domain Constraints → Design Implications
| Domain Rule | Design Constraint | Rust Implication |
|---|---|---|
| Unreliable network | Offline-first | Local buffering |
| Power constraints | Efficient code | Sleep modes, minimal alloc |
| Resource limits | Small footprint | no_std where needed |
| Security | Encrypted comms | TLS, signed firmware |
| Reliability | Self-recovery | Watchdog, error handling |
| OTA updates | Safe upgrades | Rollback capability |
Critical Constraints
Network Unreliability
RULE: Network can fail at any time
WHY: Wireless, remote locations
RUST: Local queue, retry with backoff
Power Management
RULE: Minimize power consumption
WHY: Battery life, energy costs
RUST: Sleep modes, efficient algorithms
Device Security
RULE: All communication encrypted
WHY: Physical access possible
RUST: TLS, signed messages
Trace Down ↓
From constraints to design (Layer 2):
"Need offline-first design"
↓ m12-lifecycle: Local buffer with persistence
↓ m13-domain-error: Retry with backoff
"Need power efficiency"
↓ domain-embedded: no_std patterns
↓ m10-performance: Minimal allocations
"Need reliable messaging"
↓ m07-concurrency: Async with timeout
↓ MQTT: QoS levels
Environment Comparison
| Environment | Stack | Crates |
|---|---|---|
| Linux gateway | tokio + std | rumqttc, reqwest |
| MCU device | embassy + no_std | embedded-hal |
| Hybrid | Split workloads | Both |
Key Crates
| Purpose | Crate |
|---|---|
| MQTT (std) | rumqttc, paho-mqtt |
| Embedded | embedded-hal, embassy |
| Async (std) | tokio |
| Async (no_std) | embassy |
| Logging (no_std) | defmt |
| Logging (std) | tracing |
Design Patterns
| Pattern | Purpose | Implementation |
|---|---|---|
| Pub/Sub | Device comms | MQTT topics |
| Edge compute | Local processing | Filter before upload |
| OTA updates | Firmware upgrade | Signed + rollback |
| Power mgmt | Battery life | Sleep + wake events |
| Store & forward | Network reliability | Local queue |
Code Pattern: MQTT Client
use rumqttc::{AsyncClient, MqttOptions, QoS};
async fn run_mqtt() -> anyhow::Result<()> {
let mut options = MqttOptions::new("device-1", "broker.example.com", 1883);
options.set_keep_alive(Duration::from_secs(30));
let (client, mut eventloop) = AsyncClient::new(options, 10);
// Subscribe to commands
client.subscribe("devices/device-1/commands", QoS::AtLeastOnce).await?;
// Publish telemetry
tokio::spawn(async move {
loop {
let data = read_sensor().await;
client.publish("devices/device-1/telemetry", QoS::AtLeastOnce, false, data).await.ok();
tokio::time::sleep(Duration::from_secs(60)).await;
}
});
// Process events
loop {
match eventloop.poll().await {
Ok(event) => handle_event(event).await,
Err(e) => {
tracing::error!("MQTT error: {}", e);
tokio::time::sleep(Duration::from_secs(5)).await;
}
}
}
}
Common Mistakes
| Mistake | Domain Violation | Fix |
|---|---|---|
| No retry logic | Lost data | Exponential backoff |
| Always-on radio | Battery drain | Sleep between sends |
| Unencrypted MQTT | Security risk | TLS |
| No local buffer | Network outage = data loss | Persist locally |
Trace to Layer 1
| Constraint | Layer 2 Pattern | Layer 1 Implementation |
|---|---|---|
| Offline-first | Store & forward | Local queue + flush |
| Power efficiency | Sleep patterns | Timer-based wake |
| Network reliability | Retry | tokio-retry, backoff |
| Security | TLS | rustls, native-tls |
Related Skills
| When | See |
|---|---|
| Embedded patterns | domain-embedded |
| Async patterns | m07-concurrency |
| Error recovery | m13-domain-error |
| Performance | m10-performance |