Azure Functions Tools for Visual StudioAzure Functions Tools for Visual Studio

Azure Functions Tools for Visual Studio 2017 は Visual Studio の拡張機能です。C# 関数の開発、テスト、および Azure へのデプロイを可能にします。Azure Functions Tools for Visual Studio 2017 is an extension for Visual Studio that lets you develop, test, and deploy C# functions to Azure. Azure Functions を初めて使用する場合は、詳細について、「Azure Functions の概要」を参照してください。If this experience is your first with Azure Functions, you can learn more at An introduction to Azure Functions.

Azure Functions Tools には、次のような利点があります。The Azure Functions Tools provides the following benefits:

  • ローカル開発用コンピューターで関数を編集、作成、および実行できます。Edit, build, and run functions on your local development computer.
  • Azure に直接 Azure Functions プロジェクトを発行できます。Publish your Azure Functions project directly to Azure.
  • WebJobs 属性を使用して、定義をバインドするために個別に function.json を維持するのではなく、C# コードで直接関数バインディングを宣言できます。Use WebJobs attributes to declare function bindings directly in the C# code instead of maintaining a separate function.json for binding definitions.
  • コンパイル済み C# 関数を開発およびデプロイできます。Develop and deploy pre-compiled C# functions. コンパイル済み関数では、C# スクリプト ベースの関数より優れたコールド スタート パフォーマンスが得られます。Pre-complied functions provide a better cold-start performance than C# script-based functions.
  • Visual Studio 開発のすべての利点を得ながら、C# で関数をコーディングできます。Code your functions in C# while having all of the benefits of Visual Studio development.

この時事では、Azure Functions Tools for Visual Studio 2017 を使用して、C# で関数を開発する方法を示します。This article shows you how to use the Azure Functions Tools for Visual Studio 2017 to develop your functions in C#. .NET アセンブリとして Azure にプロジェクトを発行する方法についても説明します。You also learn how to publish your project to Azure as a .NET assembly.


同じ関数アプリにローカル開発とポータル開発を混在させないでください。Don't mix local development with portal development in the same function app. ローカル プロジェクトから関数アプリに発行すると、ポータルで開発した関数がデプロイ プロセスによって上書きされます。When you publish from a local project to a function app, the deployment process overwrites any functions that you developed in the portal.


Azure Functions Tools は、Visual Studio 2017 バージョン 15.5 以降の Azure 開発ワークロードに含まれています。Azure Functions Tools is included in the Azure development workload of Visual Studio 2017 version 15.5, or a later version. Visual Studio 2017 のインストールには、必ず Azure 開発ワークロードを含めてください。Make sure you include the Azure development workload in your Visual Studio 2017 installation:

Visual Studio 2017 と Azure 開発ワークロードのインストール

Visual Studio が最新であり、Azure Functions ツールの最新バージョンを使用していることを確認します。Make sure that your Visual Studio is up-to-date and that you are using the most recent version of the Azure Functions tools.

その他の要件Other requirements

関数を作成してデプロイするには、以下も必要になります。To create and deploy functions, you also need:

  • 有効な Azure サブスクリプションAn active Azure subscription. Azure サブスクリプションがない場合は、無料アカウントを利用できます。If you don't have an Azure subscription, free accounts are available.

  • Azure Storage のアカウントAn Azure Storage account. ストレージ アカウントを作成する場合は、「ストレージ アカウントの作成」を参照してください。To create a storage account, see Create a storage account.

ツールのバージョンを確認するCheck your tools version

  1. [ツール] メニューの [拡張機能と更新プログラム] を選択します。From the Tools menu, choose Extensions and Updates. [インストール済み] > [ツール] メニューを展開し、[Azure Functions と Web ジョブ ツール] を選択します。Expand Installed > Tools and choose Azure Functions and Web Jobs Tools.

    Functions ツールのバージョンを確認する

  2. インストールされているバージョンを確認します。Note the installed Version. このバージョンとリリース ノートに記載されている最新バージョンを比較します。You can compare this version with the latest version listed in the release notes.

  3. インストールされているバージョンが古い場合は、次のセクションの説明に従って Visual Studio でツールを更新します。If your version is older, update your tools in Visual Studio as shown in the following section.

