VS Code で Logic Apps のプレビュー版を試してみる！結構期待

Logic Apps は Azure 上でワークフローを組み立てることが出来るサービスでコードを書かなくていいノーコード・ローコードと呼ばれる部類のサービスになります。
その Logic Apps が先日の Microsoft Ignite 2020 でアプデーとがあって Logic Apps (Preview) というものが新規作成できるようになってました。

このプレビューの更新の内容は [ここらへん](https://docs.microsoft.com/ja-jp/azure/logic-apps/create-stateful-stateless-workflows-visual-studio-code#whats-in-this-public-preview) に書いてあるものが該当するのかなと思います。

## やってみよう

みんな大好き Visual Studio Code での開発がサポートされているみたいなので、さっそく Azure Logic Apps (Preview) の拡張機能を入れます！Previwe ついてない方の拡張機能じゃなくて Preview ついてるほうが今回のプレビュー版の機能をサポートしているやつになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/fb0c5eb8-2a6d-0844-df50-c8e134304d16.png)

ダウンロード数が不安になるくらい少ないですがまぁいいでしょう。人柱になる気持ちで。ユーザー設定を眺めてると Azure Logic Apps V2: Project Runtime の設定が `~1` になってたので `~3` にしておきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/409b0007-eede-0a64-2af5-7b14bd2e7341.png)

LOGIC APPS (PREVIEW) というのが VS Code のツールバーの Azure の画面に追加されてますね！！

コマンドパレットから Logic Apps の Create new project を実行するとフォルダーを選択したあとに以下のようにステートフルかステートレスかを選択できる画面が出ます。ステートレスは今回追加された状態保存しないかわりにパフォーマンスがいいやつですね！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/1ba78013-ff80-923b-6af1-0fe17cc59004.png)

<hr />

### .NET 5 RC1 入れている人向けの注意点

私は .NET 5.0 SDK RC1 と .NET Core 3.1 SDK を入れていたのですが、.NET Core 3.1 の SDK を入れろとプロジェクト作成時に怒られてしまいプロジェクトが作成できませんでした。雑な対処法ですが `c:\Uers\ユーザー名` 直下に以下のような内容の global.json を置くことで強制的に .NET Core 3.1 を使うように指定してエラーを回避しました。

```json:global.json
```

Code.exe のある場所やプロジェクトを生成するフォルダーに global.json を置くのではダメでした。

<hr />

さて、手書きが苦行と有名（個人の感想です）な Logic Apps の JSON が出てきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/fed7b6ef-6a9b-cd1e-9acd-fad5d38267df.png)

でも、Open in designer で開くとデザイナーで開けます！最高！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/c35ce931-e460-076d-9028-aae5af00a68f.png)

いつまで経ってもデザイナーが表示されないので Visual Studio Code の OUTPUT ウィンドウで Azure Logic Apps (Preview) の出力を見てみるとエラー出ました！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/4015cfcc-2d6a-2d0d-27f8-ab3750b3d311.png)


ふむふむ、Logic Apps のローカル実行は Azure Functions Core Tools を使ってるので、見慣れたメッセージですね。ここ日本語文字化けせずに表示されないのはなおらないのかなぁと思いつつ生成された local.settings.json を見てみると以下のようにローカルのストレージエミュレーターを使うように構成されていました。

```json:local.settings.json
{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
  }
}
```

そういえば、今日は Azure Storage Emulator をまだ起動していなかったなと思ったので起動して再度デザイナーで開くと表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/732e8144-ed5d-7403-327f-6d259b2c6fb3.png)

開く過程で各種サービスとの接続を何処に作るか選択する選択肢が出てきたので自分の Azure サブスクリプションの適当な空のリソースグループを選択しておきました。

適当な一本道のワークフローを作ってみました。ここらへんは Azure ポータルでやってたのと感覚的には同じですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/b142254c-1bae-7f16-093c-d7f7ef6ad1e4.png)

F5 を押すとデバッグ実行も出来ます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/d80950db-c5fd-fac8-07db-ef5e0b633052.png)

workflow.json の右クリックメニューから Overview を選ぶと呼び出すための URL をゲットできるので VS Code の拡張機能の REST Client で叩いてみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/35261a6c-4987-d283-f772-e26198417045.png)

ばっちりですね。ただ、ステートレスなワークフローの場合は Overview のページに実行履歴とかが表示されません。デバッグ時には不便なので `workflow-designtime/local.settings.json` に以下のような設定をすることで実行履歴がオンになるみたいです。

```json:local.settings.json
{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "Workflow.Stateless1.OperationOptions": "WithStatelessRunHistory" // Stateless1 のところに自分のワークフローの名前を入れる
  }
}
```

でも、残念ながら自分の環境では、これでは履歴が有効になりませんでした。また後でやってみよう。

## Azure にデプロイ

VS Code からデプロイも出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/a7938d92-b678-6000-a92a-91d4380cefd3.png)

各種選択肢が出てきますが現時点では App Service Plan か、Premium プランを選ぶしかないみたいなのでお金がかかっちゃうところが少し試すにはネックかもしれませんね。

デプロイが完了すると、こんな感じでクラウド上のデザイナーでも確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/32e87cbf-0c5d-8222-f5df-fa64bded6f8d.png)

URLをゲットして叩いてみるとばっちり動きました。今回のワークフローは外部リソースに依存していないシンプルなものですけど Twitter や Outlook とかにつないでるとどうなるのかは気になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70288/48c6e865-6065-9c60-809e-a0f74d7d490e.png)

## Docker への展開

これは試してないのですが docker イメージにすることも出来るようです。これで現実的な選択肢かどうかは置いておいて何処でも動かそうと思えば動かせる感じですね。詳細は以下のドキュメントにあります。

https://docs.microsoft.com/ja-jp/azure/logic-apps/create-stateful-stateless-workflows-visual-studio-code#deploy-to-docker-container

## まとめ

新しいローカルでの開発の VS Code 拡張機能やローカルデバッグなど個人的にはこれは GA したら使いやすい感じになりそうだなと思いました。
今までは謎ランタイム（個人の感想）の上で動いていたものが、Azure Functions が動く環境ならどこでも動きそうな空気を醸し出してるあたり好きです。

今後も新しい Logic Apps については追いかけてみようかなと思いました。