【初心者向け】Azure Functions(関数アプリ)をざっくり理解する

この記事の内容

  • Azure Functions(関数アプリ)は「サーバーレス」なサービスで、仮想マシン不要で関数コードを実行できます
  • 関数アプリにはホスティングプランが複数あり、用途に合わせて選択できます
  • HTTPトリガー・タイマートリガー・キュートリガーなど、様々なイベントをきっかけに関数を起動できます
  • ポータルからGUIで関数を作成・テストでき、URLにアクセスするだけで動作確認が可能です
  • ストレージアカウントやApplication Insightsなど、関連サービスと組み合わせて利用します

Azure Functionsとは

Azure Functionsは、Azureが提供するサーバーレスのサービスです。「関数アプリ」とも呼ばれ、その名の通り「関数を動かすためのアプリ」を作成します。

サーバーレスの最大の特徴は、仮想マシンのような基盤を意識する必要がない点です。コードを書いて、それを動かすための関数アプリを用意するだけで、処理を実行できます。使っていない間はコストがかからない従量課金も選択できるため、ちょっとした処理を低コストで動かしたい場合に非常に便利です。


ホスティングプランの選び方

関数アプリを作成する際、最初に「ホスティングプラン」を選択します。いくつかの選択肢があり、初見では少し戸惑うかもしれませんが、それぞれの特徴を押さえておきましょう。

フレックス従量課金(Flex Consumption)

現時点で最も新しいプランです。使った分だけ課金される従量課金をベースに、最大スケールアウト・仮想ネットワーク統合・常時起動など、より高機能になっています。コストを抑えつつ本格的な機能を使いたい方に向いています。

ただし、執筆時点ではAzureポータルから直接関数を作成・編集できない制約があります。VS CodeなどのIDEを使う必要があります。

従量課金(Consumption)

フレックス従量課金の前身となるプランです。使った分だけ課金され、ポータルからも関数の編集が可能です。初学者がお試しで使うにはこちらが手軽です。

App Serviceプラン / Premiumプラン

すでにApp Serviceを利用している場合、そのプランに関数アプリを相乗りさせることができます。Premiumプランはスケールアウト強化など、さらに高機能な選択肢です。

Container Appsプラン

Container Appsというサービスと連携して関数アプリを動かすプランです。

迷ったら、まずは最もシンプルな「従量課金」を選ぶとよいでしょう。


関数アプリの作成手順

ここでは従量課金プランを使って、関数アプリを作成していきます。

基本設定

項目内容
サブスクリプション任意のものを選択
リソースグループ任意のものを選択または作成
関数アプリ名任意の名前を入力
リージョン任意のリージョンを選択
ランタイムスタック使用する言語(例:Python)を選択
バージョン使用するランタイムのバージョンを選択
OSの種類WindowsまたはLinux

インスタンスのサイズはメモリ量の選択です。軽い処理であれば小さいサイズで十分です。

ゾーン冗長について

高可用性が必要な場合は「ゾーン冗長」を有効にすることで、複数のアベイラビリティゾーンにまたがって動作するようになります。ただし最小インスタンス数が2以上になるためコストが上がります。コストを抑えたい場合は無効のままで問題ありません。

ストレージアカウント

Azure Functionsはストレージアカウントを使用します。新規作成するか、既存のものを選択できます。

診断設定

Azure Log Analyticsと連携してログを収集する設定です。Log Analyticsのワークスペースを作成済みであれば、ここで紐付けができます。ログ監視が不要であれば「診断設定を構成しない」を選択して進めましょう。

ネットワーク

インターネットからアクセス可能にする「パブリックアクセス有効」か、仮想ネットワークに接続する「仮想ネットワーク統合」かを選択します。お試し用途であればパブリックアクセス有効で問題ありません。

Application Insights(監視)

Application Insightsを使うと、関数の実行回数や応答時間などを記録・可視化できます。今回はなしで進めますが、本番運用時には有効化を検討するとよいでしょう。

デプロイ

GitHubと連携した継続的デプロイが可能です。GitHubにソースコードをプッシュすると自動的に関数アプリに反映されます。今回は無効にします。

認証(ストレージへの接続方式)

関数アプリが内部でストレージアカウントに接続する際の認証方式を選びます。

  • シークレット:ストレージアカウントのパスワード(接続文字列)を使って接続します。シンプルですが、セキュリティ面ではやや劣ります。
  • マネージドID:パスワード不要でIDベースの安全な接続ができます。Microsoft Entra(旧Azure AD)にIDを作成し、RBACで権限を付与する方式です。セキュリティ面では推奨されますが、設定がやや複雑になります。

試しに使う場合はシークレットで問題ありません。

設定が完了したら「確認および作成」から作成を実行します。


関数の作成

関数アプリの作成が完了したら、次はその中に実際の「関数」を作成します。

プログラミングモデルの選択

現時点ではV2を選択します。

トリガーの種類

関数アプリの大きな特徴のひとつが、様々なイベントをきっかけ(トリガー)に関数を起動できる点です。主なトリガーは以下の通りです。

トリガー概要
HTTPトリガーHTTPリクエストを受け取ったときに起動
タイマートリガー指定した時間間隔(例:1時間ごと)に起動
キュートリガーQueueストレージにメッセージが入ったときに起動
イベントハブトリガーEvent Hubsにイベントが入ったときに起動

今回はシンプルな「HTTPトリガー」を選択します。

関数の設定(HTTPトリガーの場合)

  • 名前:任意(例:HttpTrigger1
  • 認証レベルFunction(デフォルト)で問題ありません

作成すると、選択したランタイム(例:Python)のサンプルコードが自動生成されます。


関数の動作確認

ポータルからのテスト

作成した関数はAzureポータルの「テスト/実行」機能から試すことができます。

  1. 「実行」ボタンをクリックすると、HTTPステータス200が返り、処理が正常に動いたことを確認できます
  2. クエリパラメーターに name=ebisuda を追加して実行すると、レスポンスが Hello, ebisuda に変わります

これは、サンプルコードが name パラメーターの有無によって応答を切り替えているためです。

URLへの直接アクセス

「関数のURLの取得」からURLをコピーし、ブラウザーのアドレスバーに貼り付けてアクセスすると、関数が実行されてレスポンスが画面に表示されます。

URLの末尾にクエリパラメーターを追加してアクセスすることもできます。

https://<>.azurewebsites.net/api/HttpTrigger1?name=ebisuda

上記のようにアクセスすると、Hello, ebisuda というレスポンスが返ってきます。


関数の中に書けること

HTTPトリガーで起動した関数の中には、どんな処理でも記述できます。例えば以下のようなものが考えられます。

  • 数値の計算処理
  • データベースへの読み書き
  • 外部APIの呼び出し
  • Azure OpenAI Serviceと連携してAIの回答を返す

サーバーや仮想マシンを意識することなく、書いたコードがそのまま動作します。これがサーバーレスの利点です。


まとめ

Azure Functionsは、以下のような使い方に最適なサービスです。

  • 仮想マシン不要:サーバーのセットアップ・管理が不要で、関数コードを書くだけで処理を動かせます
  • 多彩なトリガー:HTTPリクエスト・タイマー・キューメッセージなど、様々なイベントをきっかけに関数を起動できます
  • コスト効率:従量課金プランを選べば、使っていない時間のコストはかかりません
  • 他サービスとの連携:ストレージアカウント・Application Insights・Azure OpenAIなど、多くのAzureサービスと組み合わせて利用できます

「この処理だけ関数として動かしたい」という場面では、Azure Functionsを使うことで他のことを考えずにシンプルに実装できます。ぜひ試してみてください。