diff --git a/src/frontend/src/content/docs/ja/aspireconf/index.mdx b/src/frontend/src/content/docs/ja/aspireconf/index.mdx index 1923fda26..35d68e017 100644 --- a/src/frontend/src/content/docs/ja/aspireconf/index.mdx +++ b/src/frontend/src/content/docs/ja/aspireconf/index.mdx @@ -4,10 +4,11 @@ giscus: false head: - tag: title content: Aspire Conf — 3月23日 9:00(PT) -description: 3月23日に開催される Aspire Conf に向けて、ぜひ予定を確保のうえご参加ください。無料のライブ配信イベントです。Aspire を体験し、分散アプリやエージェントの構築・デプロイ方法をどのように変革できるのかをご覧ください。 +description: 3月23日に開催される Aspire Conf に向けて、ぜひ予定を確保のうえご参加ください。無料のライブ配信イベントです。Aspire を体験し、分散アプリやエージェントの構築・デプロイ方法をどのように変革できるのかをご覧ください。 template: splash editUrl: false next: false +prev: false hero: tagline: Aspire Conf
3月 23日, 9:00 PT

日程を確保のうえ、無料のライブ配信イベントにぜひご参加ください。

Aspire を体験し、分散アプリやエージェントの構築・デプロイ方法をどのように変革できるのかをご覧ください。

image: @@ -21,12 +22,21 @@ hero: data-track-action-type: 'CL' data-track-behavior: 'DOWNLOAD' data-bi-bhvr: '40' - - text: YouTube でご覧ください - link: https://www.youtube.com/watch?v=6j61K9Sna2M + - text: ライブでご覧ください + link: '#ライブ配信を見る' variant: secondary --- -import { CardGrid, LinkCard } from '@astrojs/starlight/components'; +import { + CardGrid, + LinkCard, + Tabs, + TabItem, +} from '@astrojs/starlight/components'; +import SessionGrid from '@components/SessionGrid.astro'; +import { sessions } from '@data/aspireconf-sessions'; +import YouTubeEmbed from '@components/YouTubeEmbed.astro'; +import TwitchEmbed from '@components/TwitchEmbed.astro';

新しい Aspire にぜひ触れてみてください

@@ -34,26 +44,32 @@ import { CardGrid, LinkCard } from '@astrojs/starlight/components'; Aspire を体験し、それが分散アプリやエージェントの構築・デプロイ方法をどのように変革するかを学びましょう。コード中心のコントロールにより、書き直しなしでシンプルなシステムから複雑なシステムまでをオーケストレーションおよび可観測化し、どこにでもデプロイできます。新しい Aspire にぜひ触れてみてください。 -あらゆるスキルレベルの方に向けたセッションをご用意しています。使用している言語、フレームワーク、コンピュート環境、クラウド、コーディングエージェントを問わず、すべての開発者を歓迎します。Aspire がどのようにして AI 支援開発を実用的かつ楽しいものにするためのプリミティブを提供するのかをご覧ください。 -YouTube および Twitch, で配信します。ぜひライブで質問や交流をお楽しみください。皆さまのご参加をお待ちしています! +YouTube および Twitch でライブ配信します。ぜひライブで質問や交流をお楽しみください。皆さまのご参加をお待ちしています! -**詳細なアジェンダは続報をお待ちください。**
- - - - +{sessions.length > 0 && ( + + <> +

セッションを探索

+ +

あらゆるスキルレベルの方に向けたセッションをご用意しています。使用している言語、フレームワーク、コンピュート環境、クラウド、コーディングエージェントを問わず、すべての開発者を歓迎します。Aspire がどのようにして AI 支援開発を実用的かつ楽しいものにするためのプリミティブを提供するのかをご覧ください。

+ + + +)} + +## ライブ配信を見る + +ライブ配信が開始されると、こちらの YouTube または Twitch でご視聴いただけます。 + + + + + + + + + \ No newline at end of file diff --git a/src/frontend/src/content/docs/ja/index.mdx b/src/frontend/src/content/docs/ja/index.mdx index 00b2b0032..a41718271 100644 --- a/src/frontend/src/content/docs/ja/index.mdx +++ b/src/frontend/src/content/docs/ja/index.mdx @@ -10,7 +10,7 @@ editUrl: false next: false banner: content: | - 🚀 Aspire 13.1 がリリースされました!Aspire 13.1 の新機能を確認。 + 2026年3月23日に開催される無料オンラインイベント #AspireConf で、新しい Aspire にぜひ触れてみてください!予定を確保 hero: tagline: あなたのスタックをもっとシンプルに。

フロントエンド、API、コンテナ、データベースを再実装不要、制限なしでオーケストレーションします。Aspire を拡張してあらゆるプロジェクトを強化しましょう。

