Azure Functions+Visual Studio Codeによるデプロイを試みる(C#編)

Visual Studio Code、これが公開されたのが2015年とのことで、つい先日のような気がしていたのですが、もうすでに7年近く経っており、更には数あるエディタの中でも人気のエディタの1つとなっています。
Java、JavaScript、PHPといったMicrosoftやWindowsとあまり関係の無い言語を扱うエンジニアにも好まれるとは本当に意外でした。

Microsoft系のサービス、製品での開発を行っているエンジニアのはしくれとしてはテキストエディタもVS Codeで。。と思いながらも、なかなか馴染めずにいたのですが、今回、表題の内容に取り組むにあたって、改めてVS Codeを触ってみたいと思います。

ただ、Azure FunctionsにしてもVS Codeにしても正直、技術系のブログで扱うにしては若干の乗り遅れ感が否めません。。
とはいえ、私のブログはもともと私自身の技術、知見を広げるためのものですし、そこは気にせずに私が試して感じたことを書いていきたいと思います。

また、今回「C#編」と書いた通り、VS Code、そして.NETの特徴の1つであるマルチプラットフォームの良さというところを伝えるため、JavaやJavaScript等、さまざまな言語で試してみますので、各言語のユーザーの方々がたまたま私の記事を見て、「おっ、ちょっと使えるかも(使いたいかも)」的な感じで興味を持ってくれればよいかなと思っています。

まず、前提条件としてVS Code以外に以下の内容をインストールする必要がありますのでご注意ください。
・.NET 6.0 SDK
・Azure FunctionsCoreToolsバージョン4.x
・VisualStudioCode用のAzureFunctions拡張機能

まずはローカルでのAPI作成と動作確認です。
アクティビティバーでAzureアイコンを選択し、「WORKSPACE Local」で + ボタンを選択し、「Create Function」を選択するところからですが、AzureアイコンはVS CodeでAzureの拡張機能をインストールしないと表示されません(前提条件を偉そうに書いておいて、この段階で一瞬詰まってしまった私のような人がいるのではということで書いておきます。。)。
そして、APIなんだから「HTTP Function」じゃないの?と思うかもですが、ここで作成するのは「Create Function」になりますのでご注意ください。

そしてVS Codeを使い慣れた方には今更書かれても的な内容ですが、Microsoftのドキュメントに出てくる「プロンプト」ですが、こちらは以下のスクリーンショットにあるようにVS Codeの上部、入力エリアを指します。
基本的にVS Codeで何か入力やこういった選択を行う場合、全てここで行われます。
Azureサブスクリプションの選択もここで行うのですが、なんとなくWebブラウザ的な画面をVS Codeでも持っていて、そこでいつものAzureポータルのような操作を行うのかしらと勝手に思い込んでいました。

Visual Studioに慣れ親しんだ人にとっては当たり前ですが、VS Codeからテストも行えます。
ちなみにサンプルプロジェクトは以下のような内容です。
実行して、上のプロンプトからリクエスト内容「name」をキーとして名前を入力するとそれに応じて「Hello, world」的なレスポンスが返される簡単なものです。

ローカルでの動作が確認できたら次にAzureへと進みます。
右側の「RESOURCE remote」で+ボタンを押して、「Create Function App~」を選びます。
ここでもちょっと感心してしまったのですが、AzureリソースもVS Codeで作成します。リソースを作成し、そしてデプロイする、というこれも当然の流れではあるのですが、全てVS Code上で完結します。

そして、デプロイが終わったらローカルのときと同様に実行・テストが行えます。
ほんとにAzure上に上がっているの?という疑り深い方や(いるのだろうか。。)、VS Codeのプロンプトではちょっとやりづらい。。という方はPostman等で試してみてもよいのではないでしょうか。
こんな感じになります。

Azure Functionsは月100万回の要求と 400,000 GB までのリソース使用が無料ですし、その後の使用料金もサーバーレスだけあってかなり安いです。
APIや、その使用する頻度にもよるのですが、たとえば案件でAPIのスタブを用意する場合があるといった時にこれでささっと作成して、テストするといった使い道もできるのではないでしょうか。
そして、そういった作業であれば、これから私がトライするであろう、様々な言語で作成することができますので、チーム内で得意言語の違いがあってもボトルネックになることなく、誰もが作業できるということになります。

ということで、私自身のこれからのためにもまずはC#でAzure FunctionsによるAPIを作成してみました。
今後いくつかの言語で同様の内容を試してみたいと思います。
本当はいきなりJavaで。。と思ったのですが、VS Codeもほぼ初めて触る状況で何をやるのか、やろうとしているのかを把握していないと思いっきり迷子になりそうだったのでC#から始めてみました。

この記事が気に入ったらサポートをしてみませんか?