はじめに
こんにちは。すぎもんです![]()
HULFT Squareのジョブを外部サービスから起動したいというケースは多いと思い
過去に「AWS Lambdaを使ってHULFT Squareを実行してみた」をという記事をご紹介しました。
実際の業務ではAWS以外のサービスでも同じことをしたい場合もあると思います。
そこで今回は、Microsoftが提供するサーバーレスコンピューティングサービスである
Azure Functionを使用して、HULFT Square を実行することが出来るか試してみます。
これにより、Azureから任意のタイミングでHULFT Squareを実行させることが出来ます。
今回やること

今回は外部のPCから、Azure Function (関数アプリ) を実行し、HULFT Squareを稼働させます。
実施するのに必要な設定
HULFT Square側の設定
0.HULFT Squareのスクリプトを実行させるAPIジョブ(WebAPI公開)の用意
Azure側の設定
1.関数アプリ作成
2.パラメーターを環境変数に設定
3.関数アプリにPythonのモジュールをデプロイ
4.API Managementの設定
HULFT Square側の設定
0.HULFT Squareのスクリプトを実行させるAPIジョブ(WebAPI公開)の用意
事前にHULFT Squareを実行させるのに必要なREST APIジョブの設定をしてください。
設定の仕方は過去の記事を参照ください。
「コマンドを使って外部からHULFT Squareを実行する方法」
Azure側の設定
1.関数アプリ作成
2.パラメーターを環境変数に設定
3.関数アプリにPythonのモジュールをデプロイ
4.API Managementの設定
1.関数アプリ作成
Azure Function (関数アプリ) は、「Microsoft Azure」が提供する、サーバーレスアーキテクチャを実装するためのサービスです。
この機能を使用することによって汎用性の高い実装が可能になります。

ここでは関数アプリ(Azure Function)を作成し、HULFT Squareを実行させるのに必要な設定をしていきます
「関数アプリの作成」画面が出てくるので設定していきます

Pythonのバージョンは2025年7月時点のものです
設定したら 確認および作成 を押下します。
ーーー
2.パラメーターを環境変数に設定
ここでは HULFT Square を実行するのに必要な値を環境変数に設定します
〇環境変数には下記を入れます
| 名前 | 値 |
|---|---|
| FUNCTION_NAME | ご自身で命名したAzure関数アプリの名前 |
| HULFT Squareのログイン用メールアドレス | |
| pass | HULFT Squareのログイン用パスワード |
| Tokens | HULFT Squareのリフレッシュトークン |
| JobURL | HULFT SquareのREST APIジョブのURLエンドポイント |
3.関数アプリにPythonのモジュールをデプロイ
Azure functionにローカルPCからモジュールを入れる方法はいくつかありますが、今回は VS Code を使用します。
➀VS Codeをインストール
お持ちでない方はご自身のPCにVS Codeをインストールしてください。
➁ VS CodeにAzure Functions拡張機能のインストール
VS CodeをPCにインストールが完了したら、Azure Functions拡張機能をインストールします。
VS Codeの左側のサイドバーの [拡張機能] アイコンをクリックし、Azure Functions と検索してインストールします。
※詳細はMicrosoftの公式仕様書にも記載がありますので、Visual Studio Code 用 Azure Functions 拡張機能をこちらからもダウンロード可能です。
➂プロジェクトの作成とPythonコードの保存
VS Codeで新しいフォルダーを作成し、Azure Functionsプロジェクトを作成します
- [F1キー] を押してコマンドパレットを開き、
Azure Functions: Create New Project...を選択します
任意のローカルPCのパスを選択します
(ここで指定するフォルダの階層にAzurefunctionが紐づきます)

Skip virtual environment を選択します

