MenuToggle Menu

関数

関数:特定のタスクを実行するためにデフォルトで準備した数式です。 関数は通常、データを取り込み、処理し、結果を表示します。

タスクの例:

  • テキストに含まれる文字数を計算します。
  • テキスト内の特定の単語を検索します。
  • どちらの数が2つの数の最小であるかを決定します。

関数は通常、次の構造になっています

  • function(argument:TYPE)→結果:TYPE
  • function(argument1:TYPE、argument2:TYPE)→結果:TYPE
  • function(argument1:TYPE、argument2:TYPE、argument3:TYPE)→結果:TYPE

関数は通常、タスクを実行するために1つまたは複数のデータを入力として受け取ります。引数と結果は、常に特定のタイプです。タイプは、テキスト、数字、または色に設定することができます。

選択できるカテゴリは以下の通りです。

Text

  • concat(source1: TEXT, source2: TEXT)TEXT

    2つの異なるテキストを1つにします

    • Example:concat("hello", "world")"helloworld"
  • indexOf(source: TEXT, searchValue: TEXT)NUMBER

    テキスト内のキーワードの先頭位置を見つけます。 キーワードがテキストに存在しない場合、戻り値は-1となります。

    • Example:indexOf("hello world", "world")6
    • Example:indexOf("hello world", "hello")0
    • Example:indexOf("hello world", "goodbye")-1
    • 電子メールの検証などの具体例にはindexOfを使用してください。詳細例はこちらをご覧ください。
  • length(source: TEXT)NUMBER

    テキスト内の文字数をカウントします。

    • Example:length("hello")5
    • Example:length("helloworld")10
    • Example:length("hello world")11
    • パスワードの長さを認証などを設定する時に使用します。詳細例はこちらをご覧ください。
  • lowerCase(source: TEXT)TEXT

    大文字のテキストを小文字に変換、または小文字のテキストを大文字に変換します。

    • Example:lowerCase("Hello")"hello"
  • upperCase(source: TEXT)TEXT

    大文字のテキストを小文字に変換、または小文字のテキストを大文字に変換します。

    • Example:upperCase("Hello")"HELLO"
  • left(source: TEXT, count: NUMBER)TEXT

    テキストの左または右から任意の数の文字を抽出します。

    • Example:left("hello", 3)"hel"
  • lpad(source: TEXT, length: NUMBER, pad: TEXT)TEXT

    好みの長さになるように、テキストの左側あるいは右側に入力した文字を追加します。

    • Example:lpad("5", 2, "0")"05"
    • Example:lpad("5", 4, "0")"0005"
  • rpad(source: TEXT, length: NUMBER, pad: TEXT)TEXT

    好みの長さになるように、テキストの左側あるいは右側に入力した文字を追加します。

    • Example:rpad("5", 2, "1")"51"
    • Example:rpad("5", 6, "1")"511111"
  • repeat(source: TEXT, count: NUMBER)TEXT

    指定されたテキストに対して、指定された回数だけ入力操作を繰り返します。

    • Example:repeat("hello", 2)"hellohello"
    • Example:repeat("hello", 3)"hellohellohello"
  • replace(source: TEXT, from: TEXT, to: TEXT)TEXT

    テキストの指定された部分を、他のテキストに置き換えます

    • Example:replace("helloworld", "world", "protopie")"helloprotopie"
    • Example:replace("goodbye, John", "goodbye", "thank you")"thank you, John"
  • trim(source: TEXT)TEXT

    テキストの両側の空白を削除します

    • Example:trim(" helloworld ")"helloworld"
    • Example:trim(" helloworld ")"helloworld"
  • ltrim(source: TEXT)TEXT

    テキストの左側または右側の空白を削除します

    • Example:ltrim(" helloworld ")"helloworld "
  • rtrim(source: TEXT)TEXT

    テキストの左側または右側の空白を削除します

    • Example:rtrim(" helloworld ")" helloworld"
  • regexextract(source: TEXT, regular expression: TEXT)TEXT

    提供された正規表現と一致するテキストの最初のサブストリングを抽出します。

    • Example:regexextract("Google Doc 101", "[0-9]+")"101"
    • Example:regexextract("The price today is $826.25", "[0-9]*\.[0-9]+[0-9]+")"826.25"
  • regexreplace(source: TEXT, regular expression: TEXT, replacement: TEXT)TEXT

    正規表現を使用してテキスト・ストリングの一部を他のテキストに置き換えます。

    • Example:regexreplace("Google Doc 101", "[0-9]+", "777")"Google Doc 777"
    • Example:regexreplace("The price today is $826.25", "[0-9]*\.[0-9]+[0-9]+", "315.75")"The price is $315.75"
  • parseJson(source: TEXT, key: TEXT)TEXT

    有効なJSONストリングを分析した後、その値を戻します。

    • Example:parseJson("{\"name\":\"John\", \"age\":30, \"car\":null}", "age")"30"
    • Example:parseJson("{\"name\":\"John\", \"age\":30, \"car\":null}", "name")"John"
    • parseJson(var、"key")を例として取り上げます。ここでvarはJSONストリングを保存するテキスト変数で、"key"は分析するキーに該当します。キーはネストされたキー呼び出し及び配列風オブジェクトなど、単純なレファレンスに対応します。また、この場合は . (ドット)を使用します。

      parseJson関数により、ProtoPie内の複雑なデータ構造作業を大幅に減らすことができます。また、大半のAPI応答はJSON形式で行われるため、Pies内でparseJsonを活用してAPIの作業を簡単に行うことができます。

      parseJson関数により、以下の作業を行うことができます。

    • ProtoPie Connect内のBridgeアプリ(例;メッセージ:「AutomobileSignal」、値:「json string」)を利用してPieにJSONストリングを転送することができます。
    • Receiveトリガーにより、Pie変数内の値を保存することができます。
    • JSONストリング内でデータ値を活用することができます。
    • こちらのPieの例から詳細をご確認いただけます。

