BLOGAzureブログ
Azure Functionsでなんちゃってアプリケーション開発体験をしてみよう
Azure相談センターSB C&Sは、Microsoft Azureを推奨します。
Azure Functionsでなんちゃってアプリケーション開発体験をしてみよう
皆さまこんにちは、SB C&Sの八釼(やつるぎ)です。
突然ですがアプリケーションを開発したことはありますでしょうか?開発というと少々大げさに聞こえるのですが、簡単なものでもソースコードを記述してそれを元にプログラムを動作させた経験はあるかという質問でした。
業務上プログラミングをされていなくとも、例えばマクロVBAやGoogle Apps Script(GAS)などを使って個人レベルでの業務効率化をされた方はそれなりにいらっしゃるのではないでしょうか。ですが、一切ソースコードを記述したことがない、プログラムを(意識的に)動作させたことがないという方も相当数いらっしゃるかと思います。
というか、細かな話は割愛しますが基本的にはソースコードを記述したファイルを作成しただけではプログラムを実行させることはできません。ビルドであるとか実行環境のことなども考慮する必要があります。GASのようなものだと気軽ですが。
そこで今回はAzure Functionsを活用してソースコードファイル作成からデプロイまでを気軽に体験してもらえる方法を紹介します。Pythonプログラムを使用しますがその知識は不要ですので、ぜひ最後までお付き合いいただけますと幸いです。
詳細については公式ドキュメントをご確認いただければと思いますが、細かなことはさておきざっくりFaaS(Function as a Service)のサービスと考えていただいて差し支えありません。
なお、今回は以下のクイックスタートを実施していただくことで、なんちゃってアプリケーション開発の体験をしていただくことになります。PythonやVisual Studio Codeのインストールなどの環境の準備はもちろん必要です。ちなみに私の場合は、Windows 11にこの環境を用意しました。クイックスタート: Visual Studio Code と Python を使用して Azure に関数を作成する
「func-test_licensecounter-blog」というフォルダを作成し、それをプロジェクトワークスペースとして指定しました。またPythonの仮想環境のバージョンは3.11.4にしました。その他についてはクイックスタートで指示されている情報を入力しました。
すると空だったフォルダに以下のようなファイルやフォルダが自動的に作成されました。
.
├── .funcignore
├── .git/
├── .gitignore
├── .venv/
├── .vscode/
├── function_app.py
├── host.json
├── local.settings.json
└── requirements.txt
お気づきの方はいらっしゃるかもしれませんがGitのフォルダ(リポジトリ)も作成されました。これも含め特に今回ほぼほぼこれらは無視しますので、あまり気にしなくて問題ありません。
重要なのは、function_app.pyです。これがPythonのソースコードファイルの拡張子です。コードも自動的に記述されています。そしてこれに一切手を加えることなくそのまま使用できるのです。馴染みのない方はぜひ、Pythonのソースコードの雰囲気だけつかんでいただければと思います。
import azure.functions as func
import logging
app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@app.route(route="HttpExample")
def HttpExample(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')
if name:
return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")
else:
return func.HttpResponse(
"This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
status_code=200
)
Azure Functions Core Toolsの準備が整ったらいよいよ関数を動かしてみます。
すると
Executed function "HttpExample". Response: "Hello, Azure. This HTTP triggered function executed successfully."
という通知がVisual Studio Codeで確認でき、問題なく実行できました。
関数アプリ(Function App)と関連リソースを作成します。Visual Studio Codeからできてしまうので簡単です。関数アプリ名は「testfuncapplicensecounterblog」にしました。ランタイムスタックはPython 3.11です。
成功すると以下のように関数アプリのリソースが確認できました。
もちろんリソースグループを含めて関連リソースも作成されていました。
Azure側の準備が整ったので、ではこの関数アプリにデプロイしてみましょう。特に問題なく以下のように関数HttpExampleがデプロイされるはずです。
見た感じは問題なさそうですが、正常に動作するかが重要です。まずは、API CORS設定を以下のように更新(許可される元のドメインとしてhttps://portal.azure.comを指定)してください。説明は割愛しますが、このようにしないとテストが成功しません。
では実際にテストを実行してみましょう。クエリパラメーターに{ "name": "Azure" }と入力し実行します。
すると成功しました。
これはクイックスタートにはないですが、せっかくなのでAPIに対して別の方法でリクエストをしてみましょう。まずはURLを取得します。
そして先ほど同様にクエリパラメーターに{ "name": "Azure" }を入力したいので
https://testfuncapplicensecounterblog.azurewebsites.net/api/HttpExample?name=Azure
とします。
これをブラウザのアドレスバーに入力して画面を表示させてみます。すると期待通りの結果が得られました。
さらにCURLコマンドでもリクエストを送ってみます。こちらも問題なかったです。
$ curl https://testfuncapplicensecounterblog.azurewebsites.net/api/HttpExample?name=Azure
Hello, Azure. This HTTP triggered function executed successfully.
今回のクイックスタートで作成したアプリケーション(プログラム)は特に役に立つものではないですが、ソースコードを記述(ファイルを作成)し実行環境にデプロイするという大まかな体験ができ、おおよそイメージがつかめたのではないでしょうか?
また、Azure Functionsを活用したのでサーバー(実行環境)についてほとんど意識する必要はありませんでしたが、通常の物理マシンや仮想マシンをデプロイ先にするとそちらについての準備や考慮も必要でより手間がかかるという想像ができるようになったのではないでしょうか?Azureのようなクラウドプラットフォームサービスを利用すると開発効率が高くなるというのは例えばこのようなことなのです。
Azureを活用したアプリケーション開発にあたっては色々とお困りごとが出てくるかもしれませんが、その際にはぜひとも法人でのAzure導入前の相談窓口であるAzure相談センターまでお気軽にお問い合わせいただけますと幸いです。弊社では、ユーザー様のご状況やご要望を踏まえて最適な形でのAzureの導入のご支援を提供しており、Azure に精通したスタッフが丁寧にご回答させていただきます。
Azureの導入や運用に関するお悩みは SoftBankグループのSB C&Sにご相談ください
SoftBankグループのSB C&Sは、さまざまな分野のエキスパート企業との協力なパートナーシップによって、多岐にわたるAzure関連ソリューションをご提供しています。
「Azureのサービスを提供している企業が多すぎて、どの企業が自社にベストか分からない」
「Azure導入のメリット・デメリットを知りたい」
「Azureがどういう課題を解決してくれるのか知りたい」
など、Azureに関するお悩みならお気軽にお問い合わせください。
中立的な立場で、貴社に最適なソリューションをご提案いたします。
クラウドサーバーご検討中の方必見
お役立ち資料一覧
そのようなお悩みはありませんか?
Azure相談センターでは、上記のようなお悩みを解決する
ダウンロード資料を豊富にご用意しています。
是非、ご覧ください。
オンプレミスからクラウドへの移行を検討している方のために、安心・スムーズな移行を実現する方法を解説し、
運用コストの削減に有効な「リザーブドインスタンス」もご紹介するホワイトペーパーです。
導入から活用まで専門スタッフが回答いたします。
お気軽にお問い合わせください。