本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはPerlとAzureが好きなわいとんさんで、
サーバレスという言葉が出てきて数年が経過しましたが、
本稿のサンプルコードは、
Microsoft Azure Functions ── AzureにおけるFaaS
Microsoft Azure
今回紹介するFunctionsは、
サーバレスの中心にFaaSあり
サーバレスとはサーバレスアーキテクチャのことを指し、
FaaSの特徴
FaaSとは、
関数が稼働した分だけ課金
FaaSでは関数が稼働した分だけ課金されます。特に、
常時課金されるIaaSやPaaS
OS/VMの管理は不要 
FaaSはオンプレミスやIaaSと違い、
OSのアップデートやセキュリティパッチ、
関数の起動にはトリガが必要
FaaSのもう一つの大きな特徴として、
FunctionsのPerlサポート
Functionsは、
しかし、gitに対応しており、gitをインストールするためにはPerlが必要だからです。
筆者が検証した限り、
プロジェクトのファイル構成
Functions v1でPerlプログラムを関数として利用する場合、
./プロジェクト名
├── host.json
├── proxies.json
└── 関数名
        ├── function.json
        ├── run.sh
        └── task.pl1つのプロジェクトには複数の関数を定義できます。複数定義する場合、
各関数名フォルダには、function.、run.、task.が必要となります。
また、host.と、proxies.を配置できます。
なお、host.とproxies.は利用しません。これらのファイルについて知りたい人は、
関数起動のためのトリガ
Functionsでは、function.で指定します。トリガには、
HTTPトリガ ── 関数がWeb APIとして動作
HTTPトリガを指定すると、
起動された関数は、
 
HTTPトリガで起動される関数では、function.は次のようになります。
{
  "bindings": [
    {
      "type":      "httpTrigger",
      "direction": "in",
      "name":      "req",
      "authLevel": "anonymous"
    },
    {
      "type":      "http",
      "direction": "out",
      "name":      "res"
    }
  ],
  "disabled": false
}Timerトリガ ── 時間指定バッチとして定期的に起動
Timerトリガは、function.は次のようになります。
{
  "bindings": [
    {
      "type":      "timerTrigger",
      "direction": "in",
      "name":      "timer",
      "schedule":  "0 */30 * * * *"
    }
  ],
  "disabled": false
} 
データの入出力を行うためのバインディング
Functionsではバインディングというしくみで入出力に対応できます。バインディングは、function.で設定します。
先ほどHTTPトリガのfunction.を示しましたが、directionで指定され、inなら入力、outなら出力となります。バインディングにはHTTP以外に、
Functions v1のトリガとバインディングに関する詳細は、
<続きの
本誌最新号をチェック!
WEB+DB PRESS Vol.130
2022年8月24日発売
B5判/168ページ
定価1,628円
(本体1,480円+税10%)
ISBN978-4-297-13000-8
- 特集1
 イミュータブルデータモデルで始める
 実践データモデリング
 業務の複雑さをシンプルに表現!
- 特集2
 いまはじめるFlutter
 iOS/Android両対応アプリを開発してみよう
- 特集3
 作って学ぶWeb3
 ブロックチェーン、スマートコントラクト、NFT


