# リソースの理解

Aspire を使えば、フロントエンド、API、データベースなど、アプリケーションに必要なすべてを `AppHost` を通じて簡単に定義できます。リソースをコードで記述するだけで、接続や連携は Aspire が自動的に処理してくれます。

## リソースの種類

Rリソースには、次のようなものがあります:

- **AI サービス**: 大規模言語モデル（LLM）、AI エンドポイント、Cognitive Services
- **キャッシュ**: Redis、インメモリ キャッシュ、分散キャッシュ ソリューション
- **コンテナー**: データベース、メッセージ ブローカー、その他 Docker コンテナー
- **データベース**: SQL Server、PostgreSQL、MySQL、MongoDB、その他データ ストア
- **実行可能ファイル**: コンソール アプリケーション、スクリプト、バックグラウンド サービス
- **フレームワーク**: さまざまなフレームワークで構築された Web アプリ、API、マイクロサービス
- **メッセージング サービス**: Service Bus、RabbitMQ、Kafka、その他メッセージング システム
- **プロジェクト**: C# プロジェクト、Node.js アプリケーション、Python サービス、その他
- **ストレージ**: Blob Storage、ファイル システム、クラウド ストレージ サービス

<IconAside type="tip" icon="puzzle" title="連携機能を探す">
  リソースは _ホスティング連携_
  としてモデル化されており、これは外部サービスとのやり取り方法を定義する再利用可能なコンポーネントです。
  Aspire には豊富な[一般的なサービス向けの
  組み込み連携](/ja/integrations/gallery/?search=hosting)
  が用意されており、要件に応じてカスタム連携を簡単に作成することもできます。
</IconAside>

## リソースの依存関係

リソースは、AppHost で定義する **明示的な依存関係** を通じて連携します。これらの依存関係をモデル化すると、接続の設定、起動順序、接続管理は Aspire が自動的に処理してくれるため、インフラ管理ではなくアプリケーション開発に集中できます。

たとえば、API サービスがデータベースに依存し、待機戦略を設定している場合、Aspire は接続文字列を自動的に注入し、API サービスより先にデータベースが起動することを保証します。

1. まずデータベースを起動します。
1. 正常な状態（healthy）になるまで待機します。
1. 接続文字列を API サービスに注入します。
1. API サービスを起動します。

<LearnMore>
  どのように [リソース階層](/ja/architecture/resource-hierarchies/)
  をモデル化し、
  複雑なアプリケーション構造を表現するかについて、詳しくは[こちら](/ja/architecture/resource-hierarchies/)をご覧ください。
</LearnMore>

## リソースの構成

リソースは、**環境変数**（環境ごとに変化する値）、依存サービスへ自動的に流れる **接続文字列**、ポートやボリュームなどを制御する明示的な **リソース パラメーター**、そして単なるプロセス状態を超えて準備完了を判断できる カスタム **正常性チェック** を組み合わせて構成します。

## カスタム リソース

内部的には、すべての連携は **コンテナー** または **実行可能ファイル** のいずれかとして扱われます。つまり、_任意_ のコンテナー イメージ、コードベース、スクリプト、クラウド リソースを AppHost に追加できます。再利用可能な Aspire 連携の作成は、再利用可能な UI コンポーネントを作るのと同じ感覚で行えます。必要に応じてシンプルにも高度にも設計でき、完全に共有可能です。

## リソースのライフサイクル

Aspire は、**ローカル開発**におけるリソースのライフサイクル全体を管理します:

1. **検出**: リソースが検出され、依存関係が解析されます。
1. **起動**: 関係性を考慮し、依存関係の順序に従ってリソースが起動されます。
1. **正常性監視**: リソースの状態や準備完了状況が継続的に監視されます。
1. **シャットダウン**: アプリケーション終了時に、リソースが正常に停止されます。

<LearnMore>
  [組み込みリソースとライフサイクル](/ja/architecture/resource-model/#built-in-resources-and-lifecycle)を確認して、どのように連携してアプリケーションを支えているのかをご覧ください。
</LearnMore>