jpskill.com
📦 その他 コミュニティ

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本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
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
🪟 Windows (PowerShell)
$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. 1. 下の青いボタンを押して domain-iot.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → domain-iot フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

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