Angular ディレクトリ構成: MVVM とコンポーネント分割の最適化

Angular ディレクトリ構成: MVVM とコンポーネント分割の最適化

岩佐 孝浩
岩佐 孝浩
4 min read
Angular

はじめに

直近の Angular プロジェクトで、MVVM (Model - View - ViewModel) アーキテクチャを採用し、コンテナ / プレゼンテーショナル パターンを使用してコンポーネントを整理しました。この記事では、メンテナンス性と可読性を向上させるスケーラブルなディレクトリ構成を紹介します。

前提条件

ディレクトリ構成について深く掘り下げる前に、Angular coding style guide を確認してください。この投稿では、ディレクトリ構成やコーディングのベストプラクティスを含む、さまざまな Angular 開発トピックについて包括的なアドバイスを提供しています。

ディレクトリ構成

以下は、Angular プロジェクトに実装したディレクトリ構成です。corefeaturesshared の 3 つの主要なディレクトリに分割されています。

Directory Structure

src/
|-- app/
|   |-- core/
|   |   |-- constants/
|   |   |-- decorators/
|   |   |-- guards/
|   |   |-- interceptors/
|   |   |-- interfaces/
|   |   |   `-- api/
|   |   |-- models/
|   |   |-- resolvers/
|   |   |-- services/
|   |   |   `-- api/
|   |   `-- validators/
|   |-- features/
|   |   |-- auth/
|   |   |   |-- password-reset/
|   |   |   |-- sign-in/
|   |   |   |-- sign-up/
|   |   |   |-- verify/
|   |   |   |-- auth.module.ts
|   |   |   |-- auth.service.ts
|   |   |   `-- auth-routing.module.ts
|   |   `-- .../
|   |-- shared/
|   |   |-- components/
|   |   |-- directives/
|   |   |   |-- attribute/
|   |   |   `-- structural/
|   |   |-- forms/
|   |   |   |-- input/
|   |   |   |-- select/
|   |   |   `-- .../
|   |   |-- pipes/
|   |   `-- services/
|   |-- app.component.ts
|   |-- app.module.ts
|   `-- app-routing.module.ts
|-- assets/
|-- environments/
|-- styles/
|-- tests/
|-- theme/
`-- global.scss

ディレクトリの詳細

  1. core
    アプリケーション全体で使用される機能を含みます。たとえば、定数、ガード、インターセプター、モデル、サービスなどです。これらは features ディレクトリからアクセス可能ですが、featuresshared コンポーネントを参照してはなりません。

  2. features
    機能モジュール がここに格納されます。これらのモジュールは core または shared を参照することができますが、アプリケーションの他の部分とは分離してモジュール性を維持する必要があります。

  3. shared
    再利用可能なパーツ (例: directives, forms, pipes, services) を格納します。これらは features 内で利用可能ですが、features を参照してはいけません。

サブディレクトリの使用理由

Angular coding style guide は、ディレクトリをフラットに保つことを推奨していますが、7 つ以上のファイルを超える場合にはサブディレクトリを検討すべきです。これにより、大規模なプロジェクトでの可読性と構造化が向上します。

Consider creating sub-folders when a folder reaches seven or more files. – Angular coding style guide

まとめ

適切に設計されたディレクトリ構成は、スケーラブルな Angular アプリケーションを構築する上で不可欠です。MVVM アーキテクチャを採用し、コンテナ / プレゼンテーショナルパターンを活用することで、メンテナンス性とチーム開発の効率を向上させることができます。

Happy Coding! 🚀

岩佐 孝浩

岩佐 孝浩

Software Developer at KAKEHASHI Inc.
AWS を活用したクラウドネイティブ・アプリケーションの要件定義・設計・開発に従事。 株式会社カケハシで、処方箋データ収集の新たな基盤の構築に携わっています。 Japan AWS Top Engineers 2020-2023