フォルダー構造の検討⚓︎
本章では、 mono-repo の場合のフォルダー構造について解説します。
第 1 階層⚓︎
リポジトリ直下に、サブシステムを格納するフォルダーを配置します。 サブシステムは、 Web アプリケーションやコンソールアプリケーションなど、複数のアプリケーションで構成される業務的な分割の単位を言います。 小さなシステムの場合は、サブシステムが 1 つしかないこともあります。
サブシステムが複数個存在する大きなシステムでは、サブシステム間で共有するシステム共通機能を配置するフォルダーを作成します。
システム共通機能の配置場所
AlesInfiny Maris OSS Edition の提供するサンプルアプリケーションでは、サブシステムのフォルダー内にシステム共通機能を配置しています。 しかし、サブシステムが 1 つしかない場合も、将来的なシステム規模の拡大に備えて、システム共通機能の配置場所をあらかじめ準備しておいてもかまいません。
第 1 階層には、サブシステム間で共有する設定ファイルや、 Readme.md ファイルを配置します。 サブシステム間で共有する設定ファイルには、 「.gitignore」 ファイルや 「LICENSE」 ファイルなどがあります。 Readme.md ファイルには、このシステムの全体的な説明を記載した主に開発者向けの情報を記載しましょう。 プロジェクトの最初に開発者が把握しておくべき情報をまとめて記載することを推奨します。 多くの場合、プロジェクトキックオフで説明する内容や、開発環境の構築方法など、開発を始めるまでに必要な情報を記載します。
第 2 階層⚓︎
サブシステムのフォルダー内は、 JavaScript などのフロントエンドアプリケーションを配置するためのフォルダーと、 .NET のバックエンドアプリケーションを配置するフォルダーで分割しましょう。 Vue.js などのフロントエンドアプリケーションの開発は、バックエンドアプリケーションと接続しない状態で、デザインや画面機能の実装を進めることがあります。 またフロントエンドアプリケーションとバックエンドアプリケーションで、開発者が分かれることもよくあります。 お互いの開発が影響を受けにくいように、フォルダーを分割しておくことを推奨します。
しかし、フロントエンドとバックエンドのアプリケーション開発を同じメンバーが実施する場合、このような分割は不要です。 また SSR や Blazor 、 .NET MAUI など、フロントエンドアプリケーションを .NET の技術スタックで構築する場合も同様に分割不要です。
システム共通機能を配置するフォルダーには、システム共通機能のソリューションを配置しましょう。 詳細は「アプリケーション開発手順 .NET 編」を参照してください。