

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

# Flask と を使用して AI/ML モデルの結果を視覚化する AWS Elastic Beanstalk
<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/stable/) と [Plotly](https://plotly.com/) を使用して、 Amazon Comprehend をカスタムウェブアプリケーションと統合し、ユーザーが提供したデータからセンチメントとエンティティを視覚化します。このパターンでは、 を使用してアプリケーションをデプロイする手順も示します AWS Elastic Beanstalk。[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 Command Line Interface (AWS CLI) をローカルマシンにインストールして設定します。詳細については、 AWS CLI ドキュメントの[「設定の基本](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)」を参照してください。 AWS Cloud9 統合開発環境 (IDE) を使用することもできます。詳細については、 AWS Cloud9 ドキュメントの「 [の Python チュートリアル AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/sample-python.html)」および[「IDE AWS Cloud9 で実行中のアプリケーションのプレビュー](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/stable/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) 詳細については、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)

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

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

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

Elastic Beanstalk のデプロイは、ロードバランサーとauto スケーリンググループを使用して自動的にセットアップされます。その他の設定オプションについては、[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 Command Line Interface (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/stable/) フレームワークは Python を使用してデータ処理と API コールを実行し、Plotly を使用してインタラクティブなウェブビジュアライゼーションを提供します。

**コードリポジトリ**

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

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


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS Elastic Beanstalk アプリケーション | Elastic Beanstalk アプリケーションとしてプロジェクトを起動するには、アプリケーションのルートディレクトリから以下のコマンドを実行します。<br />`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)<br />`eb init -i` コマンドを実行する場合、より多くのデプロイ設定オプションが表示されます。 | アーキテクト、開発者 | 
| Elastic Beanstalk 環境をデプロイします。 | プロジェクトルートディレクトリから以下のコマンドを実行すると、アプリケーションが構築されます。<br />`eb create comprehend-flask-env``comprehend-flask-env` は Elastic Beanstalk 環境の名前で、必要に応じて変更できます。含むことができるのは、英文字、数字、およびダッシュのみです。 | アーキテクト、開発者 | 
| Amazon Comprehend を使用するようにデプロイを承認します。 | アプリケーションは正常にデプロイされている可能性がありますが、Amazon Comprehend へのアクセスをデプロイに提供する必要があります。 `ComprehendFullAccess`は、デプロイされたアプリケーションに Amazon Comprehend への API コールを行うアクセス許可を付与する AWS マネージドポリシーです。<br />次のコマンドを実行して、`aws-elasticbeanstalk-ec2-role` に `ComprehendFullAccess` ポリシーを添付します(このロールがデプロイの Amazon Elastic Compute Cloud (Amazon EC2 インスタンスに自動的に作成)。<br />`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` コマンドを実行して、そのアプリケーションにアクセスできます。<br />`eb status` コマンドを実行して、デプロイに関する詳細を取得することもできます。デプロイ URL は `CNAME` に記載されています。 | アーキテクト、開発者 | 

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


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Elastic Beanstalk が新しいモデルにアクセスすることを許可します。 | Elastic Beanstalk に新しいモデルエンドポイントに必要なアクセス権限があることを保証します。例えば、Amazon SageMaker AI エンドポイントを使用する場合、デプロイにはエンドポイントを呼び出すアクセス許可が必要です。 <br />詳細については、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` ファイルを更新します。<br />`pip freeze > requirements.txt` | Python 開発 | 
| Elastic Beanstalk 環境をセットアップします。 | アプリケーションの変更が Elastic Beanstalk デプロイに確実に反映されるようにするには、アプリケーションのルートディレクトリに移動し、以下のコマンドを実行します。<br />`eb deploy`<br />これにより、アプリケーションのコードの最新バージョンが既存の Elastic Beanstalk デプロイに送信されます。 | システム管理者、アーキテクト | 

## トラブルシューティング
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| `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)」を参照してください。 | 
| `Your WSGIPath refers to a file that does not exist.` | このエラーは、Elastic Beanstalk が Flask コードの名前を と想定しているため、デプロイログで発生します`application.py`。別の名前を選択した場合は、次のコードサンプルに示すように WSGIPath `eb config` を実行して編集します。<pre>aws:elasticbeanstalk:container:python:<br />     NumProcesses: '1'<br />     NumThreads: '15'<br />     StaticFiles: /static/=static/<br />     WSGIPath: application.py</pre><br />自分のファイル名で `application.py` を置き換えます。<br /> Gunicorn と Procfile を利用することもできます。このアプローチの詳細については、 AWS Elastic Beanstalk ドキュメントの[「Procfile を使用した WSGI サーバーの設定](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-configuration-procfile.html)」を参照してください。 | 
| `Target WSGI script '/opt/python/current/app/application.py' does not contain WSGI application 'application'.` | Elastic Beanstalk では、Flask アプリケーションを表す変数に という名前が付けられることを想定しています`application`。`application.py` ファイルが変数名として `application` を使用していることを確認します。<pre>application = Flask(__name__)</pre> | 
| `The EB CLI cannot find your SSH key file for keyname` | EB CLI を使用して、使用するキーペアを指定するか、デプロイの Amazon EC2 インスタンスのキーペアを作成します。エラーを解決するには、`eb init -i` を実行します。一つのオプションでは、下記のように提示されます。<pre>Do you want to set up SSH for your instances?</pre><br />`Y` と回答して、キーペアを作成するか、既存のキーペアを指定します。 | 
| コードを更新して再デプロイしましたが、デプロイには変更が反映されていません。 | デプロイで Git リポジトリを使用している場合は、再デプロイする前に必ず変更を追加してコミットしてください。 | 
| IDE から Flask AWS Cloud9 アプリケーションをプレビューしていて、エラーが発生します。 | 詳細については、 AWS Cloud9 ドキュメント[の IDE AWS Cloud9 で実行中のアプリケーションのプレビュー](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html)を参照してください。 | 

## 関連リソース
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-resources"></a>
+ [Amazon API Gateway と を使用して Amazon SageMaker AI モデルエンドポイントを呼び出す Amazon API Gateway AWS Lambda](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>

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

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

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

*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/stable/config/) を使用して、サーバーの実行方法を制御します。これらの変数には、デバッグ出力、セッショントークン、その他のアプリケーション設定を含めることができます。アプリケーションの実行中にアクセスできるカスタム変数を定義することもできます。設定変数を設定する方法は複数あります。

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

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