こんにちは。10分で生産的なミーティングができるWeb会議ツール「minmeeting」を開発している伊勢川です。
Microsoft AzureのFunctionsは、AmazonのLambdaやGoogleのCloud Functionsと同じく、サーバーレスでクラウド上でプログラムが実行できるサービスです。サーバーレスのため、自分でインフラを設計・構築する必要がなく、負荷に応じて自動でスケールイン・アウトをしてくれるため、インフラレイヤーのことはほとんど気にする必要がありません。
また、AmazonやGoogleのサービスと比べて、ブラウザ上の開発ツールが充実しているのが特徴で、自分のPC上に開発環境が一切なくても、ブラウザさえあれば、開発することができます。
Azure Functionsでは、機械学習などで非常に人気の言語Pythonを使うことができます。デフォルトではPythonのバージョンは2.7.8ですが、日本語を扱う際に面倒なことが多いため、Python3系に切り替える方法を紹介します。また、pipを使って外部のライブラリをインストールする方法を紹介します。
Azure Functions(Python用)を作成する
ダッシュボード左側から、Function Appを作成する。
App nameを入力して、サーバーのLocationを日本にしておきます。
Functions横の+ボタンを押して、Custom functionを選択します。
LanguageはPythonを選択し、HttpTriggerを選択肢、Function名称を入力します。
Functionの作成が完了すると、下記のようなコーディング画面がでてきます。ここからPythonのアプリを開発することができます。
HttpTriggerのため、HttpのリクエストがPOSTされると、このコードが実行されます。このコードを実行するためのURLは、画面右上の「>Get function URL」から取得することができます。また、上のRUNボタンを押すとテストリクエストを投げて、このコードを実行することができます。実行ログは画面下の方に出力されます。
Python3をインストールする
次にPython3をインストールする手順を紹介します。
まずは、ブラウザでKuduという画面を開きます。KuduはCMDやPowerShellのコマンドを実行することができるツールです。
https://YOUR_APP_NAME.scm.azurewebsites.net/DebugConsole
ここでいうYOUR_APP_NAMEは下記の画面から調べることができます。
Kuduにアクセスすると、下記のような画面がでてきて、下の黒い画面には、Windowsのコマンドプロンプトと同様にコマンドを打つことができます。
下記のコマンドでsite\toolsの下に移動し、python3をインストールします。
cd D:\home\site\tools
nuget.exe install -Source https://www.siteextensions.net/api/v2/ -OutputDirectory D:\home\site\tools python361x64
インストールしたpython3をFunctionsで実行できる場所に移動します。
mv /d/home/site/tools/python361x64.3.6.1.3/content/python361x64/* /d/home/site/tools/
Azure Functionsの開発画面に戻り、下記のコードを実行すると、ログにpythonのバージョンが出力されます。
import platform
print("Python '{0}'".format(platform.python_version()))
pipでライブラリをインストールする
pipを使うには上記のpythonのインストールを予め行っておく必要があります。上記のインストールが終わったら、再びKuduのDebugConsoleの画面に移動します。
https://YOUR_APP_NAME.scm.azurewebsites.net/DebugConsole
pipコマンド
コマンドプロンプトにて、下記のようなコマンドを打つと、pipにて外部のライブラリをインストールすることができます。下記はrequestsをインストールする例です。
D:\home\site\tools\python.exe -m pip install requests
pip -r コマンド
KuduのDebugConsole画面左上のプラスボタンからファイルを追加することができるため、pip -rコマンドを使うこともできます。
requirements.txtを保存したら、コマンドプロンプトから下記のコマンドを打つと、必要なライブラリを一括でインストールできます。
D:\home\site\tools\python.exe -m pip install -r requirements.txt
たまにエラーになるものもありますが、TensorFlowやgoogle-cloudやWatsonのSDKなどの他のクラウドベンダーのSDKなどもわりと寛容にインストールできるようです。
以上、Azure FunctionsでPython3とpipを使う方法のご紹介でした。
参考資料
https://prmadi.com/running-python-code-on-azure-functions-app/
https://github.com/DreamArtsChiwawa/APIGuides/blob/master/document/CreateBotWithPythonOnAzureFunctions.md