Azure での Python の概要

このドキュメントは、クラウドでホストされるか、クラウド サービスを利用する Python アプリケーションの開発を開始するときに、チェックリストとガイドとして使用します。 このドキュメントのリンクと手順に従う場合は、次の手順を実行します。

  • には、クラウドとは何か、クラウドを念頭に置いてアプリケーションを設計する方法に関する基本的な理解があります。
  • クラウドベースのアプリケーションを構築するために必要なツールやライブラリを含むローカル開発環境をセットアップします。
  • は、クラウドベースのアプリケーションを開発する際のワークフローを理解します。

フェーズ 1: 概念を学習する

クラウド用のアプリケーションの開発を初めて使用する場合は、ビデオを含むこの短い一連の記事を使用すると、迅速に作業を開始するのに役立ちます。

クラウド用のアプリケーション開発の基本を理解したら、開発環境を設定し、クイックスタートまたはチュートリアルに従って最初のアプリをビルドします。

フェーズ 2: Azure 開発用にローカル Python 環境を構成する

Azure を使用して Python アプリケーションを開発するには、まずローカル開発環境を構成する必要があります。 構成には、Azure アカウントの作成、Azure 開発用のツールのインストール、それらのツールの Azure アカウントへの接続などがあります。

Azure での開発には Python 3.8 以降が必要です。 ワークステーション上の Python のバージョンを確認するには、コンソール ウィンドウで、コマンド python3 --version (macOS/Linux の場合) または py --version (Windows の場合) を入力します。

Azure アカウントを作成する

Azure で Python アプリケーションを開発するには、Azure アカウントが必要です。 Azure アカウントは、Azure へのサインインに使用する資格情報で、Azure リソースの作成に使用するものです。

職場で Azure を使用している場合は、会社のクラウド管理者に問い合わせて、Azure へのサインインに使用する資格情報を入手します。

それ以外の場合は、Azure の無料アカウントを作成して、人気のあるサービスへの 12 か月間無料のアクセスと 200 ドル分のクレジットを受け取り、Azure を 30 日間探索することができます。

Azure ポータルの使用

資格情報を取得したら、https://portal.azure.comAzure portal にサインインできます。 Azure portal は、通常、特に Azure とクラウド開発に慣れていない場合には、Azure の使用を開始する最も簡単な方法です。 Azure portal では、リソースの作成や削除など、さまざまな管理タスクを実行できます。

既に Azure とクラウド開発の経験がある場合は、Visual Studio Code や Azure CLI などのツールを使用して開始することもできます。 Python デベロッパー センターの記事では、Azure portal、Visual Studio Code、Azure CLI を操作する方法について説明しています。

Visual Studio Code を使用する

Azure 用に開発する場合は、任意のエディターまたは IDE を使用して Python コードを記述できます。 ただし、Azure と Python の開発では、Visual Studio Code を使用することを検討することをお勧めします。 Visual Studio Code には、Azure と Python 向けの多くの拡張機能とカスタマイズが用意されており、開発サイクルとローカル環境から Azure へのデプロイが容易になります。

Visual Studio Code を使用した Python 開発の場合は、次をインストールします。

  • Python 拡張機能。 この拡張機能には、IntelliSense (Pylance)、Linting、Debugging (マルチスレッド、リモート)、Jupyter Notebook、コードの書式設定、リファクタリング、単体テストなどが含まれています。

  • Azure Tools 拡張機能パック。 拡張機能パックには、Azure アプリ Service、Azure Functions、Azure Storage、Azure Cosmos DB、Azure Virtual Machines を 1 つの便利なパッケージで操作するための拡張機能が含まれています。 Azure 拡張機能を使用すると、Azure を簡単に検出して操作できます。

Visual Studio Code から拡張機能をインストールするには、次のようにします。

  1. Ctrl + Shift + X キーを押して、 [拡張機能] ウィンドウを開きます。
  2. Azure Tools 拡張機能を検索します。
  3. [インストール] ボタンを選択します。

Screenshot of the Visual Studio Code showing extensions panel searching for the Azure Tools extension pack.

Visual Studio Code に拡張機能をインストールする方法の詳細については、Visual Studio Code Web サイトの「Extension Marketplace」のドキュメントを参照してください。

Azure Tools 拡張機能をインストールしたら、Azure アカウントでサインインします。 左側のパネルに、Azure アイコンが表示されます。 このアイコンを選択すると、Azure サービスのコントロール パネルが表示されます。 [Azure にサインイン...] を選択して認証プロセスを完了します。

Screenshot of the Visual Studio Code showing how to sign-in the Azure tools to Azure.

