コンテンツにスキップ
Docs Try Aspire
Docs Try

Aspire とは何ですか?

Aspire は、分散アプリケーション向けのコードファーストなオーケストレーションおよびオブザーバビリティ レイヤーです。

Aspire を使うと、サービス、フロントエンド、データベース、キュー、キャッシュ、コンテナー、クラウド依存関係を、ひとつのアプリケーション システムとしてモデル化できます。本番環境ではそれらは一体となって動作しますが、開発時には個別に起動し、手作業で構成し、複数のターミナルやダッシュボードをまたいでデバッグしなければならないことがよくあります。Aspire は、そのシステムを定義する場所、起動するコマンド、観測するためのツールチェーンをひとつにまとめます。

アーキテクチャは AppHost で記述し、aspire run でローカル実行し、Aspire Dashboard で状態を確認し、同じアプリ モデルを デプロイ に使えます。Aspire は現在、C#TypeScript を AppHost の記述言語としてサポートしつつ、C#、JavaScript、Python、Go、Java、Rust、PowerShell などで書かれたワークロードをオーケストレーションできます。AI コーディング ツールも、Aspire CLI、スキル ファイル、MCP サーバーを通じて、その同じモデルを利用します。

Aspire は何であり、何ではないか

Section titled “Aspire は何であり、何ではないか”
  • Aspire は、分散アプリケーションを一か所でモデル化し、実行し、観測するためのプロダクト レイヤーです。
  • Aspire は マルチ言語です。C# または TypeScript の AppHost を選び、多様な言語のワークロードを接続できます。
  • Aspire は アプリケーション フレームワークの置き換えではありません。
  • Aspire は クラウド プロバイダーでも本番ランタイムでもありません。
  • Aspire は .NET 専用ソリューションのためだけのものではありません。Languages & runtimes を参照してください。

現代のアプリケーション開発では、複数のリソース、ランタイム、ワークフローを協調させる必要があります。Aspire を使わない場合、次のような課題が生じます。

問題Aspire なしAspire あり
サービスの起動5 つのターミナルを開き、5 種類のコマンドを実行し、正しい順序で起動することを祈るaspire run を実行するだけで、すべてが自動起動します。AppHost の概要を参照してください。
接続文字列いたる所に localhost:5432 をハードコードし、本番デプロイで壊れるサービス ディスカバリが処理するため、同じコードがローカルでも本番でも動作します。サービス ディスカバリを参照してください。
「自分の環境では動く」問題メンバーごとにポートも設定も異なるひとつの AppHost 定義を全員が同じように実行します。最初のアプリ チュートリアルを参照してください。
デバッグ各サービスに個別にデバッガーをアタッチする F5 F5 F5 ひとつでスタック全体をデバッグできます。
ログの所在5 つのターミナルを見比べる必要があるAspire Dashboard にすべてのログが集約されます。Dashboard overviewを参照してください。
データベースの追加ローカルにインストールし、接続を設定し、バージョン差異がないことを祈るbuilder.AddPostgres("db") で、コンテナー化され、バージョン管理された一貫した構成になります。Integrationsを参照してください。
複数言語での開発C#、Node.js、Python などごとに別々のスクリプトや慣習をつなぎ合わせる複数言語のスタックを含む同じ分散アプリを、ひとつの AppHost でモデル化できます。Languages & runtimesを参照してください。
AI コーディング エージェントの利用エージェントが環境の断片しか見えず、実行時の状態を推測するしかないaspire agent init により、アプリ モデル、ログ、トレース、リソースへ構造化されたアクセスを与えられます。Use AI coding agentsを参照してください。

Aspire を使わない場合、起動手順は次のようになりがちです。

  1. データベース コンテナーを起動する

    Terminal window
    docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=secret postgres:15
  2. C# API サービスを起動する

    Terminal window
    cd api && dotnet run
  3. Python ワーカーを起動する

    Terminal window
    cd worker && source .venv/bin/activate && python main.py
  4. JavaScript フロントエンドを起動する

    Terminal window
    cd frontend && npm run dev
  5. すべてが接続できるか手動で確認する

    面倒で壊れやすい作業が続きます。

