カスタムフックとトリガー
Hooks and triggers connect platform lifecycle events to automated responses – so that things happen at the right moment automatically, not when someone remembers to act.
Behavior Extensibilityフレームワークは、プラットフォームイベントをカスタムロジックのアタッチポイントとして公開します。イベントが発生すると――設計がWorkspaceにコミットされる、リリースが開始される、コンポーネントのライフサイクル状態が変化する――フックがそれに応答します。応答としては、条件が満たされていない場合にアクションをブロックするバリデーション、外部システムへの通知や更新を行う副作用、あるいはパイプラインの次のステップに向けてデータを準備する変換などがあります。
フックは、プラットフォームを能動的にする仕組みです。これがなければ、自動化は受動的になります。つまり、誰かが状態の変化に気づき、アクションを起動しなければなりません。フックがあれば、トリガーそのものがイベントであるため、プラットフォームは定義どおりの適切なタイミングで動作します。
フックの種類とその役割
-
Blocking hooks (pre-action) – ブロッキングフックは、アクションが完了する前に発火し、その進行を防ぐことができます。たとえば、pre-releaseイベントに登録されたフックは、最終的な一連のバリデーションを実行し、いずれかが失敗した場合はリリースを中止できます。コンポーネント承認時のフックでは、コンポーネントがライブラリに入る前に、必須フィールドがすべて入力されていること、およびすべての製造元部品が承認済みリストに含まれていることを確認できます。
ブロッキングフックは、アクションを許可する前に必ず真でなければならないルールを強制するメカニズムです。理想的には真であってほしいルールではなく、必ず真でなければならないルールに対するものです。これは、「リリース前にXを確認することを推奨する」と「Xが真でなければリリースは実行できない」の違いに相当します。
-
Non-blocking hooks (post-action) – ノンブロッキングフックは、アクションが完了した後に発火し、副作用をトリガーします。post-releaseのフックであれば、リリース成果物を外部システムへ送信したり、ERP内のレコードを更新したり、後工程のチームへ通知したり、監査イベントを記録したりできます。リリース自体はすでに完了しており、フックはその結果に対応します。
アクション後フックは、外部システムとプラットフォーム状態を同期させるための統合メカニズムです。関連イベントが発生したまさにそのタイミングで発火するため、定期ポーリングや手動のデータエクスポートよりも信頼性が高くなります。
-
Scheduled triggers – イベント駆動フックに加えて、プラットフォームは自動化ロジックのスケジュール実行もサポートしています。これは、特定イベントへの応答ではなく、定期スケジュールに従って実行されるスクリプトやチェックです。定期レポート、リアルタイムである必要のないデータ同期、定期的に実行すべきメンテナンス処理に有用です。
一般的なパターン
-
Release gate enforcement – ブロッキングのpre-releaseフックは、最終的な一連のチェック――カスタムバリデーション、外部システム参照、ドキュメントの完全性チェック――を実行し、いずれかが失敗した場合はリリースをブロックします。エンジニアは、何が失敗したのか、何を解決する必要があるのかについて明確なフィードバックを受け取れます。リリースレコードにはフック結果が含まれるため、何を確認し、何が合格したのかについて完全な監査証跡が残ります。
-
Post-release propagation – ノンブロッキングのpost-releaseフックは、リリースデータを後工程システムへ送信します。たとえば、製造実行、ERP、プロジェクト管理、アーカイブシステムなどです。フックはリリース完了時に自動で発火するため、各システムへの通知や更新という手動ステップを排除できます。
-
Lifecycle synchronization – Altium 365でコンポーネントのライフサイクル状態が変化したとき――「In Design」から「Released」、または「Active」から「Obsolete」へ――フックはその変更をPLM、ERP、またはコンポーネントレコードを保持するその他のシステムへ伝播できます。フックは同期ポイントであり、プラットフォームイベントが権威あるトリガーです。
-
Key System Flow override – 高度なケースでは、フックを使用してプラットフォームの中核フローをオーバーライドまたは拡張できます。つまり、システムライフサイクルの重要なポイントでデフォルト動作を変更することが可能です。これは高度な利用方法であり、今後時間をかけて拡張される機能としてロードマップに含まれています。
リスクと障害対応
外部システムが利用できないことが原因でブロッキングフックが失敗した場合、設計をそのまま通過させてはいけません。障害時の挙動が重要です。承認済みベンダーリストに到達できないフックは、fail openで潜在的に非準拠の設計を先に進めるのではなく、fail closedとして動作し、アクションをブロックしつつ、そのチェックを完了できなかったことを報告するべきです。
外部システムへデータを送るアクション後フックは、それらのシステムが利用可能であることへの依存を生みます。部分的な障害を前提に設計してください。配信できなかったイベントをログに記録し、リトライロジックを実装し、フックの失敗によってプラットフォームと外部システムの状態が不整合にならないようにする必要があります。