ツールを更新するUpdate your tools

  1. [拡張機能と更新プログラム] ダイアログで、[更新プログラム] > [Visual Studio Marketplace] を展開し、[Azure Functions と Web ジョブ ツール][更新] の順に選択します。In the Extensions and Updates dialog, expand Updates > Visual Studio Marketplace, choose Azure Functions and Web Jobs Tools and select Update.

    Functions ツールのバージョンを更新する

  2. ツールの更新プログラムをダウンロードしたら、Visual Studio を終了し、VSIX インストーラーを使用してツールの更新プログラムを起動します。After the tools update is downloaded, close Visual Studio to trigger the tools update using the VSIX installer.

  3. インストーラーで [OK] を選択して開始し、[変更] を選択してツールを更新します。In the installer, choose OK to start and then Modify to update the tools.

  4. 更新が完了したら、[閉じる] を選択して Visual Studio を再起動します。After the update is complete, choose Close and restart Visual Studio.

Azure Functions プロジェクトを作成するCreate an Azure Functions project

Visual Studio の Azure Functions プロジェクト テンプレートでは、Azure の関数アプリに発行できるプロジェクトを作成します。The Azure Functions project template in Visual Studio creates a project that can be published to a function app in Azure. 関数アプリを使用すると、リソースを管理、デプロイ、および共有するための論理ユニットとして関数をグループ化できます。A function app lets you group functions as a logical unit for management, deployment, and sharing of resources.

  1. Visual Studio で、[ファイル] メニューから [新規] > [プロジェクト] の順に選択します。In Visual Studio, select New > Project from the File menu.

  2. [新しいプロジェクト] ダイアログで、[インストール済み] を選択し、[Visual C#] > [クラウド] の順に展開して [Azure Functions] を選択します。プロジェクトの名前を入力して、[OK] をクリックします。In the New Project dialog, select Installed, expand Visual C# > Cloud, select Azure Functions, type a Name for your project, and click OK. 関数アプリ名は、C# 名前空間として有効である必要があります。そのため、アンダースコア、ハイフン、その他の英数字以外の文字は使用しないでください。The function app name must be valid as a C# namespace, so don't use underscores, hyphens, or any other nonalphanumeric characters.

    Visual Studio で関数を作成するための [新しいプロジェクト] ダイアログ

  3. 図の下の表に示した設定を使用してください。Use the settings specified in the table that follows the image.

    Visual Studio の [新しい関数] ダイアログ

    SettingSetting 推奨値Suggested value 説明Description
    バージョンVersion Azure Functions v1Azure Functions v1
    (.NET Framework)(.NET Framework)
    これは、Azure Functions のバージョン 1 ランタイムを使用する関数を作成します。This creates a function project that uses the version 1 runtime of Azure Functions. .NET Core をサポートするバージョン 2 ランタイムは、現在プレビュー中です。The version 2 runtime, which supports .NET Core, is currently in preview. 詳細については、「Azure Functions ランタイム バージョンをターゲットにする方法」をご覧ください。For more information, see How to target Azure Functions runtime version.
    テンプレートTemplate HTTP トリガーHTTP trigger これは、HTTP 要求によってトリガーされる関数を作成します。This creates a function triggered by an HTTP request.
    ストレージ アカウントStorage account ストレージ エミュレーターStorage Emulator HTTP トリガーはストレージ アカウント接続を使用しません。An HTTP trigger doesn't use the Storage account connection. 他のすべてのトリガーの種類では、有効なストレージ アカウント接続文字列が必要です。All other trigger types require a valid Storage account connection string.
    アクセス権Access rights 匿名Anonymous 作成される関数を、すべてのクライアントがキーを使用せずにトリガーできます。The created function can be triggered by any client without providing a key. この承認設定により、新しい関数のテストが容易になります。This authorization setting makes it easy to test your new function. キーと承認の詳細については、「Azure Functions における HTTP と webhook のバインド」の「承認キー」をご覧ください。For more information about keys and authorization, see Authorization keys in the HTTP and webhook bindings.
  4. [OK] をクリックして、関数プロジェクトと、HTTP でトリガーされる関数を作成します。Click OK to create the function project and HTTP triggered function.

プロジェクト テンプレートでは、C# プロジェクトの作成、Microsoft.NET.Sdk.Functions NuGet パッケージのインストール、およびターゲット フレームワークの設定が行われます。The project template creates a C# project, installs the Microsoft.NET.Sdk.Functions NuGet package, and sets the target framework. Functions 1.x の対象は .NET Framework で、Functions 2.x の対象は .NET Standard です。Functions 1.x targets the .NET Framework, and Functions 2.x targets .NET Standard. 新しいプロジェクトには次のファイルが含まれます。The new project has the following files:

  • host.json: Functions のホストを構成することができます。host.json: Lets you configure the Functions host. これらの設定は、ローカルでの実行時と Azure での実行時の両方に適用されます。These settings apply both when running locally and in Azure. 詳細については、host.json のリファレンスを参照してください。For more information, see host.json reference.

  • local.settings.json: 関数をローカルで実行するときに使用される設定を保持します。local.settings.json: Maintains settings used when running functions locally. これらの設定は Azure では使用されず、Azure Functions Core Tools で使用されます。These settings are not used by Azure, they are used by the Azure Functions Core Tools. このファイルを使用して、関数で必な変数のアプリ設定を指定します。Use this file to specify app settings for variables required by your functions. プロジェクト内の関数のバインドで必要な各接続の Values 配列に新しい項目を追加します。Add a new item to the Values array for each connection required by the functions bindings in your project. 詳細については、Azure Functions Core Tools の記事のローカル設定ファイルに関する記事を参照してください。For more information, see Local settings file in the Azure Functions Core Tools article.

詳細については、「関数クラス ライブラリ プロジェクト」を参照してください。For more information, see Functions class library project.

ローカル開発用のプロジェクトを構成するConfigure the project for local development

Functions ランタイムでは内部的に Azure Storage アカウントを使用します。The Functions runtime uses an Azure Storage account internally. HTTP と webhook 以外のすべてのトリガーの種類については、Values.AzureWebJobsStorage キーを有効な Azure Storage アカウントの接続文字列に設定する必要があります。For all trigger types other than HTTP and webhooks, you must set the Values.AzureWebJobsStorage key to a valid Azure Storage account connection string.


Your function app can use the Azure Storage Emulator for the AzureWebJobsStorage and AzureWebJobsDashboard connection settings that are required by the project. To use the emulator, set the values of these keys to UseDevelopmentStorage=true.

ストレージ アカウントの接続文字列を設定するには、次のようにします。To set the storage account connection string:

  1. Visual Studio で Cloud Explorer を開き、[ストレージ アカウント] > [Your Storage Account](ストレージ アカウント) を展開し、[プロパティ] を選択し、[プライマリ接続文字列] 値をコピーします。In Visual Studio, open Cloud Explorer, expand Storage Account > Your Storage Account, then select Properties and copy the Primary Connection String value.

  2. プロジェクトで、local.settings.json ファイルを開き、コピーした接続文字列に AzureWebJobsStorage キーの値を設定します。In your project, open the local.settings.json file and set the value of the AzureWebJobsStorage key to the connection string you copied.

  3. 前の手順を繰り返し、関数に必要なその他のすべての接続について、Values 配列に一意のキーを追加します。Repeat the previous step to add unique keys to the Values array for any other connections required by your functions.

関数を作成するCreate a function

コンパイル済みの関数では、関数で使用されるバインディングはコードで属性を適用することで定義されます。In pre-compiled functions, the bindings used by the function are defined by applying attributes in the code. Azure Functions Tools を使用して提供されているテンプレートから関数を作成する場合は、これらの属性が適用されます。When you use the Azure Functions Tools to create your functions from the provided templates, these attributes are applied for you.

  1. ソリューション エクスプローラーで、プロジェクト ノードを右クリックし、[追加] > [新しいアイテム] の順に選択します。In Solution Explorer, right-click on your project node and select Add > New Item. [Azure 関数] を選択し、クラスの [名前] を入力して [追加] をクリックします。Select Azure Function, type a Name for the class, and click Add.

  2. トリガーを選択し、バインドのプロパティを設定して、[作成] をクリックします。Choose your trigger, set the binding properties, and click Create. 次の例は、Queue Storage によってトリガーされる関数を作成する場合の設定を示しています。The following example shows the settings when creating a Queue storage triggered function.


    このトリガーの例では、QueueStorage という名前のキーと共に接続文字列を使用します。This trigger example uses a connection string with a key named QueueStorage. この接続文字列の設定は、local.settings.json ファイルで定義する必要があります。This connection string setting must be defined in the local.settings.json file.

  3. 新しく追加されたクラスを確認します。Examine the newly added class. FunctionName 属性に関連付けられている、静的な Run メソッドが表示されています。You see a static Run method, that is attributed with the FunctionName attribute. この属性は、メソッドが関数のエントリ ポイントであることを示します。This attribute indicates that the method is the entry point for the function.

    たとえば、次の C# クラスは基本的な Queue Storage トリガー関数を表します。For example, the following C# class represents a basic Queue storage triggered function:

    using System;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Host;
    namespace FunctionApp1
        public static class Function1
            public static void Run([QueueTrigger("myqueue-items", Connection = "QueueStorage")]string myQueueItem, TraceWriter log)
                log.Info($"C# Queue trigger function processed: {myQueueItem}");

    バインド固有の属性は、エントリ ポイント メソッドに指定された各バインド パラメーターに適用されます。A binding-specific attribute is applied to each binding parameter supplied to the entry point method. 属性ではパラメーターとしてバインド情報を取ります。The attribute takes the binding information as parameters. 前の例では、最初のパラメーターに QueueTrigger 属性が適用されています。これは、キューによってトリガーされる関数を意味します。In the previous example, the first parameter has a QueueTrigger attribute applied, indicating queue triggered function. キュー名および接続文字列の設定名は、パラメーターとして QueueTrigger 属性に渡されます。The queue name and connection string setting name are passed as parameters to the QueueTrigger attribute.

上記の手順を使用して、複数の関数を関数アプリ プロジェクトに追加できます。You can use the above procedure to add more functions to your function app project. プロジェクト内の各関数で異なるトリガーを使用できますが、1 つの関数には 1 つのトリガーのみを使用する必要があります。Each function in the project can have a different trigger, but a function must have exactly one trigger. 詳しくは、「Azure Functions でのトリガーとバインドの概念」をご覧ください。For more information, see Azure Functions triggers and bindings concepts.

バインドの追加Add bindings

トリガーと同じように、入力バインドと出力バインドも、バインド属性として関数に追加されます。As with triggers, input and output bindings are added to your function as binding attributes. 以下のように、関数にバインドを追加します。Add bindings to a function as follows:

  1. プロジェクトをローカル開発用に構成したことを確認します。Make sure you have configured the project for local development.

  2. 特定のバインディングに適した NuGet 拡張機能パッケージを追加します。Add the appropriate NuGet extension package for the specific binding. 詳細については、「Azure Functions でのトリガーとバインドの概念」の記事の「Visual Studio を使用したローカルでの C# 開発」を参照してください。For more information, see Local C# development using Visual Studio in the Triggers and Bindings article. バインド固有の NuGet パッケージの要件については、バインドの参照記事で確認できます。The binding-specific NuGet package requirements are found in the reference article for the binding. たとえば、Event Hubs トリガーのパッケージ要件については、Event Hubs のバインドの参照記事を参照してください。For example, find package requirements for the Event Hubs trigger in the Event Hubs binding reference article.

  3. バインドが必要なアプリ設定がある場合は、ローカル ファイルの設定Values コレクションに追加します。If there are app settings that the binding needs, add them to the Values collection in the local setting file. 関数がローカルで実行される場合は、これらの値が使用されます。These values are used when the function runs locally. 関数が Azure の関数アプリ で実行される場合は、関数アプリの設定が使用されます。When the function runs in the function app in Azure, the function app settings are used.

  4. 適切なバインド属性をメソッド シグネチャに追加します。Add the appropriate binding attribute to the method signature. 次の例では、キュー メッセージによって関数がトリガーされ、出力バインドによって、同じテキストの新しいキュー メッセージが別のキューに作成されます。In the following example, a queue message triggers the function, and the output binding creates a new queue message with the same text in a different queue.

    public static class SimpleExampleWithOutput
        public static void Run(
            [QueueTrigger("myqueue-items-source", Connection = "AzureWebJobsStorage")] string myQueueItem, 
            [Queue("myqueue-items-destination", Connection = "AzureWebJobsStorage")] out string myQueueItemCopy,
            TraceWriter log)
            log.Info($"CopyQueueMessage function processed: {myQueueItem}");
            myQueueItemCopy = myQueueItem;

    Queue Storage への接続は、AzureWebJobsStorage 設定から取得されます。The connection to Queue storage is obtained from the AzureWebJobsStorage setting. 詳しくは、特定のバインドの参照記事をご覧ください。For more information, see the reference article for the specific binding.

次の表は、Azure Functions の 2 つのメジャー バージョンのランタイムでサポートされているバインディングを示します。The following table shows the bindings that are supported in the two major versions of the Azure Functions runtime.

typeType 1.x1.x 2.x2.x トリガーTrigger 入力Input 出力Output
Blob StorageBlob Storage 11
Cosmos DBCosmos DB
Event GridEvent Grid
Event HubsEvent Hubs
外部ファイル 2External File2
外部テーブル 2External Table2
Microsoft Graph
Excel テーブル
Microsoft Graph
Excel tables
Microsoft Graph
OneDrive ファイル
Microsoft Graph
OneDrive files
Microsoft Graph
Outlook メール
Microsoft Graph
Outlook email
Microsoft Graph
Microsoft Graph
Microsoft Graph
Auth トークン
Microsoft Graph
Auth tokens
Mobile AppsMobile Apps
Notification HubsNotification Hubs
Queue StorageQueue storage 11
Service BusService Bus
Table StorageTable storage 11

1 2.x では、HTTP、Timer、および Azure Storage を除くすべてのバインドを登録する必要があります。1 In 2.x, all bindings except HTTP, Timer, and Azure Storage must be registered. バインディング拡張機能を登録する」を参照してください。See Register binding extensions.

2 実験的 — サポート対象外で、将来破棄される可能性があります。2 Experimental — not supported and might be abandoned in the future.

関数のテストTesting functions

Azure Functions Core Tools を使用すると、ローカルの開発用コンピューター上で Azure Functions プロジェクトを実行できます。Azure Functions Core Tools lets you run Azure Functions project on your local development computer. Visual Studio から初めて関数を開始すると、これらのツールをインストールするよう求めるメッセージが表示されます。You are prompted to install these tools the first time you start a function from Visual Studio.

関数をテストするには、F5 キーを押します。To test your function, press F5. メッセージが表示されたら、Visual Studio からの要求に同意し、Azure Functions Core (CLI) ツールをダウンロードしてインストールします。If prompted, accept the request from Visual Studio to download and install Azure Functions Core (CLI) tools. また、ツールで HTTP 要求を処理できるようにファイアウォールの例外を有効にすることが必要になる場合もあります。You may also need to enable a firewall exception so that the tools can handle HTTP requests.

プロジェクトを実行して、デプロイ済みの関数をテストする場合と同じように、コードをテストできます。With the project running, you can test your code as you would test deployed function. 詳細については、「Azure Functions のコードをテストするための戦略」を参照してください。For more information, see Strategies for testing your code in Azure Functions. デバッグ モードで実行している場合は、予期したとおりに Visual Studio でブレークポイントがヒットします。When running in debug mode, breakpoints are hit in Visual Studio as expected.

キューによってトリガーされる関数のテスト方法の例については、キューによってトリガーされる関数のクイックスタート チュートリアルを参照してください。For an example of how to test a queue triggered function, see the queue triggered function quickstart tutorial.

Azure Functions Core Tools の使用の詳細については、「Azure Functions をローカルでコーディングしてテストする」を参照してください。To learn more about using the Azure Functions Core Tools, see Code and test Azure functions locally.

Azure に発行するPublish to Azure

  1. ソリューション エクスプローラーで、プロジェクトを右クリックし、[発行] を選択します。In Solution Explorer, right-click the project and select Publish.

  2. [Azure 関数アプリ] を選択し、[新規作成] を選択して、[発行] を選択します。Select Azure Function App, choose Create New, and then select Publish.


  3. まだ Visual Studio を Azure アカウントに接続していない場合は、[アカウントの追加...] を選択します。If you haven't already connected Visual Studio to your Azure account, select Add an account....

  4. [App Service の作成] ダイアログで、画像の下の表に指定されているようにホスティング設定を使用してください。In the Create App Service dialog, use the Hosting settings as specified in the table below the image:

    [App Service の作成] ダイアログ

    SettingSetting 推奨値Suggested value 説明Description
    アプリ名App Name グローバルに一意の名前Globally unique name 新しい関数アプリを一意に識別する名前。Name that uniquely identifies your new function app.
    サブスクリプションSubscription サブスクリプションの選択Choose your subscription 使用する Azure サブスクリプション。The Azure subscription to use.
    リソース グループResource Group myResourceGroupmyResourceGroup 関数アプリを作成するリソース グループの名前。Name of the resource group in which to create your function app. 新しいリソース グループを作成する場合は、[新規] を選択します。Choose New to create a new resource group.
    App Service プランApp Service Plan 従量課金プランConsumption plan [新規] をクリックしてプランを作成した後は、必ず [サイズ] の下の [従量課金プラン] を選択してください。Make sure to choose the Consumption under Size after you click New to create a plan. また、[地域] で、自分に近いか、または自分の関数がアクセスする他のサービスに近い [場所] を選択します。Also, choose a Location in a region near you or near other services your functions access.
    ストレージ アカウントStorage Account 汎用ストレージ アカウントGeneral purpose storage account Functions ランタイムには Azure Storage アカウントが必要です。An Azure storage account is required by the Functions runtime. [新規] をクリックして汎用ストレージ アカウントを作成するか、または既存のアカウントを使用します。Click New to create a general purpose storage account, or use an existing one.
  5. [作成] をクリックして、これらの設定で Azure に関数アプリと関連リソースを作成し、関数プロジェクト コードをデプロイします。Click Create to create a function app and related resources in Azure with these settings and deploy your function project code.

  6. デプロイが完了したら、[サイトの URL] の値を書き留めておきます。これが Azure における関数アプリのアドレスになります。After the deployment is complete, make a note of the Site URL value, which is the address of your function app in Azure.


Function App の設定Function app settings

Local.settings.json で追加したすべての設定は、Azure の関数アプリにも追加する必要があります。Any settings you added in the local.settings.json must be also added to the function app in Azure. プロジェクトを発行するとき、これらの設定は自動的にアップロードされません。These settings are not uploaded automatically when you publish the project.

Azure の関数アプリに必要な設定をアップロードする最も簡単な方法として、プロジェクトが正常に発行された後に表示される [アプリケーション設定の管理] リンクを使用できます。The easiest way to upload the required settings to your function app in Azure is to use the Manage Application Settings... link that is displayed after you successfully publish your project.

これにより、関数アプリの [アプリケーションの設定] ダイアログが表示され、ここで新しいアプリケーション設定を追加したり、既存の設定を変更したりできます。This displays the Application Settings dialog for the function app, where you can add new application settings or modify existing ones.

以下のいずれかの方法を使用して、アプリケーション設定を管理することもできます。You can also manage application settings in one of these other ways:

次の手順Next steps

Azure Functions Tools の詳細については、Visual Studio 2017 Tools for Azure Functions ブログ投稿のよく寄せられる質問を参照してください。For more information about Azure Functions Tools, see the Common Questions section of the Visual Studio 2017 Tools for Azure Functions blog post.

Azure Functions Core Tools の詳細については、「Azure Functions をローカルでコーディングしてテストする」を参照してください。To learn more about the Azure Functions Core Tools, see Code and test Azure functions locally.

.NET クラス ライブラリとしての関数の開発の詳細については、「Azure Functions C# developer reference (Azure Functions C# 開発者向けリファレンス)」を参照してください。To learn more about developing functions as .NET class libraries, see Azure Functions C# developer reference. この記事は、Azure Functions でサポートされる各種バインドを宣言するための属性の使用例にもリンクしています。This article also links to examples of how to use attributes to declare the various types of bindings supported by Azure Functions.