Math

  • pow(source: NUMBER, exponent: NUMBER)NUMBER

    最初の数値を2番目の数値で累乗した結果を計算します。

    • Example:pow(2, 3)8
  • sqrt(source: NUMBER)NUMBER

    入力された数値の平方を計算します。入力した数値が負の場合は計算されません。

    • Example:sqrt(9)3
    • Example:sqrt(2)1.41
  • min(source1: NUMBER, source2: NUMBER)NUMBER

    複数の数の最小値または最大値を選択します

    • Example:min(0, 1)0
  • max(source1: NUMBER, source2: NUMBER)NUMBER

    複数の数の最大値を選択します

    • Example:max(0, 1)1
  • abs(value: NUMBER)NUMBER

    入力された数値の絶対値を抽出します。(負の記号は削除されます)

    • Example:abs(-1)1
    • Example:abs(5 - 25)20
  • sign(value: NUMBER)NUMBER

    入力された数値が正であるか負かを判別します。正の値は1、負の値は-1での値が抽出されます。0を入力すると、結果の値も0になります。

    • Example:sign(5)1
    • Example:sign(-10)-1
    • Example:sign(0)0
  • round(source: NUMBER)NUMBER

    入力された値を四捨五入します。

    • Example:round(3.49)3
    • Example:round(1.5)2
    • Example:round(6.79)7
  • floor(source: NUMBER)NUMBER

    入力された数字を切り捨て、あるいは切り上げます。

    • Example:floor(1.5)1
    • Example:floor(2.99)2
  • ceil(source: NUMBER)NUMBER

    入力された数字を切り捨て、あるいは切り上げます。

    • Example:ceil(1.5)2
    • Example:ceil(4.3)5
  • random()NUMBER

    0から1までランダムな数値

    • Example:random()0から1までの数値をランダムに選びます
  • random(min: NUMBER, max: NUMBER)NUMBER

    0と1の間の小数をランダムに抽出します。2つの数値を入力すると、両者の間にある数字をランダムに抽出します。

    • Example:random(1, 5)1から5までの数字をランダムに選びます
  • randomInt(min: NUMBER, max: NUMBER)NUMBER

    入力された2つの整数をランダムに抽出

    • Example:randomInt(1, 5)1から5までの整数をランダムに選びます
  • radians(degrees: NUMBER)NUMBER

    角度の値をラジアン(弧度)に変換します。

    • Example:radians(180)3.14 = π
    • Example:radians(90)1.57 = π / 2
  • degrees(radians: NUMBER)NUMBER

    ラジアン値(弧度)を角度値に変換します

    • Example:degrees($pi)180
    • Example:degrees($pi / 2)90
  • sin(radian: NUMBER)NUMBER

    ラジアンのサイン値を計算します。

    • Example:sin($pi / 2)1
    • Example:sin($pi / 6)0.5
  • cos(radian: NUMBER)NUMBER

    ラジアンのコサイン値を計算します。

    • Example:cos(0)1
    • Example:cos($pi / 2)0
  • tan(radian: NUMBER)NUMBER

    ラジアンのタンジェント値を計算します。

    • Example:tan($pi / 4)1
    • Example:tan(0)0
  • asin(x: NUMBER)NUMBER

    ラジアンで、xのアークサイン値を計算します。

    • Example:asin(1)1.57 = π / 2
    • Example:asin(0.5)0.52 = π / 6
  • acos(x: NUMBER)NUMBER

    xのアークコサイン(ラジアン)を計算します。

    • Example:acos(1)0
    • Example:acos(0)1.57 = π / 2
  • atan(x: NUMBER)NUMBER

    xのアークタンジェント(ラジアン)を計算します。

    • Example:atan(1)0.79 = π / 4
    • Example:atan(0)0
  • atan2(y: NUMBER, x: NUMBER)NUMBER

    ラジアンで、xとyのアークタンジェント値を計算します。

    • Example:atan2(1, 0)1.57 = π / 2
    • Example:atan2(1, 1)0.79 = π / 4

