Perl Hackers Hub

第54回 サーバレスでもPerl―Microsoft Azure Functionsで動かそう!(2)

この記事を読むのに必要な時間:およそ 3 分

前回の(1)こちらから。

今回のシステム構成

今回は,HTTPリクエストで指定された画像URLから人物の顔を認識し,性別と年齢の判定結果をJSONで返すシステムを作ります。

ここからは,Azureのアカウントを取得している前提で説明します。Azureのアカウントをお持ちではない場合,無料アカウントを取得しておいてください。

システム構成は図3となります。AzureではFunctionsやFace APIなどの各サービスをシステムに組み込むとき,それらを指してリソースと呼びます。たとえばリソースとしてのFunctionsを指す場合,Functionsリソースと呼びます。Functions,Face APIについては次項以降で説明します。

図3 システム構成

図3 システム構成

また,Azureでは複数のリソースを内包したプロジェクト単位の入れ物として,リソースグループがあります。リソースどうしはリソースグループを越えて相互にアクセスできます図4)⁠

図4 リソースとリソースグループ

図4 リソースとリソースグループ

Functions─⁠─ プログラム実行部分を担当

今回Functionsは,HTTPリクエストを受け関数を実行し,HTTPレスポンスを返す部分を担当します。クエリパラメータにimageという名前で画像URLが渡されることを期待します。

関数で利用されるPerlスクリプトでは,後述するFace APIに対して画像URLを引き渡し,顔認識の結果を受け取ります。そして受け取ったデータを整形し,クライアントへのレスポンスとして出力します。

Face API ─⁠─ 顔認識を担当

Face APIは,Azure Cognitive Servicesで提供されるAPIの一つです。Azure Cognitive Serviceは,AIArtificial Intelligence人工知能)やデータサイエンスの恩恵を受けたアプリケーション向けに用意されたサービス群です。Face APIは次のことができます。

  • 画像から人物の顔に関する情報(年齢,性別,表情,座標,幅や高さなど)を抽出する
  • 2つの人物画像から,同一人物であるか否かを判断する
  • あらかじめ学習した人物を,画像から特定する

今回は簡単な例として,画像から人物の顔を認識し,年齢と性別を抽出する役割を担当します。

Azure CLI環境の準備

Azureの操作手段は,Azure Portalでブラウザから操作する方法と,Azure CLI v2(執筆時点ではv2.0.52)でターミナルから操作する方法があります。

どちらで操作しても同じ結果となりますが,AzurePortalは日々改善されており,ある日を境にレイアウトなどが変わる可能性があります。そこで本稿では,Azure CLI v2の利用を強く推奨します注1)⁠

Azure CLIを利用するもう一つの大きなメリットは,リソース構成管理の自動化です。Azure CLIを使ったbashスクリプトを用意しておくと,スクリプトを起動するだけで毎回同じ構成を再現できます。Azure CLIをAnsible経由で利用することもできます。

注1)
Web上ではまだAzure CLI v1の情報を目にしますので,よく確認してください。

Azure CLI v2のインストール

公式ドキュメントのインストール方法に沿って,Azure CLI v2をインストールします。

Windowsの場合,MSI形式のインストーラにしたがってインストールを進めてください。

macOSの場合,先にHomebrewをインストールしてから,次のコマンドでAzure CLIをインストールしてください。

macOSにおけるAzure CLIのインストール

$ brew update && brew install azure-cli

インストールが完了すると,ターミナルからazコマンドが利用可能となります。

azコマンドを実行

$ az
      /\
     /  \    _____  _ _   ___ _
    / /\ \  |_  / | | | \' __/ _\
   / ____ \  / /| |_| | | |  __/
  /_/    \_\/ ___|\__,_|_|  \___|


Welcome to the cool new Azure CLI!
(省略)
    vmss              : Manage groupings of virtual machin
es in an Azure Virtual Machine Scale Set
                       (VMSS).
   webapp             : Manage web apps.

英語版のみとなりますが,Azure CLIのコマンドリファレンスが公開されています。詳細な使い方はこちらを確認してください。