iii-custom-triggers について
iii-custom-triggers は、iii エンジンの開発者向けスキルです。外部イベントソースをカスタムトリガーとして登録し、イベントを関数に渡す方法を扱い、JavaScript、Python、Rust の例を含みます。
主な機能
- 01カスタムトリガータイプの登録
- 02トリガーの登録と解除の管理
- 03外部イベントを関数へルーティング
- 04JavaScript、Python、Rust の例
活用シーン
- 01Webhook やファイル監視イベントの接続
- 02IoT または CDC イベントの購読
- 03解除時のイベントリスナーのクリーンアップ
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ iii-hq/ skills --skill iii-custom-triggersインストール後、Claude Code で/iii-custom-triggersを入力して読み込まれたか確認します。
詳細
カスタムトリガー
同等の機能:カスタムイベントアダプター、Webhook レシーバー
主な概念
タスクに該当する場合は、以下の概念を使用してください。すべてのカスタムトリガーに必要なわけではありません。
- registerTriggerType(id, handler) は、
registerTriggerおよびunregisterTriggerコールバックを備えた新しいトリガータイプを定義します - ハンドラーには、
id、function_id、configを含む TriggerConfig が渡されます - 外部イベントが発生したら、
iii.trigger(function_id, event)を呼び出して登録済みの関数を実行します - トリガータイプが不要になったら、unregisterTriggerType でクリーンアップします
- 組み込みのトリガータイプ名(
http、cron、queue、state、stream、subscribe)を再利用しないでください
アーキテクチャ
外部イベントソース(Webhook、ファイル監視、IoT、CDC など)
→ カスタムトリガーハンドラー(registerTriggerType)
→ iii.trigger(function_id, event)
→ 登録済みの関数がイベントを処理
使用する iii プリミティブ
| プリミティブ | 用途 |
|---|---|
registerTriggerType(id, handler) | ライフサイクルフックを備えた新しいトリガータイプを定義します |
unregisterTriggerType(id) | カスタムトリガータイプをクリーンアップします |
TriggerConfig: { id, function_id, config } | トリガーハンドラーに渡される設定 |
iii.trigger(function_id, event) | イベント発生時に登録済みの関数を実行します |
リファレンス実装
完全な動作例については、../references/custom-triggers.js を参照してください。外部イベントを監視し、登録済みの関数に振り分けるカスタムトリガータイプの例です。
Python 版も利用できます:../references/custom-triggers.py
Rust 版も利用できます:../references/custom-triggers.rs
一般的なパターン
このパターンを使用するコードには、該当する場合、一般に以下が含まれます。
registerWorker(url, { workerName })— ワーカーの初期化registerTriggerType(id, { registerTrigger, unregisterTrigger })— カスタムトリガーを定義しますregisterTrigger(config)— 関数がこのトリガータイプを購読するときに iii が呼び出しますunregisterTrigger(config)— 関数が購読を解除するときに iii が呼び出しますiii.trigger(config.function_id, eventPayload)— 対象の関数を実行しますunregisterTrigger内のクリーンアップロジック(接続を閉じる、リスナーを削除する、インターバルをクリアする)const logger = new Logger()— 構造化ロギング
このパターンの適用
タスクに該当する場合は、以下の方法で適用してください。
- イベントソースを表す一意のトリガータイプ名(例:
file-watcher、mqtt、db-cdc)を選びます registerTriggerでリスナーを開始します(ソケットを開く、エンドポイントをポーリングする、トピックを購読する)- リソースリークを防ぐため、
unregisterTriggerでリスナーを停止します - 登録解除を適切に行えるよう、
config.idをキーとしてアクティブなリスナーをマップに保存します iii.trigger(function_id, event)の呼び出し時に、関連するイベントデータをペイロードに含めます
パターンの適用範囲
- タスクで組み込みの HTTP ルートを使用する場合は、
iii-http-endpointsを優先してください。 - タスクで組み込みの cron スケジュールを使用する場合は、
iii-cron-schedulingを優先してください。 - タスクで組み込みのキュートリガーを使用する場合は、
iii-queue-processingを優先してください。 - イベントソースに対応する組み込みトリガータイプが iii にない場合は、
iii-custom-triggersを使用してください。
使用する場面
- タスクの主な内容が iii エンジンでの
iii-custom-triggersに関する場合は、このスキルを使用してください。 - リクエストでこのパターンまたは同等の実装が直接求められている場合に使用します。
適用範囲
- 無関係なタスクへの汎用的な代替手段として、このスキルを使用しないでください。
- より具体的な iii スキルが適している場合、このスキルを適用してはいけません。
- このスキルの例を適用する前に、必ず環境と安全性の制約を確認してください。
コメント
Markdown 対応