Color

  • color(red: NUMBER, green: NUMBER, blue: NUMBER)COLOR

    RGB値を基本とするカラーコードに変換します。

    • Example:color(255, 255, 255)#FFFFFF
    • Example:color(255, 102, 97)#FF6661
  • red(source: COLOR)NUMBER

    16進カラー値をRGBに変換し、赤を抽出します。

    • Example:red(#FF0000)255
    • Example:red(#008000)0
    • Example:red(#0000FF)0
  • green(source: COLOR)NUMBER

    16進カラー値をRGBに変換し、緑を抽出します。

    • Example:green(#FF0000)0
    • Example:green(#008000)128
    • Example:green(#0000FF)0
  • blue(source: COLOR)NUMBER

    16進カラー値をRGBに変換し、青を抽出します。

    • Example:blue(#FF0000)0
    • Example:blue(#008000)0
    • Example:blue(#0000FF)255

Type Conversion

  • number(source: TEXT)NUMBER

    テキストを数字に変換します。 テキストを数値に変換できない場合、この操作は無効です。

    • Example:number("1234")1234
    • Example:number("94.27")94.27
  • text(source: NUMBER)TEXT

    数字をテキストに変更します。

    • Example:text(1234)"1234"
    • Example:text(94.27)"94.27"
    • Example:text(1 + 3)"4"
  • format(source: NUMBER, format: TEXT)TEXT

    数字をテキスト形式に変換します。#で整数桁を、0に小数点以下の桁を表示することができます。

    • Example:format(1234.567, "#")"1235"
    • Example:format(1234.567, "#,###")"1,235"
    • Example:format(1234.567, "#.###,00")"1.234,57"
    • Example:format(1234.567, "#,##.00")"12,34.57"
    • Example:format(1234.567, "#,###.00")"1,234.57"
  • color(source: TEXT)COLOR

    テキストを16進カラー値に変換します。 テキストが16進カラーをサポートしている場合にのみ使用可能です。

    • Example:color("#FFFFFF")#FFFFFF

Layers

  • layer(source: TEXT)LAYER

    レイヤーまたはレイヤープロパティを使用します。

    • 式やその他の関数の一部として使用できます
  • layer(source: TEXT).propertyTEXT or NUMBER

    レイヤーまたはレイヤープロパティを使用します。 レイヤーのプロパティ詳細についてはこちらをご覧ください。

    • Example:layer("Rectangle 1").xRectangle 1 图层的X坐标
    • Example:layer("Oval 1").opacityOval 1 图层的透明度
    • Example:layer("Input 1").textInput 1 图层的文字
  • parent(layerName: LAYER)LAYER

    上層のプロパティ(コンテナ層、コンポーネントなど)を使用します。

    • 式やその他の関数の一部として使用できます
  • parent(layerName: LAYER).propertyTEXT or NUMBER

    上層のプロパティ(コンテナ層、コンポーネントなど)を使用します。 レイヤーのプロパティの詳細についてはこちらをご覧ください。

    • Example:parent(`Rectangle 1`).xRectangle 1 上層のX座標
    • Example:parent(`Oval 1`).opacityOval 1 層の上層の透明度
  • initial(layerName: LAYER, layerProperty: TEXT)TEXT or NUMBER

    特定のレイヤーのプロパティのインタラクション適用前の初期設定値を変換します。レイヤーのプロパティの詳細については、こちらをご参照ください。

    • Example:initial(`Rectangle 1`, "x")Rectangle 1レイヤーのx座標の初期値
    • Example:initial(`Oval 1`, "opacity")Oval 1レイヤーの透明度の初期値
    • Example:initial(`Input 1`, "text")Input1のテキストの初期値

Relative Coordinates

  • toLayerX(containerName: LAYER, x: NUMBER, y: NUMBER)NUMBER

    コンテナレイヤーまたはコンポーネントを基準にしてx座標を計算します。 コンテナまたはコンポーネント内のレイヤーは、それらが配置されているコンテナまたはコンポーネントを基準にした座標に従います。

    • 例)画面に対する相対位置(100, 200)に基づいてコンテナ内のx座標を取得する場合は、次の関数を使用します。
    • toLayerX(`Container 1`, 100, 200)画面の位置x = 100を基準にして、コンテナ1のx座標を取得します。
  • toLayerY(containerName: LAYER, x: NUMBER, y: NUMBER)NUMBER

    コンテナレイヤーまたはコンポーネントを基準にしてy座標を計算します。 コンテナまたはコンポーネント内のレイヤーは、それが配置されているコンテナまたはコンポーネントを基準にした座標に従います。

    • たとえば、画面(100, 200)に対する相対位置に基づいてコンテナ内のy座標を取得する場合は、次の関数を使用します。
    • toLayerY(`Container 1`, 100, 200)画面の位置y = 200を基準にして、コンテナ1のy座標を取得します。
  • toScreenX(containerName: LAYER, x: NUMBER, y: NUMBER)NUMBER

    画面を基準にしてx座標を計算します。 コンテナまたはコンポーネント内のレイヤーは、それが配置されているコンテナまたはコンポーネントを基準にした座標に従います。

    • たとえば、相対的なコンテナレイヤーまたはコンポーネントの位置(10, 20)に基づいて画面のx座標を取得する場合は、次の関数を使用します。
    • toScreenX(`Container 1`, 10, 20)コンテナ1コンテナレイヤーx = 10の位置を基準にして、画面のx座標を取得します。
  • toScreenY(containerName: LAYER, x: NUMBER, y: NUMBER)NUMBER

    画面を基準にしてy座標を計算します。 コンテナまたはコンポーネント内のレイヤーは、それが配置されているコンテナまたはコンポーネントを基準にした座標に従います。

    • たとえば、相対的なコンテナレイヤーまたはコンポーネントの位置(10, 20)に基づいて画面のy座標を取得する場合は、次の関数を使用します。
    • toScreenY(`Container 1`, 10, 20)コンテナ1コンテナレイヤーy = 20の位置を基準にして、画面のy座標を取得します。

  • timeNow()TEXT

    • Example:timeNow()
  • time(hour: NUMBER, min: NUMBER, sec: NUMBER)TEXT

    • Example:time(14, 50, 23)
  • hour()NUMBER

    • Example:hour("17:44:30")
  • minute()NUMBER

    • Example:minute("17:44:30")
  • second()NUMBER

    • Example:second("17:44:30")
  • diffTime()NUMBER

    • Example:diffTime("17:45:30", "18:45:30", "H")
    • Example:diffTime("17:45:30", "18:45:30", "M")
    • Example:diffTime("17:45:30", "18:45:30", "S")
  • formatTime()TEXT

    • Example:formatTime("11:44:30", "HHa")
    • Example:formatTime("11:44:30", "HHam mm")
    • Example:formatTime("11:44:30", "hh:mm a")
  • dateNow()TEXT

    • Example:dateNow()
  • date(year: NUMBER, month: NUMBER, day: NUMBER)TEXT

    • Example:date(2014, 12, 8)
  • year()NUMBER

    • Example:year("2014-12-08")
  • month()NUMBER

    • Example:month("2014-12-08")
  • day()NUMBER

    • Example:day("2014-12-08")
  • diffDate()NUMBER

    • Example:diffDate("1973-02-24", "1969-05-16", "Y")
    • Example:diffDate("1973-02-24", "1969-05-16", "M")
    • Example:diffDate("1973-02-24", "1969-05-16", "D")
    • Example:diffDate("1969-05-16", "1973-02-24", "Y")
    • Example:diffDate("1969-05-16", "1973-02-24", "M")
    • Example:diffDate("1969-05-16", "1973-02-24", "D")
    • Example:diffDate("1969-05-16", "1973-02-24", "MD")
    • Example:diffDate("2023-01-01", "2023-02-10", "MD")
    • Example:diffDate("1969-05-16", "1973-02-24", "YM")
    • Example:diffDate("1969-05-16", "1973-02-24", "YD")
    • Example:diffDate("2023-01-01", "2023-02-10", "YD")
  • formatDate()TEXT

    • Example:formatDate("2023-06-01", "DD/MM/YYYY")
    • Example:formatDate("2023-06-01", "YYYY MMMM dddd")
    • Example:formatDate("2023-06-01", "MMM DD, YY")
  • epochtodate(timestamp: NUMBER)TEXT

    • Example:epochtodate(0)
    • Example:epochtodate(-1)
    • Example:epochtodate(1)
    • Example:epochtodate(1655908429662)
  • epochtodate(timestamp: NUMBER, format: TEXT)TEXT

    • Example:epochtodate(1695316200000)
    • Example:epochtodate(1695316200000, "hh:mm")

ProtoPieでの関数の活用についてもっと知りたいですか?ProtoPieのマスタークラスに登録すると、ここで説明している関数機能のさまざまな活用方法に関する詳しい例やガイドをご覧いただけます。

Back To Top