

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# フラスコと AWS Elastic Beanstalk を使用して AI/ML モデルの結果を視覚化
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk"></a>

*Amazon Web Services、Chris Caudill、Durga Sury*

## 概要
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-summary"></a>

人工知能と機械学習 (AI/ML) サービスからの出力を視覚化するには、開発者やエンジニアがカスタマイズする必要な複雑な API 呼び出しが必要になることがよくあります。アナリストが新しいデータセットを迅速に探索する場合、これは欠点になる可能性があります。

ウェブベースのユーザーインターフェイス (UI) を使用することで、サービスのアクセシビリティを高め、よりインタラクティブなデータ分析を実現できます。これにより、ユーザーが独自のデータをアップロードし、ダッシュボードでモデルの結果を視覚化できます。

このパターンでは、[Flask](https://flask.palletsprojects.com/en/2.0.x/) と [Plotly](https://plotly.com/) を使用して、 Amazon Comprehend をカスタムウェブアプリケーションと統合し、ユーザーが提供したデータからセンチメントとエンティティを視覚化します。このパターンでは、AWS Elastic Beanstalk を使用してアプリケーションをデプロイするステップも記載されています。[Amazon Web Services (AWS) の AI サービス](https://aws.amazon.com/machine-learning/ai-services/)を使用するか、エンドポイント ([Amazon SageMaker エンドポイントなど](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html)) でホストされるカスタムトレーニング済みモデルを使用してアプリケーションを適応させることができます。

## 前提条件と制限事項
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント。 
+ ローカルマシンにインストールされ、設定されたAWS コマンドラインインターフェイス (AWS CLI) 詳細については、JupyterHub ドキュメントの[Configuration Basics](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) を参照してください。AWS Cloud9 統合開発環境 (IDE) を使用することもできます。詳細については、AWS Cloud9 ドキュメントの[AWS Cloud9 の Python チュートリアル](https://docs.aws.amazon.com/cloud9/latest/user-guide/sample-python.html)」と[AWS Cloud9 IDE で実行中のアプリケーションのプレビュー](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html) を参照してください。

  **注意**: AWS Cloud9 は新規顧客には利用できなくなりました。の既存のお客様は、通常どおりサービスを AWS Cloud9 引き続き使用できます。[詳細はこちら](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)
+ Flask のウェブアプリケーションフレームワークについての理解。 へのサインアップの詳細については、 ドキュメント内の[クイックスタート](https://flask.palletsprojects.com/en/1.1.x/quickstart) を参照してください。
+ インストールされ、設定されたPython バージョン 3.6 以降。Python をインストールするには、AWS Elastic Beanstalk ドキュメントの[Python 開発環境のセットアップ](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-development-environment.html) の指示に従います。
+ Elastic Beanstalk コマンドラインインターフェイス (EB CLI) これに関する詳細については、AWS Elastic Beanstalk ドキュメントから[EB CLI をインストール](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install.html) と[EB CLI を設定](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-configuration.html) を参照してください。

**制限事項**
+ このパターンの Flask アプリケーションは、単一のテキスト列を使用し、200 行に制限されている.csv ファイルで動作するように設計されています。アプリケーションコードは他のファイルタイプやデータ量を処理するように調整できます。
+ アプリケーションはデータの保持を考慮せず、アップロードされたユーザーファイルは手動で削除されるまで集計を続けます。アプリケーションを Amazon Simple Storage Service (Amazon S3) と統合して永続的なオブジェクトストレージを作成したり、Amazon DynamoDB などのデータベースを使用してサーバーレスのキーバリューストレージを作成したりできます。
+ このアプリケーションは英語のドキュメントのみを考慮します。ただし、Amazon Comprehend を使用してドキュメントの主要言語を検出することはできます。各アクションに適用される言語の詳細については、Amazon Comprehend ドキュメントの[API リファレンス](https://docs.aws.amazon.com/comprehend/latest/dg/API_Reference.html) を参照してください。
+ 一般的なエラーとその解決策を含むトラブルシューティングリストは、*追加情報*セクションにあります。

## アーキテクチャ
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-architecture"></a>

**アプリケーションのアーキテクチャ**

Flaskは、Pythonでウェブアプリケーションを開発するための軽量フレームワークです。Python の強力なデータ処理と豊富な ウェブ UI を組み合わせるように設計されています。パターンの Flask アプリケーションでは、ユーザーがデータをアップロードし、そのデータを Amazon Comprehend に送信して推論し、結果を視覚化するウェブアプリケーションの構築方法を示しています。  マッピングドキュメントの構造は次のとおりです。
+ `static` — ウェブ UI が適用されるすべての静的ファイル (JavaScript、CSS、画像など) が含まれています。
+ `templates` — アプリケーションのすべての HTML ページが含まれます。
+ `userData` — アップロードされたユーザーデータを格納します。
+ `application.py` — Flask アプリケーションファイル
+ `comprehend_helper.py` — Amazon Comprehend に API 呼び出しを行う関数
+ アプリケーション設定ファイル。
+ `requirements.txt` — アプリケーションに必要な Python の依存関係

`application.py` このスクリプトには、4 つの Flask ルートで構成されるウェブアプリケーションのコア機能が含まれています。以下の図に、これらの Flask ルートを示します。

![\[ウェブアプリケーションのコア機能を構成する 4 つの Flask ルート。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/03d80cf1-ec97-43f7-adb5-2746a9ec70e6/images/9ca6bad1-26e2-4262-98d0-d54c172336bf.png)


 
+ `/` はアプリケーションのルートで、ユーザーを `upload.html` ページ ( `templates` ディレクトリに格納) にガイドします。
+ `/saveFile` は、ユーザーがファイルをアップロードした後に呼び出されるルートです。このルートは、ユーザーがアップロードしたファイルを含む HTML フォームを介して `POST` リクエストを受け取ります。`userData` ファイルがディレクトリに保存され、ルートはユーザーを `/dashboard` ルートにガイドします。
+ `/dashboard` がユーザーを `dashboard.html` ページにがガイドします。このページの HTML、`/data` ルートからデータを読み取る `static/js/core.js` に JavaScript コードを実行して、ページの視覚化を構築します。
+ `/data` は、ダッシュボードに視覚化されるデータを表示する JSON API です。このルートでは、ユーザーが提供したデータを読み取り、`comprehend_helper.py` の関数を使用してユーザーデータを Amazon Comprehend にガイドして、センチメント分析と名前付けのエンティティ認識 (NER) を行います。Amazon Comprehend のレスポンスがフォーマットされ、JSON オブジェクトとして返されます。

デプロイアーキテクチャ

![\[フラスコと Elastic Beanstalk を使用して AI/ML モデルの結果を視覚化するためのアーキテクチャ図。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/03d80cf1-ec97-43f7-adb5-2746a9ec70e6/images/d691bfd2-e2ec-4830-8bff-ffa1e3a95c4a.png)


[設計上の考慮事項](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts.design.html)

 AWS クラウドで Elastic Beanstalk を使用してデプロイされるアプリケーションの設計の考慮事項の詳細については、AWS Elastic Beanstalk ドキュメントを参照してください。

**テクノロジースタック**
+ Amazon Comprehend 
+ (Elastic Beanstalk) 
+ Flask 

**自動化とスケール**

Elastic Beanstalk のデプロイは、ロードバランサーとauto スケーリンググループを使用して自動的にセットアップされます。その他の設定オプションについては、AWS Elastic Beanstalk ドキュメントの[Elastic Beanstalk 環境設定](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html) を参照してください。

## ツール
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-tools"></a>
+ [AWS コマンドラインインターフェイス (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) は、AWS のすべての部分を操作するための一貫したインターフェイスを提供する統合ツールです。
+ [Amazon Comprehend](https://docs.aws.amazon.com/comprehend/latest/dg/comprehend-general.html) では、ドキュメントの内容に関するインサイトの抽出用に自然言語処理 (NLP) を使用しています。
+ [AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html) を使用すると、アプリケーションを実行しているインフラストラクチャについて知識を得なくても、AWS クラウドでアプリケーションのデプロイと管理を簡単に行うことができます。
+ [Elastic Beanstalk CLI (EB CLI)](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3.html) は AWS Elastic Beanstalk のコマンドラインインターフェイスで、ローカルリポジトリの環境の作成、更新、モニタリングを簡素化するインタラクティブコマンドを提供します。
+ [Flask](https://flask.palletsprojects.com/en/2.0.x/) フレームワークは Python を使用してデータ処理と API コールを実行し、Plotly を使用してインタラクティブなウェブビジュアライゼーションを提供します。

**コード**

このパターンのコードは、GitHub 内の「[Flask と AWS Elastic Beanstalk を使用して AI/ML モデルの結果を視覚化](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask)」リポジトリで利用できます。

## エピック
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-epics"></a>

### Flask アプリケーションをセットアップします。
<a name="set-up-the-flask-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| GitHub リポジトリのクローンを作成します。 | 次のコマンドを実行して、GitHub の [Flask と AWS Elastic Beanstalk を使用して、AI/ML モデル結果を可視化](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) を取得します。`git clone git@github.com:aws-samples/aws-comprehend-elasticbeanstalk-for-flask.git`必ず GitHub に SSH キーを設定します。 | 開発者 | 
| Python モジュールをインストールします。 | リポジトリをクローンすると、新しいローカル `aws-comprehend-elasticbeanstalk-for-flask` ディレクトリが作成されます。そのディレクトリでは、`requirements.txt` ファイルには、アプリケーションを実行する Python モジュールとバージョンが含まれています。 と をインストールするには、次のコマンドを使用します。`cd aws-comprehend-elasticbeanstalk-for-flask``pip install -r requirements.txt` | Python 開発 | 
| アプリケーションのローカルテスト | 次のコマンドを実行して、Weka サーバーを作成します。`python application.py`これにより、実行中のサーバーに関する情報が返されます。ブラウザを開いて http://localhost:5000 にアクセスすると、アプリケーションにアクセスできます。アプリケーションを AWS Cloud9 IDE で実行している場合、`application.py` ファイル内の `application.run()` コマンドを次の行に置き換える必要があります。`application.run(host=os.getenv('IP', '0.0.0.0'),port=int(os.getenv('PORT', 8080)))`デプロイする前にこの変更を元に戻す必要があります。 | Python 開発 | 

### アプリケーションを Elastic Beanstalk にデプロイします。
<a name="deploy-the-application-to-elastic-beanstalk"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS Elastic Beanstalk アプリケーション | Elastic Beanstalk アプリケーションとしてプロジェクトを起動するには、アプリケーションのルートディレクトリから以下のコマンドを実行します。`eb init -p python-3.6 comprehend_flask --region us-east-1`[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html)`eb init -i` コマンドを実行する場合、より多くのデプロイ設定オプションが表示されます。 | アーキテクト、開発者 | 
| Elastic Beanstalk 環境をデプロイします。 | プロジェクトルートディレクトリから以下のコマンドを実行すると、アプリケーションが構築されます。`eb create comprehend-flask-env``comprehend-flask-env` は Elastic Beanstalk 環境の名前で、必要に応じて変更できます。含むことができるのは、英文字、数字、およびダッシュのみです。 | アーキテクト、開発者 | 
| Amazon Comprehend を使用するようにデプロイを承認します。 | アプリケーションが正常にデプロイされるかもしれませんが、デプロイに Amazon Comprehend へのアクセス権も提供する必要があります。`ComprehendFullAccess` は、デプロイされたアプリケーションに Amazon Comprehend への API 呼び出しを行うためのアクセス権限を提供する AWS 管理ポリシーです。次のコマンドを実行して、`aws-elasticbeanstalk-ec2-role` に `ComprehendFullAccess` ポリシーを添付します(このロールがデプロイの Amazon Elastic Compute Cloud (Amazon EC2 インスタンスに自動的に作成)。`aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ComprehendFullAccess --role-name aws-elasticbeanstalk-ec2-role``aws-elasticbeanstalk-ec2-role` は、アプリケーションのデプロイ時に作成されます。AWS Identity and Access Management (IAM) ポリシーをアタッチする前に、デプロイプロセスを完了する必要があります。 | 開発者、セキュリティアーキテクト | 
| デプロイしたアプリケーションにアクセスします。 | アプリケーションが正常にデプロイされた後、 `eb open` コマンドを実行して、そのアプリケーションにアクセスできます。`eb status` コマンドを実行して、デプロイに関する詳細を取得することもできます。デプロイ URL は `CNAME` に記載されています。 | アーキテクト、開発者 | 

### (オプション) ML モデルに合わせてアプリケーションをカスタマイズ
<a name="optional-customize-the-application-to-your-ml-model"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Elastic Beanstalk が新しいモデルにアクセスすることを許可します。 | Elastic Beanstalk に新しいモデルエンドポイントに必要なアクセス権限があることを保証します。たとえば、Amazon SageMaker エンドポイントを使用する場合、デプロイにはエンドポイントを呼び出すアクセス権限が必要です。 これに関する詳細については、Amazon SageMaker ドキュメントの[InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html) を参照してください。 | 開発者、セキュリティアーキテクト | 
| ユーザーデータを新しいモデルに送信します。 | このアプリケーションの基になる ML モデルを変更するには、以下のファイルを変更する必要があります。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html) | データサイエンティスト | 
| ダッシュボードのビジュアライゼーションを更新します。 | 通常、新しい ML モデルを組み込むと、新しい結果を反映するようにビジュアライゼーションを更新する必要があります。これらのフラグは、次のファイルで定義されています。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html) | ウェブ開発者 | 

### 更新したアプリケーションをデプロイします。
<a name="optional-deploy-the-updated-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| アプリケーションの要件ファイルを更新します。 | Elastic Beanstalk に変更を送信する前に、アプリケーションのルートディレクトリで以下のコマンドを実行して、新しい Pythonモジュールを反映するように `requirements.txt` ファイルを更新します。`pip freeze > requirements.txt` | Python 開発 | 
| Elastic Beanstalk 環境をセットアップします。 | アプリケーションの変更が Elastic Beanstalk デプロイに確実に反映されるようにするには、アプリケーションのルートディレクトリに移動し、以下のコマンドを実行します。`eb deploy`これにより、アプリケーションのコードの最新バージョンが既存の Elastic Beanstalk デプロイに送信されます。 | システム管理者、アーキテクト | 

## 関連リソース
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-resources"></a>
+ [Amazon API Gatewayと AWS Lambda を使用して Amazon SageMaker モデルエンドポイントを呼び出す](https://aws.amazon.com/blogs/machine-learning/call-an-amazon-sagemaker-model-endpoint-using-amazon-api-gateway-and-aws-lambda/)
+ [Elastic Beanstalk への Flask アプリケーションのデプロイ](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html)
+ [EB CLI コマンドリファレンス](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-cmd-commands.html)
+ [Python 開発環境をセットアップします](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-development-environment.html)

## 追加情報
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-additional"></a>

**トラブルシューティングのリスト**

一般的な原因とその解決策を以下に示します。

***エラー 1* **

```
Unable to assume role "arn:aws:iam::xxxxxxxxxx:role/aws-elasticbeanstalk-ec2-role". Verify that the role exists and is configured correctly.
```

**解決策**： `eb create` を実行する時、このエラーが発生した場合、Elastic Beanstalk コンソールでサンプルアプリケーションを作成して、デフォルトのインスタンスプロファイルを作成します。詳細については、AWS Elastic Beanstalk ドキュメントの[Elastic Beanstalk 環境を作成](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.environments.html) を参照してください。

***エラー 2***

```
Your WSGIPath refers to a file that does not exist.
```

**解決策：**このエラーがデプロイログで発生されます。Elastic Beanstalk が `application.py` という名前のFlask コードを想定しているためです。別の名前を選択した場合は、次のコードサンプルに示すように WSGIPath `eb config` を実行して編集します。

```
aws:elasticbeanstalk:container:python:
     NumProcesses: '1'
     NumThreads: '15'
     StaticFiles: /static/=static/
     WSGIPath: application.py
```

自分のファイル名で `application.py` を置き換えます。

 Gunicorn と Procfile を利用することもできます。このアプローチの詳細については、AWS Elastic Beanstalk ドキュメントの[プロファイルファイルによる WSGI サーバーの設定](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-configuration-procfile.html) を参照してください。

***エラー 3***

```
Target WSGI script '/opt/python/current/app/application.py' does not contain WSGI application 'application'.
```

**解決策：**Elastic Beanstalk では、Flask アプリケーションを表す変数に `application` という名前が付けられていることを想定しています。`application.py` ファイルが変数名として `application` を使用していることを確認します。

```
application = Flask(__name__)
```

***エラー 4***

```
The EB CLI cannot find your SSH key file for keyname
```

**解決策：**EB CLI を使用して、使用するキーペアを指定するか、デプロイの EC2 インスタンス用のキーペアを作成します。エラーを解決するには、`eb init -i` を実行します。一つのオプションでは、下記のように提示されます。

```
Do you want to set up SSH for your instances?
```

`Y` と回答して、キーペアを作成するか、既存のキーペアを指定します。

***エラー 5***

*コードを更新して再デプロイしましたが、デプロイに変更が反映されていません。*

**解決策：**デプロイに Git リポジトリを使用している場合、再デプロイする前に変更を追加してコミットする必要があります。

***エラー 6***

*AWS Cloud9 IDE から Flask アプリケーションをプレビューしていて、エラーが発生しました。*

**解決策：**詳細については、AWS Cloud9 ドキュメントの「[AWS Cloud9 IDE での実行中のアプリケーションのプレビュー](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html)」 を参照してください。

 

 

**自然言語処理に Amazon Comprehend を使用**

Amazon Comprehend を使用することを選択すると、リアルタイム分析または非同期バッチジョブを実行して、個々のテキストドキュメント内のカスタムエンティティを検出できます。Amazon Comprehend では、エンドポイントを作成することでリアルタイムで使用できるカスタムエンティティ認識モデルとテキスト分類モデルをトレーニングすることもできます。

このパターンでは、非同期バッチジョブを使用して、複数のドキュメントを含む入力ファイルからセンチメントとエンティティを検出します。このパターンで提供されるサンプルアプリケーションは、ユーザーが 1 つの列と 1 行に 1 つのテキストドキュメントを含む.csv ファイルをアップロードできるように設計されています。GitHub の[Flask と AWS Elastic Beanstalk を使用して、Visualize AI/ML モデルの結果を視覚化](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) リポジトリの `comprehend_helper.py` ファイルが、入力ファイルを読み取り、その入力を Amazon Comprehend に送信して処理します。

*BatchDetectEntities*

Amazon Comprehend は、一連のドキュメントのテキストに指定されたエンティティがないか検査し、検出されたエンティティ、場所、[エンティティのタイプ](https://docs.aws.amazon.com/comprehend/latest/dg/how-entities.html)、および Amazon Comprehend の信頼度を示すスコアを返します。1 つの API 呼び出しで送信できるドキュメントは最大 25 個で、各ドキュメントのサイズは 5,000 バイト未満です。結果をフィルタリングして、ユースケースに基づいて特定のエンティティのみを表示できます。たとえば、`‘quantity’` エンティティタイプをスキップして、検出されたエンティティのしきい値スコア (0.75 など) を設定できます。しきい値を選択する前に、特定のユースケースの結果を調べることを推薦します。これに関する詳細については、Amazon Comprehend ドキュメントの[BatchDetectEntities](https://docs.aws.amazon.com/comprehend/latest/dg/API_BatchDetectEntities.html) を参照してください。

*BatchDetectSentiment*

Amazon Comprehend は、受信した複数のドキュメントを検査し、各ドキュメントの一般的なセンチメント(`POSITIVE`、`NEUTRAL`、`MIXED`、または `NEGATIVE`)を返します。1 つの API 呼び出しで送信できるドキュメントは最大 25 個で、各ドキュメントのサイズは 5,000 バイト未満です。センチメントの分析は簡単で、スコアが最も高いセンチメントを選択して最終結果に表示します。これに関する詳細については、Amazon Comprehend ドキュメントの[BatchDetectSentiment](https://docs.aws.amazon.com/comprehend/latest/dg/API_BatchDetectSentiment.html) を参照してください。

 

 

**フラスコの設定処理**

Flask サーバーは一連の[設定変数](https://flask.palletsprojects.com/en/1.1.x/config/) を使用して、サーバーの実行方法を制御します。これらの変数には、デバッグ出力、セッショントークン、その他のアプリケーション設定を含めることができます。アプリケーションの実行中にアクセスできるカスタム変数を定義することもできます。設定変数を設定する方法は複数あります。

このパターンでは、設定が `config.py` で定義され、`application.py` の内部で継承されます。
+ 
**注記**  
 `config.py` には、アプリケーションの起動時に設定される設定変数が含まれます。このアプリケーションでは、サーバーを[デバッグモード](https://flask.palletsprojects.com/en/1.1.x/config/#DEBUG) で実行するようにアプリケーションに指示する `DEBUG` 変数が定義されています。実稼働環境でアプリケーションを実行する場合、デバッグモードを使用しません。`UPLOAD_FOLDER` は、アプリケーションで後から参照できるように定義されるカスタム変数で、アップロードされたユーザーデータの保存場所を通知します。
+ `application.py` はFlask アプリケーションを初期化し、`config.py` で定義されている設定を継承します。これは以下のコードによって実行されます。

```
application = Flask(__name__)
application.config.from_pyfile('config.py')
```