Python アプリケーションのプロジェクト構造
実際のアプリケーションで作業する場合、コードベースのサイズが大幅に増加する可能性があります。一般に、モノリシックプログラムをプログラミングしたり、すべてのアプリケーションコードを 1つのファイルにまとめたりすることはお勧めしません。同じ背後にある理由は、モノリシックプログラムがより予期しないバグを作成する可能性があるためです。プログラムのサイズが大きくなり、コラボレーションが促進されなくなると、管理できなくなり、読みにくくなります。
このような問題があるため、アプリケーションを、他のサービスから独立して指定されたタスクを実行する小さなセグメントまたはマイクロサービスに分割することをお勧めします。このような設定は、管理が簡単で優れているだけでなく、読みやすさと生産性も向上させます。この記事では、管理、可読性、生産性を向上させるために、Python アプリケーションを一般的にどのように構成する必要があるかについて説明します。
Python アプリケーションのプロジェクト構造
アイデアは、プログラムをより小さなコンポーネントまたはマイクロサービスに分割することです。これらは基本的に、割り当てられたタスクのみを実行する Python ファイルを含むいくつかのディレクトリです。これらは通常、他のサービスから独立したスタンドアロンファイルです。このように、サービスの削除または追加は簡単です。
一部のアプリケーションは単純であり、多くのテストと管理を必要としないため、言及されているディレクトリまたはセグメントの一部は、グローバルにすべてのアプリケーションに適用される場合とされない場合があることに注意してください。同時に、かなり長くて堅牢なものもあり、絶え間ない注意と管理が必要です。
これらのディレクトリとファイルは、空の親プロジェクトフォルダの下に作成する必要があります。
LICENSE
:このファイルには、アプリケーションの使用に関するガイドラインおよびアプリケーションの配布の詳細に関する法的情報が含まれています。README.md
:このマークダウンファイルには、アプリケーションの簡単な説明、そのファイル、アプリケーションをセットアップして実行するためのガイドライン、アプリケーションがオープンソースである場合の貢献のためのガイドラインなどが含まれています。setup.py
またはrun.py
:このファイルは、Python アプリケーションのエントリポイントです。これは、同様のプロジェクト構造に従って Python アプリケーションを実行する場合は常に、このファイルを単純に実行する必要があることを意味します。env
またはenvironment
:これは、アプリケーションの Python 仮想環境です。requirements.txt
:このテキストファイルには、Python アプリケーションの依存関係に関する情報が含まれています。/<sub-application>
:このフォルダーには、スタンドアロンのサブアプリケーションまたはマイクロサービスが含まれています。これらのフォルダーには、Python モジュールにする__init__.py
が必要です。このようなフォルダーは、Django アプリケーションと Flask アプリケーションで、それぞれアプリケーションとブループリントの形式で見つけることができます。これらのミニアプリケーションまたはマイクロサービスは他のそのようなアプリケーションから独立しているため、独自の/tests
、/static
、/templates
フォルダー、models.py
、およびforms.py
ファイルを持つことができます。。/docs
:このフォルダーには、Python アプリケーションのドキュメントが含まれています。エンドユーザーが問題なくアプリケーションを理解できるように、ドキュメントは一般的に堅牢で包括的なものであることが期待されています。/tests
:このフォルダーには、アプリケーションのすべてのテストが含まれています。テストは、アプリケーションを本番環境にプッシュする前の重要なステップであるため、専用のディレクトリが必要です。アプリケーションや機能が増えると、テストの数が大幅に増える可能性があります。/static
:このフォルダーには、画像、ビデオ、ロゴ、アイコンなど、アプリケーションのすべての静的ファイルが含まれています。プロジェクトが Web アプリケーションの場合、static
フォルダーには CSS ファイルと JavaScript ファイルも含まれます。このフォルダーは、Django および Flask アプリケーションで見つけることができます。/templates
:このフォルダーには、Python アプリケーションで使用されるすべての HTML テンプレートが含まれています。Web には HTML が必要なため、通常、このフォルダーは PythonWeb アプリケーションに関連しています。この場合も、このフォルダーは Django および Flask アプリケーションで見つけることができます。models.py
:このファイルには、データベースモデルの Python コードが含まれています。ORM またはオブジェクトリレーショナルマッピングを使用する場合、データベースモデルを表す Python クラスはこのファイル内で定義されます。
12.database.db
:このファイルは、Python アプリケーションが使用するデータベースです。このファイルは、アプリケーションが SQLite3 などの単純なファイルベースのデータベースを使用する場合にのみ必要または作成されます。
例
Web ベースの個人ブログ Web サイトで作業しているとします。その場合、そのようなアプリケーションのプロジェクト構造は次のようになります。
blog/
|-- LISCENSE
|-- README.md
|-- run.py
|-- models.py
|-- database.d
|-- environment/
|-- * files *
|-- requirements.txt
|-- users/
|-- __init__.py
|-- forms.py
|-- routes.py
|-- * files *
|-- blogs/
|-- __init__.py
|-- forms.py
|-- routes.py
|-- * files *
|-- docs/
|-- * files *
|-- tests/
|-- users/
|-- * files *
|-- blogs
|-- * files *
|-- static/
|-- users
|-- * files *
|-- blogs
|-- * files *
|-- templates/
|-- users
|-- * files *
|-- blogs
|-- * files *