Note

"Cannot find subscription with name (<サブスクリプション ID> という名前のサブスクリプションが見つかりません)" というエラーが表示された場合、原因としては、プロキシの内側にいるため、Azure API に到達できないことが考えられます。 ご利用のターミナルのプロキシ情報に環境変数の HTTP_PROXYHTTPS_PROXY を構成してください。

# Windows
set HTTPS_PROXY=https://username:password@proxy:8080
set HTTP_PROXY=http://username:password@proxy:8080
# macOS/Linux
export HTTPS_PROXY=https://username:password@proxy:8080
export HTTP_PROXY=http://username:password@proxy:8080

Azure CLI の使用

Azure では、Azure portal と Visual Studio Code に加えて、Azure リソースを作成して管理するための Azure CLI コマンドライン ツールも提供されています。 Azure CLI には、効率性、再現性、および繰り返し発生するタスクをスクリプト化できるという利点があります。 実際には、ほとんどの開発者は、Azure portal と Azure CLI の両方を使用しています。

Azure CLI をインストールしたら、ワークステーションのターミナル ウィンドウにコマンドaz loginを入力して、Azure CLI から Azure アカウントにサインインします。

az login

Azure CLI によって既定のブラウザーが開かれ、サインインのプロセスが完了します。

Python 仮想環境を構成する

Azure 用の Python アプリケーションを作成するときは、アプリケーションごとに仮想環境を作成することをお勧めします。 仮想環境は、特定のバージョンの Python と、そのアプリケーションに必要なその他のパッケージ用の自己完結型ディレクトリです。

仮想環境を作成するには、これらの手順に従います。

  1. ターミナルまたはコマンド プロンプトを開きます。

  2. プロジェクトのフォルダーを作成します。

  3. 次のコマンドを実行して、仮想環境を作成します。

    # py -3 uses the global python interpreter. You can also use python3 -m venv .venv.
    py -3 -m venv .venv
    

    このコマンドは Python venv モジュールを実行し、フォルダー ".venv" に仮想環境を作成します。 通常、.gitignore ファイルには ".venv" エントリがあるため、仮想環境はコード チェックインではチェックインされません。

  4. 次のコマンドを実行して、仮想環境をアクティブにします。

    .venv\Scripts\activate
    

    Note

    Windows コマンド シェルを使用している場合は、.venv\Scripts\activate Windows 上の Visual Studio Code で Git Bash を使用している場合は、代わりにコマンドを使用しますsource .venv/Scripts/activate

この環境がアクティブになったら (アクティブ化は Visual Studio Code によって自動的に実行されます)、pip install を実行することで、ライブラリがその環境にのみインストールされます。 仮想環境で実行される Python コードでは、その仮想環境にインストールされている特定のパッケージ バージョンが使用されます。 異なる仮想環境を使用すると、さまざまなアプリケーションで異なるバージョンのパッケージを使用できるようになります。これは、必要になる場合があります。 仮想環境の詳細については、Python ドキュメントの「仮想環境とパッケージ」を参照してください。

たとえば、要件requirements.txt ファイル内にある場合、アクティブ化された仮想環境内で、次のコマンドを使用してインストールできます。

pip install -r requirements.txt

フェーズ 3: Azure 開発ワークフローを理解する

前回の記事: リソースのプロビジョニング、アクセス、管理

Azure のサービスとリソースのモデルを理解したら、プロビジョニングコーディングテストデプロイ管理という、Azure を使用したクラウド アプリケーションの全体的な開発フローを理解することができます。

ステップ 主要ツール 活動
のプロビジョニング Azure CLI、Azure portal、VS Code Azure Tools 拡張機能、Cloud Shell、Azure SDK 管理ライブラリを使用した Python スクリプト リソース グループを作成し、それらのグループにリソースを作成する。アプリ コードから使用できるようにリソースを構成したり、デプロイで Python コードを受け取る準備を整えたりします。
コード コード エディター (Visual Studio Code や PyCharm など)、Azure SDK クライアント ライブラリ、リファレンス ドキュメント プロビジョニングされたリソースを操作するには、Azure SDK クライアント ライブラリを使用して Python コードを記述します。
テスト Python ランタイム、デバッガー アクティブなクラウド リソース (通常、運用リソースではなく、開発またはテスト リソース) に対して Python コードをローカルで実行します。 コード自体は Azure でまだホストされていないため、デバッグや反復処理を素早く行うことができます。
展開 VS Code、Azure CLI、GitHub Actions、Azure Pipelines コードがローカルでテストされたら、コード自体をクラウドで実行できる適切な Azure ホスティング サービスにそれをデプロイします。 デプロイされたコードは通常、ステージングまたは運用リソースに対して実行されます。
管理 Azure CLI, Azure portal, VS Code, Python スクリプト, Azure Monitor アプリのパフォーマンスと応答性を監視し、運用環境で調整を行い、次回のプロビジョニングと開発のために開発環境に改良点を移行します。

