← トップページに戻る English

Gravio Pre Mappings/Post Mappings 関数リファレンス

ASTERIAのGravio(ノードコンピューティングプラットフォーム)でアクションフローを設定する際に使える関数の詳細な解説です。Pre MappingsとPost Mappingsの式の右辺やトリガーの式で利用できます。

目次

  1. 文字列関数
  2. 型変換関数
  3. エンコード関数
  4. 日付関数
  5. 環境変数関数
  6. 正規表現関数
  7. 算術系関数

1. 文字列関数

関数名 引数 説明
Len Len(s) 文字列の長さ(バイト数)を返す。sが配列やObjectの場合は要素数を返す。 Len(“abc012漢字”) -> 11
Contains Contains(s, substr) sの中にsubstrが含まれているかBoolで返す Contains(“abc012漢字”, “漢字”) -> true
RuneCount RuneCount(s) sの文字列の文字数を返す RuneCount(“abc012漢字”) -> 8
HasPrefix HasPrefix(s, prefix) sがprefixで始まるかBoolで返す HasPrefix(“https://www.asteria.com/”, “https://”) -> true
HasSuffix HasSuffix(s, suffix) sがsuffixで終わるかBoolで返す  
FirstIndex FirstIndex(s, substr) sの中で最初に現れるsubstrの位置を返す。ない場合は-1 FirstIndex(“abc012漢字”, “漢字”) -> 6
Join Join(a, sep) aの配列要素をsepを挟んで1つの文字列にする。 Join([“abc”,”def”], “-“) -> “abc-def”
LastIndex LastIndex(s, substr) sの中で最後に現れるsubstrの位置を返す。ない場合は-1  
Repeat Repeat(s, count) sをcount回繰り返した文字列を返す Repeat(“abc012漢字”, 3) -> “abc012漢字abc012漢字abc012漢字”
Replace Replace(s, old, new[, n]) sの中でold文字列をnew文字列にn回目まで置換する。nが0より小さい時は全て(デフォルトは-1)。  
Split Split(s, sep[, n]) sをsepで最大n個の要素に区切り配列で返す。nが0より小さい時は全て(デフォルトは-1) Split(“a,b,c”, “,”) -> [“a”, “b”, “c”]
ToLower ToLower(s) sを小文字に変換する  
ToUpper ToUpper(s) sを大文字に変換する  
Trim Trim(s[, cutset]) sの頭と最後のcutsetに含まれる文字を除いた文字列を返す。cutsetはデフォルトはスペース文字 Trim(“ abc “) -> “abc”
TrimLeft TrimLeft(s[, cutset]) sの頭cutsetに含まれる文字を除いた文字列を返す。cutsetはデフォルトはスペース文字  
TrimRight TrimRight(s[, cutset]) sの最後のcutsetに含まれる文字を除いた文字列を返す。cutsetはデフォルトはスペース文字  
TrimPrefix TrimPrefix(s, prefix) sがprefixではじまっていたら、それを取り除いた文字列を返す。始めていない場合はsをそのまま返す TrimPrefix(“https://www.asteria.com”, “https://”) -> “www.asteria.com”
TrimSuffix TrimSuffix(s, suffix) sがsuffixでおわっていたら、それを取り除いた文字列を返す。終わっていない場合はsをそのまま返す  
JSONPath JSONPath(path, s) sからpathで指定して値を文字列で返す。 JSONPath(“$.store.book[*].author”, cv.Payload)
Sprintf Sprintf(format, s) 書式付の文字列を整形し文字列を返します。書式は%に続いて変換指定子とオプションでフラグ、幅、精度で指定できます Sprintf(“メッセージ件数: %d”, ToInt(cv.Payload))
IFS IFS (条件1, 値1[, 条件2, 値2, …]) 条件を1から順に評価し合致した値を返す。条件にtrueと指定すると必ず合致するので、最後の条件にtrueを指定すると、それ以外すべてという条件を指定できます。 IFS (ToFloat(cv.Payload) >= 10, “10以上です”, true, “10未満です”)
Left Left(s, len) sの先頭からlen文字数を取り出す。lenは漢字などの文字も1文字と数える  
Right Right(s, len) sの末尾からlen文字数を取り出す。lenは漢字などの文字も1文字と数える  
Mid Mid(s, start, len) sのstart位置からlen文字数を取り出す。startは先頭の位置を1とし、漢字などの文字も1文字とみなし位置を指定します。lenは漢字などの文字も1文字と数える  
Substring Substring(s, start[, end]) sのstart位置からend位置までの文字列を取り出す。start/endは先頭の位置を0とし、漢字などの文字も1文字とみなし位置を指定する  
Slice Slice(s[, start[, end]]) sのstart位置からend位置までの文字列を取り出す。start/endは先頭の位置を0とし、漢字などの文字も1文字とみなし位置を指定する。start/endに負の値を指定した場合は末尾から位置指定とみなす  

1.1.1 JSONPathの使用例

JSONPath()の使用例を解説します。センサーデータ(@cv.Payload@)やトリガー条件で実行するアクションの引数(@tv.Data@)がJSON形式の場合にJSONPath()を使用して値を参照することができます。

例えば store -> bicycle -> color を参照する場合には

cv.Payload.store.bicycle.color

と記述することができますがJSONPath()を使用した場合には

JSONPath("$.store.bicycle.color", cv.Payload)

と記述することもできます。

JSONPathの第一引数 path の構文要素:

path 説明
$ ルート オブジェクト/エレメント
@ カレント オブジェクト/エレメント
. or [] 子オペレーター
.. 再帰下降
ワイルドカード
[] 添え字演算子 (ネイティブの配列演算子)
[,] ユニオン演算子(代替名または配列インデックスをセットとして使用できます)
[start:end:step] 配列スライス演算子
?() フィルタ(スクリプト)式
() 基盤となるスクリプトエンジンを使用したスクリプト式

JSONPathの第一引数 path の使用例:

説明
$.store.book[*].author store内のbook配列のすべての author
$..author すべてのauthor
$.store.* store内のbook配列とbicycle
$.store..price store内のすべてのprice
$..book[2] 3番目のbook
$..book[(@.length-1)]$..book[-1:] 最後のbook
$..book[0,1]$..book[:2] book配列の最初の2つのbook
$..book[?(@.isbn)] book配列のすべてのisbn
$..book[?(@.price<10)] book配列のpriceが10より小さいもの
$..* すべてのノード/エレメント

1.1.2 Sprintfの使用方法

書式付の文字列を整形し文字列を返します。書式は%に続いて変換指定子とオプションでフラグ、幅、精度で指定できます。

変換指定子:

変換指定子 説明
%b 整数2進数
%d 整数10進数
%x %X 16進数
%e %E 浮動小数、科学的表記法
%f %F 浮動小数、指数のない表記
%g %G 浮動小数、指数が大きい場合は%e、それ以外が%f
%s 文字列
%% %そのものの文字

フラグ:

フラグ 説明
+ 符号つき
- 左寄せ
0 幅未満のときはスペースではなく0を埋める

幅、精度:

幅、精度 説明
%f デフォルトの幅と精度
%9f 幅9
%.2f 精度2
%9.2f 幅9、精度2

例:

Sprintf("メッセージ件数: %d", ToInt(cv.Payload))
Sprintf("浮動小数の小数点第二位まで: %.2f", cv.Payload)

2. 型変換関数

以下の関数が利用できます。

関数名 引数 説明
ToBool ToBool(a) Bool型へ変換
ToInt ToInt(a) 整数型へ変換
ToFloat ToFloat(a) 浮動小数型へ変換
ToString ToString(a) 文字列型へ変換
ToDate ToDate(a) 日時型へ変換
ToBinary ToBinary(a) バイト列へ変換
ToJSON ToJSON(a) JSON配列型またはJSON Object型へ変換

3. エンコード関数

以下の関数が利用できます。

関数名 引数 説明
URLPathEscape URLPathEscape(s) sをURLパスセグメントに安全に配置できる文字列にエスケープする URLPathEscape(“test 1?test2 test3”) -> “test1%3Ftest2%20test3”
URLPathUnescape URLPathUnescape(s) URLPathEscapeでエスケープされた文字列をもとに戻す  
URLQueryEscape URLQueryEscape(s) sをURLクエリに安全に配置できる文字列にエスケープする URLQueryEscape(“test 1?test2 test3”) -> “test1%3Ftest2+test3”
URLQueryUnescape URLQueryUnescape(s) URLQueryEscapeでエスケープされた文字列をもとに戻す  
MD5 MD5 バイト列bのMD5を返す  
SHA1 SHA1 バイト列bのSHA1を返す  
SHA256 SHA256 バイト列bのSHA256を返す  
BASE64 BASE64 バイト列bのBASE64を返す。padでtrueを指定すると=パディングが行われる(デフォルトはtrue)  
DecodeBASE64 DecodeBASE64(s[, pad]) BASE64sをデコードする。padでtrueを指定すると=パディングが行われたBASE64と解釈する(デフォルトはtrue)  
BASE64URL BASE64URL バイト列bをURLまたはファイル名で使用されるBASE64を返す。padでtrueを指定すると=パディングが行われる(デフォルトはtrue)  
DecodeBASE64URL DecodeBASE64URL(s[, pad]) BASE64sをデコードする。padでtrueを指定すると=パディングが行われたBASE64と解釈する(デフォルトはtrue)  

4. 日付関数

以下の関数が利用できます。

関数名 引数 説明
Now Now([timezone]) 今現在の日時の日時型を返す  
Year Year(t[, timezone]) 日時型tの年を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。  
Month Month(t[, timezone]) 日時型tの月を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。  
Day Day(t[, timezone]) 日時型tの日を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。  
Hour Hour(t[, timezone]) 日時型tの時を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。  
Minute Minute(t[, timezone]) 日時型tの分を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。  
Second Second(t[, timezone]) 日時型tの秒を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。  
Weekday Weekday(t[, timezone]) 日時型tの曜日を返す。timezoneが指定されたら、そのタイムゾーンとして解釈する。(0は日曜日)  
ToLocal ToLocal(t) 日時型tをシステムタイムゾーンに変換する  
ToUTC ToUTC(t) 日時型tをUTCに変換する  
ToTimezone ToTimezone(t, timezone) 日時型tを指定されたタイムゾーンに変換する ToTimezone(Now(), “America/New_York”)
DateFormat DateFormat(t, layout) 日時型tを指定されたレイアウトで文字列に変換する DateFormat(Now(), “02 Jan 06 15:04 JST”)
DateParse DateParse(layout, s[, timezone]) sをlayoutに沿って解釈し日時型を返す  
AddDuration AddDuration(t, s) 日時型tに指定されたsを加算する。sが整数の場合にはミリ秒とし、文字列の場合は整数に単位を指定する。単位は時”h”、分”m”、秒”s”、ミリ秒”ms”、マイクロ秒”us”、ナノ秒”ns”が指定できます AddDuration(Now(), 100) AddDuration(Now(), “1h”)
AddDate AddDate(t, y, m, d) 日時型tに指定されたy(年)、m(月)、d(日)を加算する AddDate(Now(),0, 0, 7)

DateFormat, DateParseで指定するレイアウトの例:

形式 レイアウト
Layout “01/02 03:04:05PM ‘06 +0900”
ANSIC “Mon Jan _2 15:04:05 2006”
UnixDate “Mon Jan _2 15:04:05 JST 2006”
RubyDate “Mon Jan 02 15:04:05 +0900 2006”
RFC822 “02 Jan 06 15:04 JST”
RFC822Z “02 Jan 06 15:04 +0900”
RFC850 “Monday, 02-Jan-06 15:04:05 JST”
RFC1123 “Mon, 02 Jan 2006 15:04:05 JST”
RFC1123Z “Mon, 02 Jan 2006 15:04:05 +0900”
RFC3339 “2006-01-02T15:04:05Z07:00”
RFC3339Nano “2006-01-02T15:04:05.999999999Z07:00”
Generic “20060102”

使用例:

データを保存するファイル名を現在の7日前の日付で作成する

DateFormat(AddDate(Now("Asis/Tokyo"),0,0,-7),"20060102")+".CSV"

5. 環境変数関数

以下の関数が利用できます。

関数名 引数 説明
Env Env(s) 環境変数を返す

6. 正規表現関数

以下の関数が利用できます。

関数名 引数 説明
RegexMatch RegexMatch(re, s) 正規表現reとsがマッチするかBoolで返す RegexMatch(“G.*o”, “Gravio Hub Kit”) -> true
RegexFind RegexFind(re, s) 正規表現reとsがマッチした最初の文字列を返す RegexFind(“i.”, “Gravio HubKit”) -> “io”
RegexFindSubmatch RegexFindSubmatch(re, s) 正規表現reとsがマッチした最初の文字列と括弧で囲まれた部分式があれば配列で返す RegexFindSubmatch(“(G.o)(H.t)”, “Gravio HubKit”) -> [“Gravio HubKit”, “Gravio”, “HubKit”]
RegexFindAll RegexFindAll(re, s[, n]) 正規表現reとsがマッチした全ての文字列を配列で返す RegexFindAll(“i.”, “Gravio Hub Kit”) -> [“io”, “it”]
RegexReplace RegexReplace(re, s, repl) 正規表現reとsがマッチしたreplに置換した文字列を返す。replでは$1のような部分式を使用できる。  
UUID UUID UUID文字列を返す。sepはセパレータ(デフォルトは空文字列)  

7. 算術系関数

以下の関数が利用できます。

関数名 引数 説明
Abs Abs(v) 絶対値を返します
Acos Acos(v) 逆余弦を返します
Acosh Acosh(v) 逆双曲線余弦を返します
Asin Asin(v) 逆正弦を返します
Asinh Asinh(v) 逆双曲線正弦を返します
Atan Atan(v) 逆正接を返します
Atan2 Atan2(y, x) y/xの逆正接を返します
Atanh Atanh(v) 逆双曲線正接を返します
Cbrt Cbrt(v) 立方根を返します
Ceil Ceil(v) 小数点以下を切り上げた値を返します
Copysign Copysign(x, y) 大きさxで符号yの値を返します
Cos Cos(v) 余弦を返します
Cosh Cosh(v) 双曲線余弦を返します
Erf Erf(v) 誤差関数を返します
Erfc Erfc(v) 相補誤差関数を返します
Exp Exp(x) 自然対数eのx乗を返します
Exp2 Exp2(x) 2のx乗を返します
Expm1 Expm1(x) 自然対数eのx乗から1を引いた値を返します
Floor Floor(v) 小数点以下を切り捨てた値を返します
Hypot Hypot(x, y) Sqrt(xx + yy)を返します
Inf Inf(sign) sign>=0の時、正の無限大を返し、sign<0の時、負の無限大を返します
IsInf IsInf(v, sign) signの符号に応じて無限大であるかを返します
IsNaN IsNaN(v) 正規の値ではないNot a Numberであるかを返します
Log Log(v) 自然対数を返します
Log10 Log10(v) 10を底とした対数を返します
Log1p Log1p(v) +1した自然対数を返します
Log2 Log2(v) 2を底とした対数を返します
Max Max(v1[, v2, v3, …]) 指定された値で最大の値を返します
Min Min(v1[, v2, v3, …]) 指定された値で最小の値を返します
NaN NaN() 正規の値ではないNot a Numberを返します
PI PI() 円周率を返します
Pow Pow(x, y) xのy乗を返します
Round Round(v[, n]) 小数点以下を四捨五入した値を返します。nを指定すると小数点第n位で四捨五入します
Signbit Signbit(v) 値が負であるかを返します
Sin Sin(v) 正弦を返します
Sinh Sinh(v) 双曲線正弦を返します
Sqrt Sqrt(v) 平方根を返します
Random Random([max]) 乱数を返します。引数がなければ、0以上1未満の浮動小数を返し、引数を指定すると、指定された値を整数の最大値とみなし、0以上指定最大値未満の整数を返します
Tan Tan(v) 正接を返します
Tanh Tanh(v) 双曲線正接を返します
Trunc Trunc(v[, n]) 小数部を切り捨て整数値を返します。nを指定すると小数点第n位で切り捨てます
Degrees Degrees(v) ラジアンを度に変換します
Radians Radians(v) 度をラジアンに変換します
FtoC FtoC(v) 華氏を摂氏に変換します
CtoF CtoF(v) 摂氏を華氏に変換します
GtoLBM GtoLBM(v) グラムをポンドに変換します
LBMtoG LBMtoG(v) ポンドをグラムに変換します
GtoOZM GtoOZM(v) グラムをオンスに変換します
OZMtoG OZMtoG(v) オンスをグラムに変換します
MtoIN MtoIN(v) メートルをインチに変換します
INtoM INtoM(v) インチをメートルに変換します
MtoFT MtoFT(v) メートルをフィートに変換します
FTtoM FTtoM(v) フィートをメートルに変換します