image: diff --git a/src/frontend/src/content/docs/ja/testing/manage-app-host.mdx b/src/frontend/src/content/docs/ja/testing/manage-app-host.mdx index 7c9f854d8..f987f17a6 100644 --- a/src/frontend/src/content/docs/ja/testing/manage-app-host.mdx +++ b/src/frontend/src/content/docs/ja/testing/manage-app-host.mdx @@ -21,10 +21,9 @@ Aspire を使って機能テストや統合テストを書く際には、AppHost Aspire でテストを書く場合は、[Aspire.Hosting.Testing](https://www.nuget.org/packages/Aspire.Hosting.Testing) NuGet パッケージを使用します。このパッケージには、テスト内で AppHost インスタンスを管理するためのいくつかのヘルパークラスが含まれています。 -## `DistributedApplicationTestingBuilder` クラスを使用する +### `DistributedApplicationTestingBuilder` クラスを使用する -[最初のテストを書くチュートリアル](/ja/testing/write-your-first-test/) -では、AppHost インスタンスを作成するために使用できる DistributedApplicationTestingBuilder クラスを紹介しました: +[最初のテストを書くチュートリアル](/ja/testing/write-your-first-test/) では、AppHost インスタンスを作成するために使用できる DistributedApplicationTestingBuilder クラスを紹介しました: ```csharp var appHost = await DistributedApplicationTestingBuilder @@ -125,9 +124,8 @@ public class WebTests テスト実行の開始時に AppHost をフィールドとして保持しておくことで、各テストから再作成することなく AppHost にアクセスできるようになり、テスト実行にかかる時間を短縮できます。そしてテスト実行が完了すると AppHost は破棄され、コンテナーなど、テスト実行中に作成されたすべてのリソースがクリーンアップされます。 -## AppHost に引数を渡す +### AppHost に引数を渡す -You can access the arguments from your AppHost with the `args` parameter. Arguments are also passed to [.NET's configuration system](https://learn.microsoft.com/dotnet/core/extensions/configuration), so you can override many configuration settings this way. In the following example, you override the [environment](https://learn.microsoft.com/aspnet/core/fundamentals/environments) by specifying it as a command line option: AppHost では、`args` パラメーターを使って引数にアクセスできます。引数は [.NET の構成システム](https://learn.microsoft.com/ja-jp/dotnet/core/extensions/configuration) にも渡されるため、この方法で多くの構成設定を上書きできます。次の例では、コマンドライン オプションとして指定することで [ASP.NET Core ランタイム環境](https://learn.microsoft.com/ja-jp/aspnet/core/fundamentals/environments) を上書きしています: ```csharp @@ -150,7 +148,6 @@ if (builder.Configuration.GetValue("UseVolumes", true)) } ``` -In test code, you pass `"UseVolumes=false"` in the `args` to the AppHost: テストコードでは、AppHost の `args` に `"UseVolumes=false"` を渡します: ```csharp @@ -170,7 +167,7 @@ public async Task DisableVolumesFromTest() } ``` -## `DistributedApplicationFactory` クラスを使用する +### `DistributedApplicationFactory` クラスを使用する `DistributedApplicationTestingBuilder` クラスは多くの場面で便利ですが、たとえば builder を作成する前にコードを実行したい、あるいは AppHost をビルドした後に処理を挟みたいなど、AppHost の起動フローをより細かく制御したいケースもあります。そうした場合は、`DistributedApplicationFactory` クラスを自分で実装します。これは `DistributedApplicationTestingBuilder` が内部的に利用している仕組みです。 diff --git a/src/frontend/src/content/docs/ja/testing/write-your-first-test.mdx b/src/frontend/src/content/docs/ja/testing/write-your-first-test.mdx index 62b87d3ca..ecf57aac3 100644 --- a/src/frontend/src/content/docs/ja/testing/write-your-first-test.mdx +++ b/src/frontend/src/content/docs/ja/testing/write-your-first-test.mdx @@ -9,13 +9,13 @@ import PivotSelector from '@components/PivotSelector.astro'; import Pivot from '@components/Pivot.astro'; この記事では、Aspire ソリューション向けにテストプロジェクトを作成し、C# でテストを書き、それらを実行する方法を学びます。これらはユニットテストではなく、分散アプリケーションの各コンポーネントがどのように連携して動作するかを検証するための 機能テストおよび統合テスト です。Aspire では、xUnit.net、MSTest、NUnit 向けのテストプロジェクトテンプレートが提供されており、それぞれにサンプルテストが含まれているため、すぐに始めることができます。 @@ -384,15 +384,12 @@ public class IntegrationTest1 - `DistributedApplicationTestingBuilder.CreateAsync` API を使用して、AppHost を非同期に作成しています。 - `appHost` は `IDistributedApplicationTestingBuilder` のインスタンスで、AppHost を表します。 -- appHost のサービス コレクションに対して、ログ設定および標準の HTTP レジリエンス ハンドラーを構成しています。詳細については [回復性がある HTTP アプリを構築する: 主要な開発パターン](https://learn.microsoft.com/ja-jp/dotnet/core/resilience/http-resilience)をご参照ください。 -- The `appHost` has its `BuildAsync` method invoked, which returns the `DistributedApplication` instance as the `app`. +- `appHost` のサービス コレクションに対して、ログ設定および標準の HTTP レジリエンス ハンドラーを構成しています。詳細については [回復性がある HTTP アプリを構築する: 主要な開発パターン](https://learn.microsoft.com/ja-jp/dotnet/core/resilience/http-resilience)をご参照ください。 - `appHost.BuildAsync` を呼び出し、`DistributedApplication` インスタンスを `app` として取得しています。 - `app` を非同期に起動しています。 - `app.CreateHttpClient` を呼び出して、`webfrontend` リソース用の `HttpClient` を作成しています。 - `app.ResourceNotifications` を使用して、`webfrontend` リソースが正常状態になるまで待機しています。 -- A simple HTTP GET request is made to the root of the `webfrontend` resource. - `webfrontend` リソースのルートに対して、シンプルな HTTP GET リクエストを送信しています。 -- The test asserts that the response status code is `OK`. - レスポンスのステータス コードが OK(HTTP 200)であることを検証しています。 ## リソースの環境変数をテストする @@ -418,8 +415,12 @@ public class EnvVarTests var frontend = builder.CreateResourceBuilder("webfrontend"); // 実行(Act) - var envVars = await frontend.Resource.GetEnvironmentVariableValuesAsync( - DistributedApplicationOperation.Publish); + var executionConfiguration = await ExecutionConfigurationBuilder.Create(frontend.Resource) + .WithEnvironmentVariablesConfig() + .BuildAsync(new(DistributedApplicationOperation.Publish), NullLogger.Instance, CancellationToken.None) + .ConfigureAwait(true); + + var envVars = executionConfiguration.EnvironmentVariables.ToDictionary(); // 検証(Assert) Assert.Contains(envVars, static (kvp) => @@ -454,8 +455,12 @@ public class EnvVarTests var frontend = builder.CreateResourceBuilder("webfrontend"); // 実行(Act) - var envVars = await frontend.Resource.GetEnvironmentVariableValuesAsync( - DistributedApplicationOperation.Publish); + var executionConfiguration = await ExecutionConfigurationBuilder.Create(frontend.Resource) + .WithEnvironmentVariablesConfig() + .BuildAsync(new(DistributedApplicationOperation.Publish), NullLogger.Instance, CancellationToken.None) + .ConfigureAwait(true); + + var envVars = executionConfiguration.EnvironmentVariables.ToDictionary(); // 検証(Assert) CollectionAssert.Contains(envVars, @@ -486,8 +491,12 @@ public class EnvVarTests var frontend = builder.CreateResourceBuilder("webfrontend"); // 実行(Act) - var envVars = await frontend.Resource.GetEnvironmentVariableValuesAsync( - DistributedApplicationOperation.Publish); + var executionConfiguration = await ExecutionConfigurationBuilder.Create(frontend.Resource) + .WithEnvironmentVariablesConfig() + .BuildAsync(new(DistributedApplicationOperation.Publish), NullLogger.Instance, CancellationToken.None) + .ConfigureAwait(true); + + var envVars = executionConfiguration.EnvironmentVariables.ToDictionary(); // 検証(Assert) Assert.That(envVars, Does.Contain( @@ -503,10 +512,10 @@ public class EnvVarTests 上記のコードでは、次のことを行っています: - `DistributedApplicationTestingBuilder.CreateAsync` API を利用して、AppHost を非同期に作成しています。 -- `builder` インスタンスは、`Resources` プロパティから 「webfrontend」 という名前の `IResourceWithEnvironment` インスタンスを取得するために使用されます。 -- `webfrontend` リソースに対して `GetEnvironmentVariableValuesAsync` を呼び出し、構成済みの環境変数を取得しています。 -- `GetEnvironmentVariableValuesAsync` 呼び出し時に `DistributedApplicationOperation.Publish` を渡し、バインディング式としてリソースに公開(Publish)される環境変数を対象にしています。 -- 返却された環境変数を用いて、テストでは `webfrontend` リソースに、`apiservice` リソースへ解決される HTTPS の環境変数が存在することを検証しています。 +- `builder` インスタンスの `Resources` プロパティから 「webfrontend」 という名前の `IResourceWithEnvironment` インスタンスを取得しています。 +- `ExecutionConfigurationBuilder` を使用して `webfrontend` リソースの `ExecutionConfiguration` を構築し、`WithEnvironmentVariablesConfig` によって環境変数の構成を明示的に有効化しています。 +- `DistributedApplicationOperation.Publish` を指定して `BuildAsync` を呼び出し、未解決のバインディング式を含む、そのリソースに対して公開される環境変数を生成しています。 +- 返却された環境変数を用いて、テストでは `webfrontend` リソースが `apiservice` リソースへ解決される HTTPS の環境変数が存在することを検証しています。 ## テストからログを取得する diff --git a/src/frontend/src/content/docs/ja/whats-new/aspire-13.mdx b/src/frontend/src/content/docs/ja/whats-new/aspire-13.mdx index 29ae86933..8190c471a 100644 --- a/src/frontend/src/content/docs/ja/whats-new/aspire-13.mdx +++ b/src/frontend/src/content/docs/ja/whats-new/aspire-13.mdx @@ -3,7 +3,7 @@ title: Aspire 13 の新機能 description: Aspire 13.0 では、Python と JavaScript を第一級でサポートするポリグロット アプリケーション開発、コンテナー ベースのビルド、aspire do パイプライン、VS Code 拡張機能、そしてモダンな CLI ツールの更新と改善が導入されました。 sidebar: label: Aspire 13.0 - order: 1 + order: 2 tableOfContents: minHeadingLevel: 2 maxHeadingLevel: 2 @@ -19,6 +19,8 @@ import interactionService from '@assets/whats-new/interaction-service.png'; import languageIcons from '@assets/whats-new/language-icons.png'; import colorTweaks from '@assets/whats-new/color-tweaks.png'; import healthChecksLastRun from '@assets/whats-new/health-checks-last-run.png'; +import resourcesParametersView from '@assets/whats-new/resources-parameters-view.png'; +import genaiVisualizerTooldefinitions from '@assets/whats-new/genai-visualizer-tooldefinitions.png'; 📢 Aspire 13 は、Aspire 製品ラインにおける大きな節目となるリリースです。 @@ -46,11 +48,9 @@ Aspire に関するフィードバックや質問、または貢献にご興味 ## 🆙 Aspire 13.0 へのアップグレード - - Aspire 13.0 へアップグレードする最も簡単な方法は、 `aspire update` コマンドを使用することです: @@ -331,7 +331,7 @@ Aspire は、Dockerfile 生成時に使用する Python のバージョンを、 1. **`.python-version` ファイル** (最優先)。 2. **`pyproject.toml`** の `requires-python` フィールド。 -3. **仮想環境** - フォールバックとして `python --version` を使用。 +3. **仮想環境** - フォールバックとして `python --version` を使用。 @@ -363,7 +363,7 @@ import pythonStarterLightPng from '@assets/get-started/python-starter-light.png' ### 第一級言語としての JavaScript @@ -561,9 +561,7 @@ JDBC 接続文字列には、セキュリティのベスト プラクティス このパターンは、PostgreSQL、SQL Server、Oracle、MySQL、MongoDB など、サポートされているすべてのデータベースで機能し、それぞれに適した URI 形式および JDBC 形式が提供されます。 > [!NOTE] -> これらの新しい接続プロパティの規約は、Aspire に組み込まれているデータベース統合(PostgreSQL、SQL Server、Oracle、MySQL、MongoDB など)で利用できます。 -> カスタム統合やコミュニティ製の統合を使用している場合は、これらのプロパティを公開するように更新が必要になることがあります。 -> 独自の統合にこれらの規約を実装する方法については、 [connection properties agent documentation](https://github.com/dotnet/aspire/blob/main/.github/agents/connectionproperties.agent.md) をご参照ください。 +> これらの新しい接続プロパティの規約は、Aspire に組み込まれているデータベース統合(PostgreSQL、SQL Server、Oracle、MySQL、MongoDB など)で利用できます。カスタム統合やコミュニティ製の統合を使用している場合は、これらのプロパティを公開するように更新が必要になることがあります。独自の統合にこれらの規約を実装する方法については、 [connection properties agent documentation](https://github.com/dotnet/aspire/blob/main/.github/agents/connectionproperties.agent.md) をご参照ください。 #### 言語をまたいだ証明書の信頼設定 @@ -614,7 +612,6 @@ await builder.Build().RunAsync(); ## 🛠️ CLI と ツール - ### aspire init コマンド @@ -622,8 +619,7 @@ await builder.Build().RunAsync(); 新しい `aspire init` コマンドは、包括的なプロジェクト設定と構成を備えた Aspire ソリューションを初期化するための、簡潔で対話的な体験を提供します。 - `aspire init` コマンドの詳細については、 [aspire init - documentation](/reference/cli/commands/aspire-init/)をご確認ください。 +`aspire init` コマンドの詳細については、 [aspire init documentation](/ja/reference/cli/commands/aspire-init/)をご確認ください。 ```bash title="Bash — 新しい Aspire ソリューションを初期化" @@ -674,8 +670,7 @@ Select a template: このスターター テンプレート コレクションは拡張可能な設計となっており、今後さまざまなアーキテクチャ パターンや技術の組み合わせを紹介する形で拡充されていく予定です。このアプローチにより、Aspire の機能を実際に動作するサンプルから学び、理解しやすくなります。 - コマンドの詳細については、[aspire new - documentation](/reference/cli/commands/aspire-new/)をご参照ください。 +コマンドの詳細については、[aspire new documentation](/ja/reference/cli/commands/aspire-new/)をご参照ください。 ### Aspire update の改善点 @@ -694,14 +689,12 @@ aspire update --project ./src/MyApp.AppHost ``` **Aspire 13.0 の新機能:** - - **CLI のセルフアップデート**: `--self` フラグを使用することで、再インストールせずに Aspire CLI を更新できます。 - **信頼性の向上**: 依存関係解決におけるエッジケースに対する多数のバグ修正が行われました。 - **エラーハンドリングの改善**: 更新に失敗した際のエラーメッセージが、より分かりやすくなりました。 - **パフォーマンスの向上**: パッケージ検出および更新処理が高速化されました。 `aspire update` コマンドは、引き続き次の機能をサポートしています: - - Central Package Management(CPM)ソリューション。 - ダイヤモンド依存関係の解決。 - 単一ファイルのアプリホスト。 @@ -710,8 +703,7 @@ aspire update --project ./src/MyApp.AppHost - チャネル認識(stable、preview、staging)。 - 詳細なコマンドリファレンスについては、 [aspire - update](/reference/cli/commands/aspire-update/)を参照してください。 +詳細なコマンドリファレンスについては、 [aspire update](/ja/reference/cli/commands/aspire-update/)を参照してください。 ### Visual Studio Code 拡張機能 @@ -719,7 +711,7 @@ aspire update --project ./src/MyApp.AppHost Aspire 13.0 には、新しい Aspire VS Code 拡張機能が含まれており、Aspire CLI の機能を VS Code 上で利用できるようになります。コマンドパレットから、プロジェクトの作成やデバッグ、統合の追加、起動設定の構成、デプロイの管理を直接行うことができます。 > [!NOTE] -> 拡張機能のほとんどの機能を利用するには、Aspire 13.0 の CLI がインストールされ、ユーザーの `PATH` に含まれている必要があります。VS Code のターミナルで `aspire --version` を実行することで確認できます。インストール手順については、 [Upgrade to Aspire 13.0](#-upgrade-to-aspire-130)を参照してください。 +> 拡張機能のほとんどの機能を利用するには、Aspire 13.0 の CLI がインストールされ、ユーザーの `PATH` に含まれている必要があります。VS Code のターミナルで `aspire --version` を実行することで確認できます。インストール手順については、 [Upgrade to Aspire 13.0](#-aspire-130-へのアップグレード)を参照してください。 **主な機能:** @@ -777,12 +769,11 @@ Aspire CLI には、必要な .NET SDK のバージョンが存在しない場 > [!IMPORTANT] > これは 既定では有効になっていない プレビュー機能です。.NET SDK の自動インストールを使用するには、次のコマンドで有効化してください: -> > ```bash > aspire config set features.dotnetSdkInstallationEnabled true > ``` -有効化すると、CLI は不足している SDK を自動的にインストールします。: +有効化すると、CLI は不足している SDK を自動的にインストールします: ```bash # この機能を有効にすると、CLI が必要な SDK を自動的にインストールします @@ -823,7 +814,7 @@ Aspire 13.0 では、ビルド、デプロイ、発行処理を統合的に調 > [!IMPORTANT] > 🧪 **アーリープレビュー**: パイプライン API は初期プレビュー段階であり、実験的(experimental)として扱われています。詳細については、 [aspire do command reference](/reference/cli/commands/aspire-do/) を参照してください。 -基本的な CLI コマンドやツールについては、 [CLI と ツール](#%EF%B8%8F-cli-と-ツール)を参照してください。ここでは、 [aspire init](#aspire-init-コマンド)、[aspire update](#aspire-update-の改善点)、および [non-interactive mode](#cicd-向けの非対話モード)について説明しています。 +基本的な CLI コマンドやツールについては、 [CLI と ツール](#cli-and-tooling)を参照してください。ここでは、 [aspire init](#aspire-init-コマンド)、[aspire update](#aspire-update-の改善点)、および [non-interactive mode](#cicd-向けの非対話モード)について説明しています。 **例: カスタム パイプライン ステップ** @@ -1013,7 +1004,6 @@ MAUI 統合の機能: 3. 表示される手順に従って、AI アシスタント(Claude Code、GitHub Copilot CLI、Cursor、VS Code など)を設定します。 MCP サーバーは、ストリーム可能な HTTP と API キー認証を使用して安全なアクセスを提供します。設定には次の項目が必要です: - - `url`: Aspire MCP エンドポイントのアドレス - `type`: ストリーム可能な HTTP の MCP サーバーを使用するため "http" を指定 - `x-mcp-api-key`: 認証用の HTTP ヘッダー @@ -1040,43 +1030,26 @@ Tインタラクション サービスが大幅に強化されました: 新しいインタラクション サービスの機能は、Azure プロビジョニング ダイアログを通じてダッシュボード上で確認できます。 🚀 -Azure プロビジョニング ダイアログにおける新しいインタラクション サービス機能 - +Azure プロビジョニング ダイアログにおける新しいインタラクション サービス機能 ### ポリグロット言語アイコン Aspire は JavaScript ☕ や Python 🐍 アプリを強力にサポートする、ポリグロット対応へと進化しています。ダッシュボードでは、アプリ リソース向けに新しいプログラミング言語アイコンが表示されるようになりました。これには、.NET プロジェクト(C#、F#、VB.NET)に加えて、JavaScript および Python アプリも含まれます。 -ポリグロット言語アイコン +ポリグロット言語アイコン ### アクセントカラーの改善 -ダッシュボード内の各リソースには、アイコンやテレメトリの表示に使用されるアクセントカラーが設定されています。今回の改善により、アクセントカラーはより Fluent UI らしい表現 となり、彩度が高められ、ライト テーマ/ダーク テーマそれぞれに合わせた細かな調整が行われました。 +ダッシュボード内のリソースにはアクセントカラーが設定されており、アイコンやテレメトリの表示に使用されています。アクセントカラーはより FluentUI らしい(彩度を高めた)配色に刷新され、ライトテーマとダークテーマそれぞれに合わせたカスタム調整が行われました。 -これまでダーク背景ではほとんど見えなかった 濃い青のアクセントカラー も、はっきりと視認できるようになっています! +これまでダーク背景ではほとんど見えなかった 濃い青のアクセントカラーも、はっきりと視認できるようになっています! -アクセントカラーの調整 +アクセントカラーの調整 ### 正常性チェックの最終実行時刻 ダッシュボードでは、各リソースの正常性状態を簡単に確認できます。Aspire 13 では新たに、各リソースの現在の状態の横に、正常性チェックの最終実行時刻が表示されるようになりました。これにより、不健康な状態のリソースが 現在もチェック中なのか、それとも 健全な状態に向けて進行しているのか を把握しやすくなります。 -正常性チェックの最終実行時刻 +正常性チェックの最終実行時刻 ## 🖥️ アプリ モデルの強化 @@ -1215,7 +1188,6 @@ var api = builder.AddProject("api") ``` **`api` に注入された環境変数:** - ```bash # 「primary」という名前で指定された primaryDb から ConnectionStrings__primary=Host=postgres-primary;... @@ -1245,7 +1217,6 @@ var worker = builder.AddProject("worker") ``` **`worker`に注入された環境変数** - ```bash DB_HOST=postgres DB_PORT=5432 @@ -1271,7 +1242,6 @@ var frontend = builder.AddJavaScriptApp("frontend", "./frontend") ``` **`frontend`に注入された環境変数:** - ```bash # 既定の動作 — 外部エンドポイントの URL を使用 API_URL=https://localhost:7123 @@ -1287,7 +1257,6 @@ var worker = builder.AddProject("worker") ``` **`worker`に注入された環境変数:** - ```bash # コンテナー ネットワーク コンテキスト — 内部コンテナー アドレスを使用 API_URL=http://api:8080 @@ -1298,22 +1267,18 @@ API_URL=http://api:8080 ### その他のアプリ モデル改善点 **コンピューティング環境のサポート(実験的から昇格)**: - - `WithComputeEnvironment`API が安定版となり、実験的(experimental)のマークが外れました - 実験的な警告なしで、特定のコンピューティング環境へリソースをデプロイできます **MCP からのリソース除外**: - - 特定のリソースを Model Context Protocol の公開対象から除外するための `ExcludeFromMcp` 拡張が追加されました - AI アシスタントや MCP クライアントに表示されるリソースを制御できます **参照による環境変数注入の制御**: - - 参照から環境変数をどのように注入するかを制御する `WithReferenceEnvironment` - 環境変数の挙動を細かく制御するための `ReferenceEnvironmentInjectionFlags` **ヘルパー メソッド**: - - 失敗時のハンドリングを行いながら安全にリソース ビルダーの作成を試みる `TryCreateResourceBuilder` - リソース ビルダーの作成に失敗した場合でも例外を投げず、false を返します @@ -1437,8 +1402,7 @@ Aspire Dashboard は、Azure App Service へデプロイする際に既定で含 ```csharp builder.AddAzureAppServiceEnvironment("env"); -// ダッシュボードは既定で次の URL に含まれます -// https://[prefix]-aspiredashboard-[unique string].azurewebsites.net +// ダッシュボードは既定で次の URL に含まれます。 https://[prefix]-aspiredashboard-[unique string].azurewebsites.net ``` デプロイされたダッシュボードでは、ローカル開発時と同様の体験が提供され、本番環境におけるログ、トレース、メトリクス、アプリケーション トポロジを確認できます。 @@ -1460,7 +1424,6 @@ builder.AddAzureAppServiceEnvironment("env") ``` 有効化すると、Aspire は自動的に次の処理を行います: - - Log Analytics ワークスペースを作成します - Application Insights リソースを作成します - すべての App Service Web アプリに接続文字列を設定します @@ -1510,7 +1473,6 @@ aspire add javaScript Aspire 13.0 では、以下の API が削除されました: **パブリッシング関連のインフラストラクチャ** (`aspire do` に置き換え): - - `PublishingContext` および `PublishingCallbackAnnotation` - `DeployingContext` および `DeployingCallbackAnnotation` - `WithPublishingCallback` 拡張メソッド @@ -1522,17 +1484,14 @@ Aspire 13.0 では、以下の API が削除されました: - `CompletionState` 列挙型 **デバッグ関連 API** (新しい柔軟な API に置き換え): - - `debugAdapterId` および `requiredExtensionId` パラメーターを持つ旧 `WithDebugSupport` オーバーロード - `SupportsDebuggingAnnotation` (新しいデバッグ サポート用アノテーションに置き換え) **診断コード**: - - `ASPIRECOMPUTE001` 診断コード(削除 ― API が実験段階を卒業したため) - `ASPIREPUBLISHERS001` (`ASPIREPIPELINES001-003` に名称変更) **CLI コマンド**: - - `aspire run` から `--watch` フラグが削除(`features.defaultWatchEnabled` 機能フラグに置き換え) ### 非推奨(Obsolete)となった API @@ -1540,36 +1499,30 @@ Aspire 13.0 では、以下の API が削除されました: 以下の API は Aspire 13.0 で 非推奨 とされており、将来のリリースで削除される予定です: **ライフサイクル フック**: - - `IDistributedApplicationLifecycleHook` インターフェース → 代わりに `IDistributedApplicationEventingSubscriber` を使用してください **ライフサイクル フック用の拡張メソッド** (イベント サブスクライバー用拡張メソッドを使用): - - `AddLifecycleHook()` → 代わりに `AddEventingSubscriber()` を使用 - `AddLifecycleHook(Func)` → 代わりに `AddEventingSubscriber(Func)` を使用 - `TryAddLifecycleHook()` → 代わりに `TryAddEventingSubscriber()` を使用 - `TryAddLifecycleHook(Func)` → 代わりに `TryAddEventingSubscriber(Func)` を使用 **パブリッシング関連インターフェース** (代わりに `aspire do` を使用): - - `IDistributedApplicationPublisher` → 代わりに `PipelineStep` を使用 - `PublishingOptions` → 代わりに `PipelineOptions` を使用 **Node.js/JavaScript APIs** (代わりに新しい JavaScript ホスティングを使用): - - `AddNpmApp()` → 代わりに一般的な npm ベースのアプリには `AddJavaScriptApp()` 、Vite プロジェクトには `AddViteApp()` を使用してください :::note[AddNpmApp からの移行] `AddNpmApp` API では、スクリプトにコマンドライン引数を渡すための `args` パラメーターがサポートされていましたが、`AddJavaScriptApp` にはこのパラメーターはありません。その代わりに、必要な引数を含んだカスタム スクリプトを `package.json` に定義してください。詳細や例については、[スクリプトに引数を渡す方法](#スクリプトに引数を渡す方法)を参照してください。 ::: -なお、これらの非推奨 API は Aspire 13.0 では引き続き動作しますが、次のメジャー バージョンでは削除される予定です。 -推奨されている代替 API への移行を進めてください。 +なお、これらの非推奨 API は Aspire 13.0 では引き続き動作しますが、次のメジャー バージョンでは削除される予定です。推奨されている代替 API への移行を進めてください。 ### シグネチャの変更 **AllocatedEndpoint コンストラクター**: - ```csharp {5,9,12} // これまで (9.x) var endpoint = new AllocatedEndpoint( @@ -1586,7 +1539,6 @@ var endpoint = new AllocatedEndpoint( ``` **ParameterProcessor コンストラクター**: - ```csharp {8,17} // これまで (9.x) var processor = new ParameterProcessor( @@ -1608,18 +1560,15 @@ var processor = new ParameterProcessor( ``` **InteractionInput プロパティの変更**: - - `MaxLength`: Set 可能から init のみに変更 - `Options`: init のみから Set 可能に変更 - `Placeholder`: Set 可能から init のみに変更 **IResourceWithServiceDiscovery に対する WithReference**: - - 名前付き参照を指定できる `name` パラメーター付きの新しいオーバーロードが追加 - 既存のオーバーロードも互換性のため引き続き利用可能 **ProcessArgumentValuesAsync および ProcessEnvironmentVariableValuesAsync**: - ```csharp // これまで (9.x) await resource.ProcessArgumentValuesAsync( @@ -1634,7 +1583,6 @@ await resource.ProcessArgumentValuesAsync( `containerHostName` パラメーターは削除されました。ネットワークのコンテキストは、現在は `NetworkIdentifier` を通じて管理されます。 **EndpointReference.GetValueAsync の挙動変更**: - ```csharp // これまで (9.x) - 割り当てられていない場合、即座に例外をスロー var value = await endpointRef.GetValueAsync(cancellationToken); @@ -1654,14 +1602,12 @@ var value = await endpointRef.GetValueAsync(cancellationToken); Aspire 13.0 では、コンテナ オーケストレーターの対応状況に依存しない、コンテナからホストへのユニバーサルな通信を実現するための大きなアーキテクチャ変更が導入されました。 **変更点:** - - DCP のコンテナ トンネル機能を利用して、コンテナからホストへの接続性を実現 - `EndpointReference` の解決がコンテキスト認識型に変更(`NetworkIdentifier` を使用) - エンドポイント参照は `EndpointAnnotation` によって追跡されるように変更 - `AllocatedEndpoint` コンストラクターのシグネチャを変更 **影響:** - - すべてのデプロイ シナリオにおいて、コンテナがホスト ベースのサービスと安定して通信できるようになります - `AllocatedEndpoint` を直接生成しているコードは修正が必要になります - エンドポイント参照を処理する拡張メソッドでは、Network Identifier のコンテキストが必要になる場合があります @@ -1718,12 +1664,67 @@ var app = builder.AddNodeApp("frontend", "../frontend", "server.js") .WithRunScript("dev"); ``` +#### Azure デプロイ時の DefaultAzureCredential の動作 + +Aspire 13.0 では、Azure Container Apps および Azure App Service へデプロイする際の `DefaultAzureCredential` の既定動作が変更され、`ManagedIdentityCredential` のみを使用するようになりました。 + +**変更点:** + +Azure Container Apps または Azure App Service にデプロイすると、Aspire は自動的に `AZURE_TOKEN_CREDENTIALS` 環境変数を `managedidentity` に設定します。これにより、`DefaultAzureCredential` は `EnvironmentCredential` や `WorkloadIdentityCredential` など他の資格情報を先に試すのではなく、`ManagedIdentityCredential` のみを使用する決定的(deterministic)な動作になります。 + +**この変更の理由:** + +- **決定的(Deterministic)な動作**: 本番環境で `DefaultAzureCredential` が常に `ManagedIdentityCredential` を使用することを保証します。 +- **最適化された耐障害性**: リトライロジックを有効化し、プローブリクエストを無効化することでパフォーマンスを向上させます。 +- **ベストプラクティスへの準拠**: [Azure SDK の認証ベストプラクティス](https://learn.microsoft.com/ja-jp/dotnet/azure/sdk/authentication/best-practices?tabs=aspdotnet#use-deterministic-credentials-in-production-environments) に沿った動作になります。 + +**以前の動作 (9.x):** + +`DefaultAzureCredential` は資格情報チェーン全体を使用し、`ManagedIdentityCredential` の前に `EnvironmentCredential` や `WorkloadIdentityCredential` を試していました。 + +**新しい動作 (13.0):** + +`AZURE_TOKEN_CREDENTIALS` 環境変数が `managedidentity` に設定されている場合、`DefaultAzureCredential` は `ManagedIdentityCredential` のみを使用します。 + +**影響を受ける API:** + +- `AddAzureContainerAppEnvironment` +- `AddAzureAppServiceEnvironment` + +**移行方法:** + +アプリケーションで `EnvironmentCredential` や `WorkloadIdentityCredential` に依存している場合は、次のいずれかを選択してください: + +1. **明示的な資格情報を使用する**: アプリケーションで `DefaultAzureCredential` を使用せず、必要な資格情報(例: `EnvironmentCredential` や `WorkloadIdentityCredential`)を明示的に使用してください。 + +2. **環境変数を削除する**: デプロイ時のコールバックを実装して、`AZURE_TOKEN_CREDENTIALS` 環境変数を削除します: + + ```csharp + // Azure Container Apps の場合 + builder.AddProject("frontend") + .PublishAsAzureContainerApp((infra, app) => + { + var containerAppContainer = app.Template.Containers[0].Value!; + var azureTokenCredentialEnv = containerAppContainer.Env + .Single(v => v.Value!.Name.Value == "AZURE_TOKEN_CREDENTIALS"); + containerAppContainer.Env.Remove(azureTokenCredentialEnv); + }); + + // Azure App Service の場合 + builder.AddProject("frontend") + .PublishAsAzureAppServiceWebsite((infra, website) => + { + var azureTokenCredentialSetting = website.AppSettings + .Single(v => v.Value!.Name.Value == "AZURE_TOKEN_CREDENTIALS"); + website.AppSettings.Remove(azureTokenCredentialSetting); + }); + ``` + ### 移行ガイド #### パブリッシング コールバックからパイプライン ステップへの移行 **これまで (9.x)**: - ```csharp var api = builder.AddProject("api") .WithPublishingCallback(async (context, cancellationToken) => @@ -1733,7 +1734,6 @@ var api = builder.AddProject("api") ``` **これから (13.0)**: - ```csharp var api = builder.AddProject("api") .WithPipelineStepFactory(context => @@ -1752,7 +1752,6 @@ var api = builder.AddProject("api") #### ライフサイクル フックからイベントへの移行 **これまで (9.x)**: - ```csharp public class MyLifecycleHook : IDistributedApplicationLifecycleHook { @@ -1768,7 +1767,6 @@ builder.Services.TryAddLifecycleHook(); ``` **これから (13.0)**: - ```csharp public class MyEventSubscriber : IDistributedApplicationEventingSubscriber {