手順 1: リソースをプロビジョニングして構成する

このシリーズにおける前回の記事で説明したように、アプリケーション開発の最初のステップは、アプリケーションのターゲット環境を成り立たせるリソースのプロビジョニングと構成です。

プロビジョニングではまず、適切な Azure リージョンにリソース グループを作成します。 リソース グループは、Azure portal、VS Code と Azure Tools 拡張機能、Azure CLI、または Azure SDK 管理ライブラリ (または REST API) を使用するカスタム スクリプトを使用して作成できます。

そのリソース グループ内で、ポータル、VS Code、CLI、または Azure SDK を使用して、必要な個々のリソースをプロビジョニングして構成します。 (ここでも、使用可能なリソースの種類の概要については、Azure 開発者ガイドを参照してください)。

構成には、どの ID (サービス プリンシパルまたはアプリケーション ID) がそれらのリソースにアクセスできるかを制御するアクセス ポリシーの設定が含まれます。 アクセス ポリシーは、Azure ロールベースのアクセス制御 (RBAC) を使用して管理されます。一部のサービスには、より具体的なアクセス制御もあります。 セキュリティ上の懸念があるほぼすべてのリソースで Azure RBAC を使用することになるため、Azure を使用するクラウド開発者は、これについてよく理解しておく必要があります。

ほとんどのアプリケーション シナリオでは、通常、Azure SDK 管理ライブラリを使用して、Azure CLI または Python コードを使用してプロビジョニング スクリプトを作成します。 このようなスクリプトでは、アプリケーションのリソースのニーズ全体を記述します (基本的には、アプリケーションのデプロイ先のカスタム クラウド コンピューターを定義します)。 スクリプトを使用すると、開発、テスト、ステージング、運用などの異なる環境内で同じリソース セットを簡単に再作成できます。 自動化すると、Azure portal または VS Code で多くの繰り返しの手順を手動で実行することを回避できます。 そのようなスクリプトがあれば、別のリージョンに環境をプロビジョニングしたり、異なるリソース グループを使用したりすることも簡単にできます。 これらのスクリプトをソース管理リポジトリにも維持すれば、完全な監査と変更履歴が得られます。

手順 2: リソースを使用するアプリ コードを記述する

アプリケーションに必要なリソースをプロビジョニングしたら、それらのリソースの実行時の側面を操作するアプリケーション コードを作成します。

たとえばプロビジョニング手順で、Azure Storage アカウントを作成し、そのアカウントに BLOB コンテナーを作成して、そのコンテナー上のアプリケーションのアクセス ポリシーを設定したとします。 このプロビジョニング プロセスについては、Azure Storage のプロビジョニングの例に関する記事で説明されています。 次に、自分のコードから、そのストレージ アカウントに対する認証を行った後、そのコンテナー内の BLOB を作成、更新、削除することができます。 この実行時プロセスについては、Azure Storage の使用例に関する記事で説明されています。 同様に、スキーマと適切なアクセス許可を使用して (データベースのプロビジョニング例で示されているように) データベースをプロビジョニングしたとすれば、アプリケーション コードから、そのデータベースに接続して、通常のクエリ (作成、読み取り、更新、削除) を実行することができます。

アプリ コードでは通常、使用するリソースの名前と URL を特定する目的で環境変数が使用されます。 環境変数によって、コードを変更することなく、クラウド環境 (開発、テスト、ステージング、運用) を簡単に切り替えることができます。 アプリケーション コードをホストするさまざまな Azure サービスには、必要な変数を定義するための手段が用意されています。 たとえば、Azure アプリ Service (Web アプリをホストするため) と Azure Functions (Azure のサーバーレス コンピューティング) では、Azure portal、VS Code、または Azure CLI を使用してアプリケーション設定を定義します。この設定は、環境変数としてコードに表示されます。

Python 開発者は、Python 用の Azure SDK クライアント ライブラリを使用して、Python でアプリケーション コードを記述する可能性があります。 とはいえ、クラウド アプリケーションを構成する独立したパーツは、サポートされている任意の言語で作成できます。 複数のプログラミング言語を使用してチームで作業している場合、アプリケーションの一部で Python、一部の JavaScript、Java、その他の C# を使用している可能性があります。