Aspire を使う場合 は、次のコマンドだけです。

Terminal window
aspire run

そして AppHost が、複数言語スタックを含めたシステム全体をコードで定義します。

AppHost.cs
var builder = DistributedApplication.CreateBuilder(args);
var db = builder.AddPostgres("db");
var api = builder.AddProject<Projects.Api>("api")
.WithReference(db);
var worker = builder.AddPythonApp("worker", "../worker", "main.py")
.WithReference(db);
builder.AddNpmApp("frontend", "../frontend")
.WithReference(api);
builder.Build().Run();

そのアプリ モデルを AI コーディング ツールにも使わせたい場合は、Use AI coding agentsを参照してください。

  • コードで構成できる: スクリプトや設定ファイルにアーキテクチャを分散させる代わりに、AppHost でリソース、参照、依存関係を定義できます。
  • システム全体をデバッグできる: ひとつのコマンドでアプリを起動し、ログやトレースを一箇所で確認し、Aspire Dashboard でスタック全体をデバッグできます。
  • 同じモデルをデプロイに使える: ローカル開発でも、Kubernetes、クラウド、独自インフラへのデプロイでも、同じアーキテクチャ定義を使えます。
  • 複数言語で使える: C#、Node.js、Python など、サポートされている言語が異なっても同じ分散アプリ モデルを使えます。
  • AI エージェントを活用できる: Aspire CLI のワークフロー、スキル ファイル、MCP を通じて、コーディング エージェントに構造化されたアプリ情報を渡せます。
  • 実行対象を拡張できる: Aspire の統合機能を使って、データベース、キャッシュ、メッセージング、クラウド サービスを追加できます。

Aspire は、コードファーストのアプローチ でアプリケーションのアーキテクチャを定義します。複雑な設定ファイルを管理する代わりに、サービス、データベース、フロントエンド、依存関係をコードで直接記述します。

その AppHost は、分散アプリがどのように構成されるかを表すモデルになります。

  • リソース: プロジェクト、実行可能ファイル、コンテナー、データベース、キャッシュ、クラウド サービスを追加します。
  • 関係: 参照、依存関係の順序、サービス ディスカバリの接続を表現します。
  • 実行: ローカル起動、環境設定、ヘルス チェック、診断を Aspire にオーケストレーションさせます。
  • 運用: CLI、Dashboard、AI エージェント用ツールから同じモデルを利用します。

AppHost の言語が変わっても、Aspire はそのモデルを一貫して保ちます。TypeScript AppHost でも、ゲスト/ホスト アーキテクチャを通じて、C# AppHost と同じオーケストレーション エンジン、統合機能、サービス ディスカバリ、診断を利用できます。

このアプローチには、次の利点があります。

  • 型安全性: 構成ミスをコンパイル時に検出できます。
  • 入力補完のサポート: アーキテクチャ定義中にコード補完やドキュメントを利用できます。
  • バージョン管理: インフラ定義をコードと一緒に管理できます。
  • リファクタリング: 使い慣れた開発ツールでアプリケーション アーキテクチャを再構成できます。
  • 共通ツールチェーン: 開発者と AI エージェントが同じリソース、ログ、トレースを確認できます。

Aspire がアプリケーションをどのように支えているかは、AppHostをご覧ください。

Aspire は、開発環境と本番環境のギャップを埋めます。

  • 開発環境: 依存関係管理、サービス ディスカバリ、集約された診断を備えた状態で、サービスをローカル実行できます。
  • 本番環境: 同じアーキテクチャ定義を、クラウド プラットフォーム、Kubernetes、自社環境へデプロイできます。
  • 一貫性: ローカルのトポロジを、実際にデプロイしたい構成に合わせ続けられます。
  • 自動化: 人間の開発者も AI エージェントも、同じ単一の情報源から作業できます。

Aspire は既存のデプロイ ワークフローを置き換えるものではありません。環境をまたいで一貫した方法でアプリケーション アーキテクチャを定義し管理できるようにすることで、それらを強化します。

詳しくは、パイプラインとアプリのトポロジーをご覧ください。