BLOGAzureブログ

Azure Functionsでなんちゃってアプリケーション開発体験をしてみよう

2024.12.04

クラウドサーバーご検討中の方必見 お役立ち資料一覧

皆さまこんにちは、SB C&Sの八釼(やつるぎ)です。
突然ですがアプリケーションを開発したことはありますでしょうか?開発というと少々大げさに聞こえるのですが、簡単なものでもソースコードを記述してそれを元にプログラムを動作させた経験はあるかという質問でした。

業務上プログラミングをされていなくとも、例えばマクロVBAやGoogle Apps Script(GAS)などを使って個人レベルでの業務効率化をされた方はそれなりにいらっしゃるのではないでしょうか。ですが、一切ソースコードを記述したことがない、プログラムを(意識的に)動作させたことがないという方も相当数いらっしゃるかと思います。

というか、細かな話は割愛しますが基本的にはソースコードを記述したファイルを作成しただけではプログラムを実行させることはできません。ビルドであるとか実行環境のことなども考慮する必要があります。GASのようなものだと気軽ですが。

そこで今回はAzure Functionsを活用してソースコードファイル作成からデプロイまでを気軽に体験してもらえる方法を紹介します。Pythonプログラムを使用しますがその知識は不要ですので、ぜひ最後までお付き合いいただけますと幸いです。

Azure Functionsとは

詳細については公式ドキュメントをご確認いただければと思いますが、細かなことはさておきざっくり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
                                    )
                            
                        
                    

作成された関数をローカルPCで実行する

Azure Functions Core Toolsの準備が整ったらいよいよ関数を動かしてみます。

ExecuteFunctionNow.png

すると

                        
                            Executed function "HttpExample". Response: "Hello, Azure. This HTTP triggered function executed successfully."
                        
                    

という通知がVisual Studio Codeで確認でき、問題なく実行できました。

Azureにデプロイして実行

関数アプリ(Function App)と関連リソースを作成します。Visual Studio Codeからできてしまうので簡単です。関数アプリ名は「testfuncapplicensecounterblog」にしました。ランタイムスタックはPython 3.11です。

成功すると以下のように関数アプリのリソースが確認できました。

edited_resources.png

もちろんリソースグループを含めて関連リソースも作成されていました。

edited_rg-testfuncapplicensecounte.png

Azure側の準備が整ったので、ではこの関数アプリにデプロイしてみましょう。特に問題なく以下のように関数HttpExampleがデプロイされるはずです。

HttpExampleInAzure.png

見た感じは問題なさそうですが、正常に動作するかが重要です。まずは、API CORS設定を以下のように更新(許可される元のドメインとしてhttps://portal.azure.comを指定)してください。説明は割愛しますが、このようにしないとテストが成功しません。

CORS.png

では実際にテストを実行してみましょう。クエリパラメーターに{ "name": "Azure" }と入力し実行します。

edited_テスト_実行.png

すると成功しました。

edited_テスト実行(出力).png

これはクイックスタートにはないですが、せっかくなのでAPIに対して別の方法でリクエストをしてみましょう。まずはURLを取得します。

edited_関数のURLを取得.png

そして先ほど同様にクエリパラメーターに{ "name": "Azure" }を入力したいので

                        
                            https://testfuncapplicensecounterblog.azurewebsites.net/api/HttpExample?name=Azure
                        
                    

とします。

これをブラウザのアドレスバーに入力して画面を表示させてみます。すると期待通りの結果が得られました。

msedge.png

さらに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 エヴァンジェリスト
    SB C&S株式会社 ICT事業本部 クラウド・ソフトウェア推進本部
    クラウド・ソフトウェア戦略企画部 1課
yyatsurugi-image-v3.png

Azureの導入や運用に関するお悩みは SoftBankグループのSB C&Sにご相談ください

SoftBankグループのSB C&Sは、さまざまな分野のエキスパート企業との協力なパートナーシップによって、多岐にわたるAzure関連ソリューションをご提供しています。

「Azureのサービスを提供している企業が多すぎて、どの企業が自社にベストか分からない」
「Azure導入のメリット・デメリットを知りたい」
「Azureがどういう課題を解決してくれるのか知りたい」
など、Azureに関するお悩みならお気軽にお問い合わせください。
中立的な立場で、貴社に最適なソリューションをご提案いたします。

クラウドサーバーご検討中の方必見
お役立ち資料一覧

クラウドサーバーご検討中の方必見 お役立ち資料一覧
  • クラウドサーバーの導入を検討しているがオンプレミスとどう違うのか
  • AWSとAzureの違いについて知りたい
  • そもそもAzureについて基礎から知りたい
  • 今、話題の「WVD」って何?

そのようなお悩みはありませんか?
Azure相談センターでは、上記のようなお悩みを解決する
ダウンロード資料を豊富にご用意しています。
是非、ご覧ください。

Azureの導入・運用に役立つ資料を
無料でダウンロードしていただけますDOWNLOAD

オンプレミスからクラウドへの移行を検討している方のために、安心・スムーズな移行を実現する方法を解説し、
運用コストの削減に有効な「リザーブドインスタンス」もご紹介するホワイトペーパーです。

Azureのことなら、
SB C&Sにご相談を!

導入から活用まで専門スタッフが回答いたします。
お気軽にお問い合わせください。