はじめに
はじめまして、井村と申します。
本記事は公式ドキュメントの「クイック スタート: Visual Studio Code を使用して関数コードを作成して Azure にデプロイする」を試した記事になります。
この記事ではVS Code を使用して、HTTP 要求に応答する関数を作成します。
- コードをローカルで確認
- Azure Functions のサーバーレス Flex Consumption プランにデプロイ
本記事のローカル環境はWindows端末になります。
前回はコマンドラインで作業を行ったため、今回は VS Code を使った開発手順の違いを体験してみたいと思います。
コードをローカルで確認
前提条件
以下を準備します。
- Azureアカウントの新規作成。
- Visual Studio Codeのインストール。
- Visual Studio Code 用の Azure Functions拡張機能。
- Pythonのインストール。
- Visual Studio Code 用の Python 拡張機能。
-
Visual Studio Code 用の Azurite拡張機能。
- Azurite は、Azure Storage のローカルエミュレーターです。ローカル環境で Azure Blob、Queue、Table ストレージの開発・テストが可能です。
Azure Functions Core Tools のインストール
Azure Functions Core Tools は、ローカル環境で Azure Functions を開発・テスト・デプロイするためのコマンドラインツールです。
主な機能
-
関数アプリの初期化
func init コマンドでプロジェクトを作成。言語(Python, JavaScript, C#, etc.)を指定可能。 -
関数の作成
func new コマンドでトリガー(HTTP, Timer, Blobなど)を指定して関数を追加。 -
ローカル実行とデバッグ
func start でローカル環境で関数を実行し、動作確認が可能。 -
Azureへのデプロイ
func azure functionapp publish <アプリ名> でAzure上に関数をデプロイ。 -
設定ファイルの管理
local.settings.json を使ってローカル環境の設定(環境変数など)を管理。
以下からインストールします。
バージョンを確認します。
# Azure Functions Core Toolsのバージョン確認
func --version
4.2.2 # 出力結果
ローカル プロジェクトを作成する
デスクトップ上に「LocalProject」という作業フォルダを作成し、VS Code で開きます。
- Visual Studio Code で F1 キーを押してコマンド パレットを開き、[Azure Functions: Create New Project...] を検索して実行します。

2. プロジェクト ワークスペースのディレクトリの場所を選択し、[選択] を選択します。今回は作業フォルダを選択しました。

3. [Select a language] は [Python] を選択します。

4. [仮想環境を作成する Python インタープリターを選択する] は最新版を選択します。

5. [プロジェクトの最初の関数のテンプレートを選択します] は [HTTP trigger] を選択します。

6. [作成する関数の名前] は 「HttpExample」と入力します。

7. [承認レベル] は [ANONYMOUS] を選択します。この場合、すべてのユーザーが関数のエンドポイントを呼び出すことができます。

9. 上記が完了すると、Visual Studio Code は HTTP トリガー関数エンドポイントを使用して Azure Functions 用のコード プロジェクトを生成しました。生成されるファイルの説明はこちらで解説があります。

10. local.settings.json ファイルで、次の例のように AzureWebJobsStorage 設定を更新します。
"AzureWebJobsStorage": "UseDevelopmentStorage=true",

ローカル Functions ホストは、Python v2 モデルで必要なストレージ接続にストレージ エミュレーターを使用するように指示されます。 Azure にプロジェクトを公開する場合、この設定では代わりに既定のストレージ アカウントが使用されます。 ローカル開発中に Azure Storage アカウントを使用する場合は、ここでストレージ アカウントの接続文字列を設定します。
エミュレーターを起動する
- Visual Studio Code で、F1 キーを押してコマンド パレットを開きます。 コマンド パレットで、[Azurite: Start]を検索して選択します。

2. 下部のバーで、Azurite エミュレーション サービスが実行されていることを確認します。 その場合は、関数をローカルで実行できるようになっています。
関数をローカルで実行する
- 関数をローカルで開始するには、F5 キーまたは、左側のアクティビティ バーの [実行とデバッグ] アイコンを押します。
ターミナル パネルに、Core Tools からの出力が表示されます。
[ ターミナル ] パネルでアプリが起動します。 HTTP トリガー関数の URL エンドポイントがローカルで正常に動作していることを確認できます。

2. Core Tools がターミナルでまだ実行されている状態で、アクティビティ バーの Azure アイコンを選択します。
[ワークスペース] 領域で、[ローカル プロジェクト]>[関数] を展開します。
新しい関数を右クリック (Windows) または Ctrl キーを押しながらクリック (macOS) して、[Execute Function Now] (今すぐ関数を実行) を選択します。

3. Enter 要求本文に、{ "name": "Azure" }の要求メッセージ本文の値が表示されます。 Enter キーを押して、この要求メッセージを関数に送信します。

4. ローカルで関数を実行し、応答が返されると、Visual Studio Code で通知が発生します。 関数の実行に関する情報が ターミナル パネルに表示されます。
※ Hello,Azure(=name)と表示されています。

5. [ターミナル] パネルにフォーカスがある状態で、Ctrl + C キーを押して Core Tools を停止し、デバッガーの接続を解除します。
import azure.functions as func
import logging
app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@app.route(route="HttpExample")
def HttpExample(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')
if name:
return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")
else:
return func.HttpResponse(
"This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
status_code=200
)
AI を使用して入力を正規化および検証する
この章では生成Aiを利用してコードを修正します。
以下はCopilot Chatのサンプルプロンプトです。既存の関数コードを更新し、クエリ文字列またはJSONボディからパラメータを取得し、フォーマット変換や型変換を適用し、レスポンスとしてJSON形式で返すようにします:
Modify the function to accept name, email, and age from the JSON body of the
request. If any of these parameters are missing from the query string, read
them from the JSON body. Return all three parameters in the JSON response,
applying these rules:
Title-case the name
Lowercase the email
Convert age to an integer if possible, otherwise return "not provided"
Use sensible defaults if any parameter is missing
私は主にインフラエンジニアであり詳しくない為、お任せします。
ローカル検証を行います。
メッセージ本文は以下となります。
{ "name": "devon torres", "email": "torres.devon@contoso.com", "age": "34" }
通知を確認して問題なくコードが動くことを確認出来ました。
以下が更新したコードとなります。
import azure.functions as func
import logging
import json
app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@app.route(route="HttpExample")
def HttpExample(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
# Sensible defaults
default_name = "Guest"
default_email = "unknown@example.com"
default_age = "not provided"
# Get from query string
name = req.params.get('name')
email = req.params.get('email')
age = req.params.get('age')
# Get from JSON body if missing
try:
req_body = req.get_json()
except ValueError:
req_body = {}
if not name:
name = req_body.get('name', default_name)
if not email:
email = req_body.get('email', default_email)
if not age:
age = req_body.get('age', default_age)
# Apply formatting rules
name = str(name).title() if name else default_name
email = str(email).lower() if email else default_email
try:
age = int(age)
except (ValueError, TypeError):
age = default_age
response = {
"name": name,
"email": email,
"age": age
}
return func.HttpResponse(
json.dumps(response),
mimetype="application/json",
status_code=200
)
Azure Functions のサーバーレス Flex Consumption プランにデプロイ
Azure にサインインする
手順はこちらを参照してサインインします。
Azure に関数アプリを作成する
これからAzure上に関数アプリを作成します。既定の動作で作成しますが、作成されたリソースをより細かく制御するには、代わりに高度なオプションを使って関数アプリを作成する必要があります。
- Visual Studio Code で、F1 キーを選択してコマンド パレットを開きます。 プロンプト (>) で、入力して [Azure Functions: Create Function App in Azure] を選択します。

2. [新しい関数アプリ名を入力する] は一意の値でAzure Functionの名前を設定します。
※今回は func-20250909-v2 とします。

3. [Select a location for new resources] は [東日本リージョン] を選択します。

4. [ランタイム スタックを選択してください] は [Python 3.12] を選択します。

5. [リソース認証の種類を選択する] は [マネージドID] を選択します。

上記の設定を行いますとAzure に作成されている個々のリソースの状態が、Azure の拡張機能によって [Azure: アクティビティ ログ] パネルに表示されます。

6. 関数アプリが作成されると、以下の関連リソースが Azure サブスクリプションに作成されます。 リソースの名前は、関数アプリへ入力した名前に基づいて決まります。
- resource group : 関連リソースの論理コンテナーです。
- function app: 関数コードを実行するための環境となります。 関数アプリを使用すると、同じホスティング プランに含まれるリソースの管理、デプロイ、共有を容易にするための論理ユニットとして関数をグループ化できます。
- Azure App Service plan : 関数アプリの基になるホストを定義します。
- Azure Storage account : 関数アプリに関する状態やその他の情報を維持するために Functions ホストによって使用される
- Application Insights : アプリ内の関数の使用を追跡します。
- user-assigned managed identity : ストレージ アカウント用のアクセス認証。ロールは ストレージ BLOB データ共同作成者。
Azure上にデプロイされたリソースは以下の通りです。
Azure にプロジェクトをデプロイする
- コマンド パレットで、[Azure Functions: Deploy to Function App...] を入力し選択します。

3. 前のデプロイの上書きを求められたら、[デプロイ] を選択して、関数コードを新しい関数アプリ リソースにデプロイします。
Azure で関数を実行する
- F1 キーを押してコマンド パレットを表示し、 [Azure Functions:Execute Function Now...] を検索して実行します。

4. request bodyは以下を入力しEnter キーを押して、この要求メッセージを関数に送信します。
{ "name": "Contoso", "email": "me@contoso.com", "age": "34" }

5. Azure で関数が実行されると、応答が通知領域に表示されます。

6. Application Insightを確認して関数アプリにリクエストがあったことを確認できます。
終わりに
今回、VS Code と Python を使って Azure Functions のサーバーレス開発を一通り体験してみました。
VS Code 上で F1 キーや F5 キーなどの操作を初めて使ったため、とても新鮮な体験でした。GUIベースでの操作は直感的で、コマンドラインとはまた違った便利さがあり、特にデバッグや関数の実行がスムーズに行える点が印象的でした。
また、Copilot Chat を使って関数コードを拡張する体験も非常に面白く、AI の力を借りてコードの品質や柔軟性を高められることを実感しました。インフラエンジニアとしては普段あまり触れることのない領域ですが、こうしたツールの活用によって、アプリケーション開発にも少しずつ踏み込んでいける可能性を感じました。
今後は、Azure Functions の他のトリガー(Timer や Blob など)も試してみたいと思います。この記事が、これから Azure Functions を始める方の参考になれば幸いです。










