投稿日: Jan 12, 2021

AWS IoT SiteWise が統一関数呼び出し構文 (UFCS) を使用した式表現でのメソッドの使用をサポートするようになりました。

ユーザーは、ネストされた関数を使用して AWS IoT SiteWise で変換とメトリクスの式を定義することができましたが、今後は UFCS 機能を使用してメソッドコールをチェーンすることによる定義も可能になります。この構文は、AWS IoT SiteWise アセットモデルのメトリクスと変換に対する複雑な式の読み取り可能性とトレーサビリティの向上に役立ちます。UFCS は、AWS IoT SiteWise でサポートされる現行の関数タイプ (common、comparison、conditional、string、aggregation、および temporal 関数) のすべてで使用できます。UFCS は、AWS IoT SiteWise コンソールまたはコマンドラインインターフェイス (CLI) での使用も可能です。UFCS と関数タイプの詳細については、AWS IoT SiteWise の式表現を参照してください。 

UFCS 機能は、ユーザーが f(n) をメソッドコールが使用される n.f() と置き換えて、AWS IoT SiteWise で現在使用できる任意の関数を参照できるようにします。より一般的に言うと、ユーザーは a.f(b,c..) (ここでは「a」を変数にする、またはそれ自体を関数 a= f1(x) にすることができます) としてのメソッドのチェーン化にこの構文を使用して、関数 f(a,b,c...) と置き換えることができます。お客様のユースケース例として、ユーザーが cosine 関数である log(cos(a)) のログを返すメトリクスと定義したいという場合は、UFCS を使用して、それを cos(a).log() として表現できるようになります。AWS IoT SiteWise は、UFCS を使用した if-else 関数のチェーン化もサポートするため、複数レベルのネストされた条件ロジックを定義し、トレースすることが容易になります。汎用フォーマットとして、ネストされた if 文は以下のように記述されていました。

if(condition1, on_true_1, if(condition2, on_true_2, on_false_2))

今後は、UFCS フォーマットの下にネストされた if-elif を使用して記述することもできるようになります。

if(condition1, on_true_1). elif(condition2, on_true_2, on_false_2)

再生可能エネルギーサイトの運営者が、ソーラーパネルの出力電力が特定の範囲内 (1~4 キロワット) かどうかについてテストしたいという例を挙げると、運営者には UFCS を使用した efficiency= if(power.lt(1000),0).elif(power.gt(4000),0,1)、またはネストされた関数を使用した if(lt(power, 1000), 0, if(gt(power,4000), 0,1)) の 2 つの方法でコード化する柔軟性があります。さらに、UFCS は文字列演算でのメソッドのチェーン化にも使用できます。例えば、ユーザーは、ネストされた関数を使用した as status= contains(lower(jp(message, ‘$.status’)),‘fail’)、または UFCS 構文を使用した status= message.jp(‘$.status’).lower().contains(‘fail’) という JSON メッセージで装置のステータスを検知できます。これにより、複数の関数を使った計算における優れたトレーサビリティとトラブルシューティングが実現されます。 

AWS IoT SiteWise は、産業機器からのデータの大規模な収集、保存、整理、およびモニタリングを実行するためのマネージドサービスです。 詳細については、AWS IoT SiteWise のウェブサイト、またはデベロッパーガイドを参照してください。AWS IoT SiteWise がサポートされているリージョンのリストについては、AWS リージョンをご覧ください。