ここまででローカルのPCと関数アプリを紐づけることに成功しました
その際、自動的にファイルがいくつか作成されたと思います。
ここからは作成されたファイルを編集していきます。
実行したいPythonを設定
今回デプロイするファイルの中身は下記になります
➀ 実行に必要なPythonのライブラリー
使用するファイル名:requirements.txt
上記ファイルの中に必要なライブラリを下記のように登録します
# DO NOT include azure-functions-worker in this file
# The Python Worker is managed by Azure Functions platform
# Manually managing azure-functions-worker may cause unexpected issues
requests
➁ 実行したいPythonファイル
使用するファイル名:function_app.py
上記ファイルの中に必要なPythonコードを下記のように登録します
import json
import requests
import os
import logging
import azure.functions as func
FUNCTION_AND_ROUTE_NAME = os.environ.get('FUNCTION_NAME', 'MyDefaultValue')
app = func.FunctionApp()
@app.function_name(name=FUNCTION_AND_ROUTE_NAME)
@app.route(route=FUNCTION_AND_ROUTE_NAME, methods=["get", "post"])
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
# Step 1: メールとパスワードを使ってログインAPIでアクセストークンを取得する
email = os.environ.get('mail') # 環境変数からメールを取得
password = os.environ.get('pass') # 環境変数からパスワードを取得
url = "https://app.square.hulft.com/v1/users/login"
payload = json.dumps({"email": email, "password": password})
headers = {"Content-Type": "application/json"}
try:
response = requests.request("POST", url, headers=headers, data=payload)
response.raise_for_status() # HTTPエラーをチェック
logging.info(f"Login API Response: {response.text}") # 応答内容をログ出力
response_data = json.loads(response.text)
access_token_email_password = response_data["accessToken"]
except requests.exceptions.RequestException as e:
logging.error(f"Request failed: {e}")
return func.HttpResponse(
"Request failed due to network issues",
status_code=500
)
except KeyError:
logging.error(f"AccessToken not found. Response: {response.text}")
return func.HttpResponse(
"AccessToken not found",
status_code=500
)
# Step 2: リフレッシュトークンを使用して、Login APIでアクセストークンを取得する
refresh_token = os.environ.get('Tokens') # 環境変数からリフレッシュトークンを取得
url = "https://app.square.hulft.com/v1/rest-api-token"
payload = json.dumps({"refreshToken": refresh_token})
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {access_token_email_password}"
}
try:
response = requests.request("POST", url, headers=headers, data=payload)
response.raise_for_status()
access_token = json.loads(response.text)["accessToken"]
except requests.exceptions.RequestException as e:
logging.error(f"Refresh token request failed: {e}")
return func.HttpResponse(
"Refresh token request failed",
status_code=500
)
except KeyError:
logging.error("Access token not found in refresh token response")
return func.HttpResponse(
"Access token not found in refresh token response",
status_code=500
)
# Step 3: 取得したアクセストークンを使ってHTTPクライアントからREST API Job Endpointを実行する
job_url = os.environ.get('JobURL')
headers = {
"Authorization": f"Bearer {access_token}",
"X-HSQ-Async": "true"
}
try:
response = requests.post(job_url, headers=headers)
response.raise_for_status()
logging.info(f"Job API Response: {response.text}")
return func.HttpResponse(
"Successfully executed HULFT Square Job",
status_code=200
)
except requests.exceptions.RequestException as e:
logging.error(f"Job request failed: {e}")
return func.HttpResponse(
"Job request failed",
status_code=500
)
except Exception as e:
logging.exception("An unexpected error occurred")
return func.HttpResponse(
"An unexpected error occurred",
status_code=500
)
紐づいたローカルのファイルを選択し、実行したいPythonのコードを入れます。
記入後は [Ctrl + S] で保存できます。

ローカルでテスト実行確認をしたい場合は local.settings.json にも値を設定してください
デバッグ実行 :F5キー
デバッグ強制停止 :Shift + F5キー
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "python",,
"FUNCTION_NAME": "<ご自身で命名したAzure関数アプリの名前>",
"mail": "<HULFT Squareのログイン用メールアドレス>",
"pass": "<HULFT Squareのログイン用パスワード>",
"Tokens": "<HULFT Squareのリフレッシュトークン>",
"JobURL": "https://<HULFT SquareのREST APIジョブのURLエンドポイント>"
}
}
➃デプロイする
作成が完了したらデプロイをします
VS Codeで F1キーを押してコマンドパレットをいてください
Azure Functions: Deploy to Function App... を選択します
ご自身のデプロイしたいAzure functionを選んでください

デプロイに成功するとAzure Portalの関数アプリの画面にデプロイした関数の名前が表示されます。

4.API Managementの設定
Azure API Management はAzure functionを実行させることが出来るもう一つの方法になります。
この機能を使用することで実行にIP制限をかけたり、実行のログを取得したりすることが可能になります。

ここではこの機能を使って実行に必要なURLを取得する方法をご紹介します。
➀API Management作成
検索バーで「API」と入力し ”API Managementサービス” を選択


入力が完了したら「作成と確認」を押下してください。
しばらくするとリソースが作成されたことを確認出来ます。
➁API Management と Azure functionを紐づけます
作成したリソース名を選択し下記の順番でAzurefunctionと紐づけます
[作成したリソース] - [APIs] - [API] - [Add API] - [Function APP]

関数アプリの [選択] を押下して作成したAzurefunctionを選択します

これでAPImanagementとAzure Functionの紐づけは成功しました。
➂実行するためのエンドポイントとキー取得
作成したAPIを選択し下記の手順で開いていきます
[作成したAPIs] - [POST] - [Test] - [Add API]
[Request URL] が確認出来るのでこのエンドポイントを使用します

APIキーを使用する場合は下記から取得出来ます
[サブスクリプション] - [・・・] - [キーの表示/非表示] - [主キー]

実行してみた
最後に上記で取得したエンドポイントを使って実際に実行してみたいと思います。
実際にブラウザーから実行してみました。
最後に
今回は AzureからHULFT Squareを実行させましたが、いかがでしたでしょうか。
業務の中ではAzure上のサービスの動作をトリガーにHULFT Squareを動かすことも多いのではないでしょうか
このブログでは、今後も様々なTopics記事や接続検証等、皆さんの参考になるような記事を投稿していきたいと思います!
ここまで読んでいただきありがとうございました。それでは、また!![]()

















