node-red について
node-redは、Node-REDのフロー作成、変更、検証、デプロイを支援するスキルです。MQTT、HTTP API、データ処理やAdmin API経由のデプロイ向けに、スクリプト、資料、テンプレートを提供します。
主な機能
- 01フローテンプレートとノードIDの生成
- 02フローJSONと接続の検証
- 03スクリプトによるノード接続
- 04ノードスキーマとAPI資料の提供
- 05Admin API経由のフローデプロイ
活用シーン
- 01MQTTのパブリッシュ/サブスクライブフロー作成
- 02HTTP APIやデータパイプラインの構築
- 03フロー設定や配線のデバッグ
- 04Node-REDフローのデプロイと確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jwiegley/ claude-prompts --skill node-redインストール後、Claude Code で/node-redを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/boilerplate/function_async.jsfunction_context.jsassets/templates/http_api_flow.jsonmqtt_flow.jsonreferences/api_reference.mdfunction_snippets.mdnode_schemas.mdplugins.mdscripts/create_flow_template.pygenerate_uuid.pyvalidate_flow.pywire_nodes.py詳細
Node-RED フロー開発
このスキルは、Admin API を通じたフローの作成、変更、検証、デプロイなど、Node-RED 開発を包括的にサポートします。
このスキルを使用する場面
次の場合にこのスキルを使用してください:
- Node-RED フロー(flows.json ファイル)を作成または変更するとき
- MQTT、HTTP API、またはデータパイプラインの統合を構築するとき
- フロー設定のデバッグまたは検証を行うとき
- function ノードとコンテキストストレージを扱うとき
- Node-RED Admin API を通じてフローをデプロイするとき
- 要件を Node-RED フローの実装に変換するとき
利用可能なリソース
スクリプト(scripts/)
一般的な Node-RED の操作には、次の Python スクリプトを実行します:
-
generate_uuid.py - 有効な Node-RED ノード ID を生成します
python scripts/generate_uuid.py [count] -
validate_flow.py - フローの JSON 構造とワイヤ接続を検証します
python scripts/validate_flow.py <flow.json> -
wire_nodes.py - ノードをプログラムで接続します
python scripts/wire_nodes.py <flow.json> <source_id> <target_id> [output_port] -
create_flow_template.py - ボイラープレートフローを生成します
python scripts/create_flow_template.py <mqtt|http-api|data-pipeline|error-handler> [output.json]
リファレンス(references/)
必要に応じて、以下の詳細なリファレンスを参照してください:
- node_schemas.md - すべての Node-RED ノードタイプの完全なスキーマ
- api_reference.md - 例を含む Node-RED Admin API のドキュメント
- function_snippets.md - 再利用可能な function ノードのコードパターン
アセット(assets/)
次のテンプレートとボイラープレートファイルを使用します:
- templates/mqtt_flow.json - エラー処理を含む MQTT pub/sub フロー一式
- templates/http_api_flow.json - CRUD 操作と認証を備えた REST API
- boilerplate/function_async.js - 非同期 function ノードのパターン
- boilerplate/function_context.js - コンテキストストレージの例
基本的なワークフロー
新しいフローの作成
- 必要なフローのタイプ(MQTT、HTTP API、データ処理など)を決定します
scripts/create_flow_template.pyを使用してテンプレートを生成します- 要件に合わせてテンプレートを変更します
scripts/validate_flow.pyを使用してフローを検証します- Admin API を通じてデプロイするか、flows.json として保存します
既存のフローの変更
- flows.json ファイルを読み込み、解析します
- タイプと ID でノードを特定します
- 次の項目を維持しながら変更します:
- ワイヤ接続(ノード ID の配列)
- タブ参照(
zプロパティ) - ノードの座標(
x、y)
- 保存する前に変更を検証します
- 必要に応じて
scripts/wire_nodes.pyを使用してノードを接続します
function ノードの操作
function ノードについては、次を参照してください:
- 非同期操作については
assets/boilerplate/function_async.js - コンテキストストレージについては
assets/boilerplate/function_context.js - 特定のパターンについては
references/function_snippets.md
function ノードで利用可能なオブジェクト:
msg- メッセージオブジェクトnode- ノード API(send、done、error、warn、log、status)context- ノードスコープのストレージflow- フロースコープのストレージglobal- グローバルストレージRED- ランタイム APIenv- 環境変数
フローのデプロイ
Admin API を通じてフローをデプロイするには:
-
現在の設定を取得します:
GET /flows -
必要に応じて設定を変更します
-
適切なデプロイタイプを指定してデプロイします:
POST /flows Headers: Node-RED-Deployment-Type: full|nodes|flows|reload -
デプロイが成功したことを確認します
一般的なパターン
メッセージフローの構造
Node-RED のすべてのメッセージは次のパターンに従います:
- 主なデータは
msg.payloadに格納 - トピック/カテゴリは
msg.topicに格納 - 一意の ID は
msg._msgidに格納 - 必要に応じて追加プロパティを格納
エラー処理
次の方法でエラー処理を実装します:
- function ノード内の try-catch ブロック
- エラーを捕捉する Catch ノード
- ノードの状態を監視する Status ノード
- 専用のエラー出力ワイヤ
環境変数
設定には環境変数を使用します:
- ノードのプロパティ内:
$(ENV_VAR_NAME) - function ノード内:
env.get("ENV_VAR_NAME") - Docker 経由:
-e KEY=value
コンテキストストレージのレベル
適切なコンテキストレベルを選択します:
- ノードコンテキスト:単一のノード内でのみ使用
- フローコンテキスト:フロー/タブ内で共有
- グローバルコンテキスト:システム全体で共有
- 永続化:再起動後も保持(settings.js で設定)
検証チェックリスト
フローをデプロイする前に、次の項目を確認してください。
- JSON 構文が有効である
- すべてのワイヤー接続が既存のノード ID を参照している
- タブ参照(
zプロパティ)が正しい - Function ノードの JavaScript 構文が有効である
- 必要な設定ノード(MQTT ブローカーなど)が存在する
- 環境変数が正しく参照されている
- エラー処理が実装されている
クイックコマンド
Node-RED の UUID を 5 つ生成します。
python scripts/generate_uuid.py 5
MQTT フローテンプレートを作成します。
python scripts/create_flow_template.py mqtt my-mqtt-flow.json
フローファイルを検証します。
python scripts/validate_flow.py flows.json
2 つのノードを接続します。
python scripts/wire_nodes.py flows.json inject-node-id debug-node-id
Node-RED の設定
デフォルトのファイルの場所
- フロー:
~/.node-red/flows_<hostname>.json - 設定:
~/.node-red/settings.js - カスタムノード:
~/.node-red/node_modules/
Node-RED の実行
- 通常モード:
node-red - セーフモード(フローを実行しない):
node-red --safe - カスタムフローファイル:
node-red myflows.json
ベストプラクティス
- 適切なノードタイプを使用する:簡単な変換には、Function ノードよりも Change ノードを優先してください
- エラー処理を実装する:重要な経路には必ず Catch ノードを含めてください
- フローを文書化する:Comment ノードとノードの説明を使用してください
- タブで整理する:論理的な機能やシステムごとにフローを分けてください
- バージョン管理:意味のあるコミットメッセージを付けて、flows.json を git に保存してください
- 段階的にテストする:小さな変更を頻繁にデプロイしてテストしてください
- パフォーマンスを監視する:Status ノードとデバッグ出力を適切に使用してください
トラブルシューティング
一般的な問題について:
- 無効な JSON:
scripts/validate_flow.pyを使用して構文エラーを見つけてください - ワイヤーの破損:接続されているすべてのノード ID が存在することを確認してください
- 設定の不足:ブローカーやサーバーの設定が含まれていることを確認してください
- Function のエラー:まず JavaScript を単独でテストしてください
- API のデプロイに失敗する:認証を確認し、リビジョンの競合を確認してください
追加リソース
詳細な仕様と例について:
- ノードのプロパティの詳細は
references/node_schemas.mdを参照してください - API 操作は
references/api_reference.mdを確認してください - テスト済みのコードパターンには
references/function_snippets.mdを使用してください - 出発点として
assets/templates/のテンプレートをコピーしてください