Pieceの機能を拡張する

目次

このページでは、Lambdaを使ったPieceで扱える機能の拡張方法を紹介します。


現在の位置情報を使用する

Pieceを作るときにユーザーの現在の位置情報を使用したい場合があります。その場合は、以下の手順でPieceを作成すると簡単に位置情報を取得することができます。

Piece JSONへの記載

PieceJSONserviceProxyに以下のようにparameters定義を追加します。

"serviceProxy":{
    "service":"citizenSample",
    "parameters":["location_accurate"]
},

parametersには表のいずれかの項目を記入してください。より良い精度の位置情報を使用すると、位置情報の取得時間が長くなります。

parameters精度(計測誤差)
"location_rough"10 km 程度
"location_normal"100 m 程度
"location_accurate" または "location"一番良い精度
ProxyCoreで現在位置を取得

PieceJSONparametersを追加するとProxyCore(.jsファイル内)で以下のように位置情報(緯度・経度)を取得できます。

※いずれの精度を指定していても以下のコードで取得できます。

exports.handler = async event =>{
const latitude = event.properties.parameters.location.latitude;
const longitude = event.properties.parameters.location.longitude;
// 位置情報を使った処理を実行 

}

実行日時を使用する

Pieceを作るときに、iiideaの実行日時を使用したい場合があります。(スプレッドシートに実行日時と共にデータを書き込みたい、メールの文面に使用したいなど)
その場合は、以下の手順でPieceを作成すると実行日時を取得することができます。

Piece JSONへの記載

必要ありません。ProxyCore実行時に自動で生成されます。

Proxy Coreで実行日時を取得

ProxyCore(.jsファイル内)で以下の様にiiidea実行日時を取得できます。フォーマットは yyyy-MM-dd'T'HH:mm:ssZZZです。

exports.handler = async event => {
  const date = event.userData.date;

  // 実行日時を使った処理を実行

}

 


時計の針を任意の位置へ制御する

時計の針を任意の位置へ制御するためのS Pieceを作成する場合、接続するA Pieceの選択肢として「針で数値(マルチ) A Piece」と「時刻表示 A Piece」の2とおり考えられます。ここでは、それぞれのA Pieceと接続するS Pieceの作り方について説明します。

「特定位置(マルチ)」A Pieceを使用する

「特定位置(マルチ)」のアクションピースを使って、自分の作ったPieceの結果を時計に表示する際、秒針、時針、分針を特定の位置へ動かす場合の手順を記載します。

Piece JSONの修正

時計の針(秒針、時針、分針)を動作させる「特定位置(マルチ)」のinputに合わせてPiece JSONoutputを以下のように定義します。

"output":{
  "type":"object",
  "properties":{
    "SpecificPositionArray":{
      "type":"array",
      "items":{
        "type":"object",
        "properties":{
          "Hour":{
            "type":"number",
            "minimum":0,
            "maximum":359
          }
          "Minute":{
            "type":"number",
            "minimum":0,
            "maximum":359       
          }
          "Second":{
            "type":"number",
            "minimum":0,
            "maximum":59       
          }
        }
      }
    }
  }
}
ProxyCoreoutput処理

PieceJSONに記載したoutputに合わせてProxyCore.js内で下記のようにoutputを生成します。

exports.handler = async event =>{

// 秒針を10秒の位置へ、時針と分針を10°を指定しています。(秒針は0~59の範囲の数値で指定し、時針と分針は0~359の範囲の数値を指定します) 

  let responseData = {
    status:200, 
    body:{
      "SpecificPositionArray":[{
        "Second":10,
        "Minute":10,
        "Hour":10
      }]
    }
  };
  
  return responseData;

}

「時刻表示」A Pieceを使用する

「時刻表示」のアクションピースを使って、自分の作ったPieceの結果を時計に表示する際、秒針、時針、分針を特定の位置へ動かす場合の手順を記載します。

PieceJSONの修正

時計の針(秒針、時針、分針)を動作させる「時刻表示」のinputに合わせてPiece JSONoutputを以下のように定義します。

"output":{
  "type":"object",
  "properties":{
    "returnTime":{
      "type":"string",
      "format":"time"
    }
  }
}
ProxyCoreoutput処理

PieceJSONに記載したoutputに合わせてProxyCore.js内で下記のようにoutputを生成します。

exports.handler = async event =>{
  let hour = 2;
  let min = 30;
  let sec = 10;

// 'hh:mm:ss'の形式に合わせています。値が0~9のときには、一桁目を0で埋める必要があります。 

  let output = hour.toString().padStart(2,'0') + ':' +
  min.toString().padStart(2,'0') + ':' + 
  sec.toString().padStart(2,'0'); 

  let responseData = {
    status: 200,
    body: {
      "returnTime": output
    }
  };
  return responseData;

}