.NET開発者のためのブログメディア

【Azure Functionsの使い方】Visual Studio とC#で関数を作成する
2020年03月02日
Azure Functionsというサービスをご存知でしょうか?これはいわゆるサーバーレス開発を行えるプログラムとなります。サーバーを常時起動させてプログラムを実行する必要がなく、実行したい時に実行することが可能です。このAzure Functionsは、実はVisual Studioでも開発可能ですので、ここではその作成方法などを確認していきます。
- SE
- サーバーレスって最近よく聞きます。そんなに便利な機能なのでしょうか?
- PL
- とても便利な機能ですよ。サーバーを常時起動させておく必要がなく、トリガーが発生すれば動的にリソースが割り当てられます。それによって事前に登録しておいたプログラムが実行されるという機能です。
目次
Azure Functionsのプロジェクトを作成する
Azure FunctionsはVisual Studioでも作成可能です。ただしプログラミング言語はC#での開発となります。今回はテストプロジェクト作成開発環境として、Community 2017を使用します。
- まず、新しいプロジェクトを追加します。「ファイル」タブ→「新規作成」→「プロジェクト」→「Cloud」を選択し、Azure Functionsを作成してください。
- 今回は、Httpトリガーを選択してデバッグ実行を行います。
これでローカル環境にAzure Functionsのプロジェクトが作成できました。次は実際にデバッグ実行をします。
Azure FunctionsでHello Worldを表示させる
プロジェクトが作成できたら、以下のソースが自動生成されます。これをいつものようにデバッグしてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
using System.Linq; using System.Net; using System.Net.Http; using System.Threading.Tasks; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.Azure.WebJobs.Host; namespace FunctionApp1 { public static class Function1 { [FunctionName("Function1")] public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log) { log.Info("C# HTTP trigger function processed a request."); // parse query parameter string name = req.GetQueryNameValuePairs() .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0) .Value; if (name == null) { // Get request body dynamic data = await req.Content.ReadAsAsync<object>(); name = data?.name; } return name == null ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body") : req.CreateResponse(HttpStatusCode.OK, "Hello " + name); } } } |
デバッグ実行すると以下のコンソール画面が表示されます。
赤枠で囲んでいるURLをコピーして、各自ブラウザで実行してみましょう。Http triggerのテンプレート上、実行するにはnameパラメータが必要です。ここでは末尾にname=Worldを追加して実行します。
- SE
- Azure FunctionsってAzureの環境がないとコーディングできないと思っていました。Visual Studioでも開発が行えるのなら、自分でもデバッグして確認できそうです。まずは試してみます!
- PL
- もちろんAzureポータルからでも作成できますよ。自分で試してみるのがスキルアップの近道です。Azure Functionsプロジェクトを作成してみて、サーバーレスを体験してみるのも良いでしょう。
サーバーレス環境はますます需要が高まる予感
Azure Functionsをはじめ、主要なクラウドサービスでは、サーバーレスで実行可能なプログラムを作成することが多くなってきました。クラウドサービスもこれから需要が増えていくでしょう。Azure Functionsのような、サーバーレスで実行可能なコーディングを行う技術は、これから多くの場面で求められるスキルのひとつだといえます。学習する機会を設けることも必要になってくるでしょう。