アプリケーション コードでは、Azure SDK 管理ライブラリを使用して、必要に応じてプロビジョニングと管理の操作を実行できます。 同様に、プロビジョニング スクリプトでは、SDK クライアント ライブラリを使用して、特定のデータを使用してリソースを初期化したり、それらのスクリプトがローカルで実行されている場合でもクラウド リソースに対してハウスキーピング タスクを実行したりできます。

手順 3: アプリ コードをローカルでテストしてデバッグする

開発者は通常、ローカル ワークステーションでアプリ コードをテストしてから、そのコードをクラウドにデプロイすることを好みます。 アプリ コードをローカルでテストするということは、通常、ストレージやデータベースなど、クラウドで既にプロビジョニングされている他のリソースにアクセスすることになります。 違いは、アプリのコード自体がまだクラウド サービス内で実行されていないだけです。

また、コードをローカルで実行することにより、Visual Studio Code などのツールに備わっているデバッグ機能を最大限に活用すると共に、ソース管理リポジトリで自分のコードを管理することができます。

ローカル テストのためにコードをまったく変更する必要はありません。Azure では、クラウドにデプロイするのと同じコードを使用したローカル開発とデバッグが完全にサポートされています。 環境変数はもう一度重要です。クラウドでは、コードはホスティング リソースの設定に環境変数としてアクセスできます。 同じ環境変数をローカルで作成すると、同じコードが変更なしで実行されます。 このパターンは、認証の資格情報、リソースの URL、接続文字列など、さまざまな設定で役立ちます。コードをローカルで実行するときには開発環境のリソースを、また、コードがクラウドにデプロイされた後は運用環境のリソースを簡単に使用できるようになります。

手順 4: アプリ コードを Azure にデプロイする

コードをローカルでテストしたら、いよいよ、そのホストとなるプロビジョニング済みの Azure リソースにコードをデプロイすることになります。 たとえば、Django Web アプリを作成している場合、そのコードを仮想マシン (この場合は独自の Web サーバーを用意) または Azure App Service (最初から Web サーバーが用意されている) にデプロイします。 デプロイされたコードは、ローカル コンピューター上ではなくサーバー上で実行され、承認されたあらゆる Azure リソースにアクセスすることができます。

前のセクションで触れたように、通常の開発プロセスでは、まず、開発環境のプロビジョニング済みリソースにコードをデプロイします。 何度かテストを重ねた後、ステージング環境のリソースにコードをデプロイします。アプリケーションはテスト チームに公開されます。そこにはプレビュー ユーザーも含まれるかもしれません。 アプリケーションのパフォーマンスに問題がなければ、運用環境にコードをデプロイすることができます。 これらのデプロイはすべて、Azure Pipelines と GitHub Actions を使用した継続的インテグレーションと継続的デプロイによって自動化することもできます。

どのような方法で行うにせよ、クラウドにデプロイしたコードは、紛れもなくクラウド アプリケーションとなり、完全に Azure のデータ センター内のサーバー コンピューター上で実行されます。

手順 5: 管理、監視、修正

デプロイ後は、アプリケーションが意図したとおりに動作して、ユーザーからの要求に応答し、リソースを効率よく (かつ最小限のコストで) 使用していることを確認する必要があります。 Azure が必要に応じてデプロイを自動的にスケーリングする方法を管理できます。また、Azure portal、VS Code、Azure CLI、または Azure SDK ライブラリで記述されたカスタム スクリプトを使用して、パフォーマンス データを収集および監視できます。 その後、再び同じツールをどれでも使用して、プロビジョニング済みのリソースをリアルタイムで調整し、パフォーマンスを最適化することができます。

クラウド アプリケーションを再構築する方法についての分析情報は、監視によって得られます。 たとえば、Web アプリの特定の部分 (一連の API エンドポイントなど) が、主な部分と比較してまれにしか使用されていないと判明する場合があります。 その後、これらの API をサーバーレス Azure Functions として個別にデプロイすることもできます。 関数として、独自のバッキング コンピューティング リソースがあり、メイン アプリケーションと競合しませんが、1 か月あたりのコストはわずかです。 高額の価格レベルにスケールアップすることなく、メイン アプリケーションで処理できるユーザー数を増やし、応答性を高めることができます。

次のステップ

以上、Azure の基本的な構造と全体的な開発フローについて説明しました。リソースのプロビジョニング、コードの作成とテスト、Azure へのコードのデプロイ、それらのリソースの監視と管理についてご理解いただけかと思います。