ほりひログ

所属組織の製品 (Azure とか) に関連する内容が多めだけど、個人の見解であって、所属組織を代表する公式情報ではないです。

Azure Functions に custom handlers がやってきた。

f:id:horihiro:20200319203230p:plain やりました!
Azure Functions でオフィシャル サポート言語 (C#, Javascript, Java, Python, PowerShell, F#) 以外の言語 (以下 custom handler) が (プレビューながら) 使えるようになりました!

まだ試していないですけど、誤解を恐れず書いていきます。

大まかな理解

# 個人の見解です。

コチラが公式ドキュメント。 docs.microsoft.com

上のドキュメントやサンプル プロジェクトを読み解く (主に、図を眺める) と、
custom handler は Web サーバーとして動作し、Function Host から トリガー/入力バインディング を HTTP リクエストとして受け取り、レスポンスで返したものが戻り値/出力バインディングになる、という感じのようです。

Serverless かどうかは微妙ではありますが。
# Azure Functions には App Service Plan でのホスティングがあるので、FaaS ではあっても Serverless とは一致しないのかもしれません。

サンプル プロジェクト

github.com

サンプルのプロジェクトには、R, Rust, go の実装例があります。
他にも公式サポートされている JavascriptC#Python も、なぜかあります。

正直 node.js しか読めないので、それをベースにしての理解ですが、ルートに host.json と Web サーバーになるアプリケーションがあり、各関数のディレクトリーとその中に function.json があります。

Web サーバー アプリケーション内に関数処理の実装が含まれているので、各関数名のディレクトリーとその中の function.json は Azure Functions のプラットフォームに関数の宣言のようなものかもしれません。

もちろん、各言語の import の仕組みなどを使えば、関数処理と Web サーバー アプリケーションを分離して、関数のディレクトリー内に処理の実態も書くことも可能でしょう。

やりたいこと

とりあえずサンプルにない言語で試してみたいですね。