Azure Functions とは?
Microsoftのクラウドサービスのこと。
サーバーレスと呼ばれているものですが、別にサーバーが無い、サーバーが要らないということじゃなくて、
サーバーの存在をほとんど意識せずにWebサービスを作ることが出来るものです。
WebAPIをとても簡単に作ることが出来るフレームワークと言った方が分かり易いでしょうか。
試しにサービスを作ってみる
ポータルから App Service を作成する
ポータルメニューの「すべてのサービス」もしくは「お気に入り」から「App Service」を選択します。
Function App を選択し、サービスを「作成」します。
作成するアプリ名を設定
アプリ名:他の利用者と被らないアプリ名(ホスト名)を付けます。
サブスクリプション:無料の人は無料のアカウントを選択します。
リソースグループ:1つのアプリは複数のサービスから構成されるので、それらのグループ名です。
場所:日本であれば「東日本」か「西日本」を選択すれば良いです。Azureのデータセンターが日本に2か所有ります。
Storage:Azure FunctionsがStorageを使用しますので、そのアカウントも併せて作ります。
Application Insights:アプリの動作状況を監視する仕組みです。
作成したアプリはAzureメニューの「すべてのリソース」や「リソースグループ」から辿ることが出来ます。
「種類」が「App Service」となっているところで実装します。
関数を実装する
HTTPのリクエストに対して応答を返す標準的なものや、POSTされたデータをテーブルに保存するもの、さらにはタイマーで起動するものなど。様々な入力パターンをトリガーとして、様々な出力パターンの組み合わせが選択出来ます。
後からカスタマイズも可能です。
これらを連携させてアプリを構築していきます。
HTTP triggerのテンプレートから作成してみる
HTTP要求に対して応答を返す機能です。
標準で、C#, F# JavaScriptが開発言語として選べます。
オプションでPhthonやTypeScriptなども可能なようです。
ここでは、言語をJavaScriptで作成してみます。
「承認レベル」はFunctionにしておきます。
以下がテンプレートとして生成されます。
既に、「実行」ボタンを押すと「ログ」が出力されて「出力」欄にHTTP応答の内容が出力される状態です。
実装方法など、ドキュメントは以下に有ります。
Functionsのドキュメント
言語毎のドキュメントは以下です。
サポートされている言語
入出力をカスタマイズする
左側メニューで「統合」を選びます。
「トリガー」:この関数が動くきっかけです。この場合はHTTPのリクエストが有った場合です。
「入力」:この関数で参照したいストレージデータです。
「出力」:処理結果の出力先です。この場合はHTTP応答です。テーブルやキューなどを出力先に追加することも出来ます。
それぞれ設定されている欄を選択することで、詳細を設定します。
最後に
Azure Functions は、WebAPI、Webサービスをとても簡単に作ることが出来ます。
HTTPも、フレームワーク側で要求を処理してくれたものを変数で受け取って、応答も変数にセットするだけです。
開発者はその間の処理を書くだけで良いです。
ストレージへの入出力についても、バインドされた変数への読み書きだけなので非常に簡単です。
アプリに大量のリクエストが来た時もサーバー台数を増やすなんてことも考えなくていいです。Azureが自動的にやってくれます。
サーバーのハード障害も心配要りません。自動的に切り替わります。
ユーザはもうサーバーの面倒を見る必要は無く、ただアプリロジックを書けばいいだけなのです。