日本時間で8月15日にVisual Studio 2017 15.3がリリースされました。日本時間の8月12日にVisual Studio 2017 15.3 Preview 7.1がリリースされてから3日でGAしたのでPreview 7.1がRCだったのでしょうね。
リリースノートはこちらを参照してください。
さて.Net Core 2.0に正式対応したりC#7.1 が利用できるようになったりとかなりのアップデートが盛り込まれているversion 15.3ですが、個人的に注目しているのがAzure Functionsのアップデートです。リリースノートにも記載がありますが今回のアップデートは下記の4つになります。
- C#でAzure Functionsを開発するためのツールが Azure Development ワークロードの一部として追加されました。
- コンパイル済みの C# クラス ライブラリとトリガーを指定するための属性を利用し、Azure Functionsを作成できます。
- ローカルの開発マシンでビルド、実行、およびデバッグが行えます。
- Visual Studio から Azure に直接発行できるようになりました。
これだけ見るとアップデートの内容少ないなぁって思いますが大きく変更されたところがあります。それはコンパイル済みのC#クラスライブラリでAzure Functionsを作成できるということです。つまりcsファイルで開発ができるようになりました。
というわけで早速15.3にバージョンアップしてAzure Functionsのプロジェクトを作成してみましょう。
ローカル実行編
15.3にアップデートしたばかりではFunctionsのテンプレートは追加されていませんので「ツール」 → 「拡張機能からインストールします。更新プログラムかオンラインのVisual Studio MarketPlaceで「Azure Functions and Web Jobs Tools」をダウンロードします。
ダウンロードが完了したVisual Studioを再起動しましょう。Visual Studioを閉じた時点でインストールが開始します。
アップデートの中にもありましたが「Visual Studio Tools for Azure Functions」は今後Azure Developmentのワークロードに組み込まれることになりましたので「Azure Functions and Web Jobs Tools」に名称が変更されています。
インストールが完了したらAzure Functionsのソリューションを作成しFunctionsを追加します。ここでは「HttpTrigger」を追加しています。ここで大きな変化に気づくと思います。そう拡張子がcsxではなくcsになりました。またビルドするとbinとobjフォルダが作成されdll化されるようになっています。
ローカルデバッグはCLIによって実行できます。もちろんラインデバッグもできます。
ここでは割愛しますがVisualStudioから簡単にAzure Functionsにデプロイすることも可能です。Web Appsを発行するのと同じ感じでデプロイできます。今回のアップデートでローカル開発については非常にやりやすくなったと思います。
Azure編
それでは次にAzure側ではどう見えるのかVSからデプロイして確認してみましょう。
Visual StudioからFunctionsを作成してデプロイするとデフォルトで読み取り専用モードになっています。これはFucntionAPPの設定から変更することが可能です。ファイルの表示でファイル郡を確認するとfunction.jsonのみ表示されます。これはcsxと違ってdllをデプロイしているためソースの編集ができないからです。肝心のdllはどこに配置されているかについてはfunction.jsonのscriptfileのパスに配置されています。
ちなみにモニターや管理等の機能については従来と同じく利用できます。csxと大きく変わったのはdllロードになったためポータルでソースを編集できなくなったことです。ポータルでソース編集は苦行だったのでいいへんこうではあると思います。
function.jsonのscriptfileに配置されているdllを確認するためkuduで表示してみましょう。site/wwwroot/binにコンバイルされたdllが配置されているのがわかります。
ここでは割愛しますがVisualStudioを利用したAzureのリモートデバッグも可能なのでAzureにデプロイしたFunctionsのソースをローカルのVisual Studioでデバッグできます。これもかなり強力な機能だとおもいます。
Azure上で新規Functionを作成するとまだcsx形式で作成されてしまいますので、VSに統合するのであればVSで作成してからFunctionにデプロイしたがほうがいいです。進歩したのか退化したのかはわかりませんがAzure Funcitonsの開発がVisual Studioに統合されたという点では開発者にとって便利になったと思います。
開発はしやすくなつたのでDurable Functionsのパターンとか作りやすいと思います。色々と試していきたいと思います。
コメント