Slide 1

Slide 1 text

ネットシェア可 #dotnetlab .NET Aspireの新機能を使っ てみる November 23, 2024 .NETラボ 勉強会 2024年11⽉ 1 / 27

Slide 2

Slide 2 text

ネットシェア可 #dotnetlab ⾃⼰紹介 Tomohisa Takaoka X: @tomohisa Github: @tomohisa Works at : 株式会社ジェイテックジャパン CTO, J-Tech Creations, Inc. B2B B2C アプリケーション開発、コンサルティング JTS Group - 株式会社ジャパンテクニカルソフトウェア Microsoft MVP for Developer Technologies (Web Development, .NET) new from November 2024 - OSS: Sekiban - Event Sourcing and CQRS Framework ResultBoxes - Railway Oriented Programing Library. 登壇予定: 11⽉26⽇ アーキテクチャカンファレンス 『イベントソーシング‧CQRSで、 ドメイン駆動設計をシンプルかつ柔軟に実践する』 12⽉21⽇ CQRS+ESカンファレンス 『中⼩規模のイベントソーシングを実現 する、Sekibanフレームワーク(仮)』 2 / 27

Slide 3

Slide 3 text

ネットシェア可 #dotnetlab .NET Aspireの新機能を使ってみる 3 / 27 アジェンダ ● dotnet confにおけるAspire関連の登壇のまとめ ○ What’s new in Aspire. ○ Build your own .NET Aspire integrations ○ Building and deploying an Azure Functions app with .NET Aspire in 25 minutes ○ Building .NET Applications Across Clouds with .NET Aspire ○ Aspirations for .NET Aspire ● ライブコーディング ● まとめ

Slide 4

Slide 4 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登 壇のまとめ 4 / 27

Slide 5

Slide 5 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ What’s new in Aspire. 「Aspireは.netエコシステムの⼀部である」 Aspireが、新しいプラットフォームやデスク トップアプリ、モバイルアプリという枠を超え て、.netエコシステムの⼀環として存在してい ることを意味します。Aspireの存在理由は、現 代の世界に適応し、応答性が⾼く、回復⼒があ り、観察可能なアプリを開発するための⽅法を 提供することにあります。 5 / 27

Slide 6

Slide 6 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ What’s new in Aspire. Aspireの構成 ● Inner loop - AppHost ● Developer Dashboard ● Integration ● Deployment (optional) 個⼈的には開発促進ツールとして現在は使⽤し ている。 6 / 27

Slide 7

Slide 7 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ What’s new in Aspire. 「Visual Studio Code対応が機能追加中」 C# Dev Kit を使⽤することにより、「.NET Add .NET Aspire Orchestration (preview)」をコマ ンドパレット > から実⾏できるようになり、既 存ソリューションにAppHostやServiceDefault のプロジェクトを追加しやすくなった。 7 / 27

Slide 8

Slide 8 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ What’s new in Aspire. 「Health Checkの活⽤」 Health状態を確認する機能がオーケストレー ションに組み込まれるようになった。 「.WaitFor()」をつけることによって、起動し て状況が出来上がってからマイグレーションを 流すなどを正しく定義できるようになった。 8 / 27

Slide 9

Slide 9 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ What’s new in Aspire. 「カスタムコマンド」 AppHostだけで実⾏できるコマンドを定義でき る。データのリセットや、開発⽤追加データな ど。Api側では、開発のみに実⾏できるHTTPエ ンドポイントとすることにより、開発中のみ使 ⽤できるようにする。 9 / 27

Slide 10

Slide 10 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ What’s new in Aspire. 「インテグレーションの追加」 リリース以来たくさんのインテグレーションが 使⽤できるようになってきている。 Aspireメインチームの負担を下げるため に、.NET Aspire Community Toolkitがリリー スされた。 10 / 27

Slide 11

Slide 11 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ What’s new in Aspire. 「デプロイにおけるフレキシビリティの増加」 Azure Container Appにおいて、ユーザーから のフィードバックをもとに、カスタムドメイン や証明書を追加できるようになった。 簡単デプロイは、本番環境⽤というよりも、簡 単にステージング環境を作るのに役に⽴つかも しれない。 11 / 27

Slide 12

Slide 12 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ Build your own .NET Aspire integrations .NET Aspire Community Toolkitのリリース https://github.com/communityToolkit/aspire Aspire本体でメンテナンスできないようなコ ミュニティのホスト統合、クライアント統合を 共同開発することができる Azure Data API Builder, Azure Static Web Apps, Bun, Deno, Golang, Java, Mellisearch, NodeJs, Ollama (host), Python, Rust, SQLDatabaseProjects, Ollamasharp (client) etc... できたものは、nuget で利⽤可能になってい る。 CommunityToolkit.Aspire.* 12 / 27

Slide 13

Slide 13 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ Building and deploying an Azure Functions app with .NET Aspire in 25 minutes Beta版としてAzure FunctionsのAspire対応が リリースされている。 storage = builder. AddAzureStorage"mystorage") .RunAsEmulator; blobs = storage.AddBlobs("blobs"); builder.AddAzureFunctionsProject("aspireimageresizer") WithReference(blobs); 簡単に追加できる。 13 / 27

Slide 14

Slide 14 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ Building and deploying an Azure Functions app with .NET Aspire in 25 minutes Aspire 8でも、⾃作拡張でのローカル実⾏がで きていたが、デプロイ機能などはなかったた め、機能的には便利になっている。 プレビュー版では、特定のサービスのサブセッ トのトリガーのみがサポートされています。 サポートされているトリガー ● Azure Storage Queue ● Azure Storage BLOB ● Azure Service Bus ● Azure Event Hubs ● HTTP トリガー ● タイマートリガー 14 / 27

Slide 15

Slide 15 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ Building and deploying an Azure Functions app with .NET Aspire in 25 minutes macOS + VSCode でも問題なく動作して、デ バッグも問題なくできる。 デプロイも可能 15 / 27

Slide 16

Slide 16 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ Building .NET Applications Across Clouds with .NET Aspire ● AWS CloudFormationでJSONで開発⽤の データベースなどの構築が可能 ● AWS Cloud Development Kit (CDK) を使⽤ して、C#でリソースを管理可能 Node.js を 内部使⽤しているため、node.jsのインス トールが必須。これも開発⽤のデータベー ス構築に⽤いることができる。 ● Aspire.Host.AWS は、AWS内のGithubに 引っ越した。それによって、AWSのペース で開発ができるようになった。 ● Dynamo DBをローカルで実⾏したテストで きるなどの新しい機能も開発中。 16 / 27

Slide 17

Slide 17 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ Aspirations for .NET Aspire “"Aspiration"は「⾼みを⽬指す意欲」や「夢‧⽬標」 を意味し、成⻑や進化への強い願望を表しま す。"Aspirations for .NET Aspire" という名前に は、.NET Aspire を通じてコミュニティが⽬指す未来像 や可能性、成⻑への期待が込められており、.NET の進 化を推進し、希望と⾰新を象徴するフレーズとなって います。” - by GPT 4o Aspireの現時点を振り返ったところ、Aspire は開発、 テスト、デプロイのプラットフォームとなってきた。 最終的に⽣まれたのは、開発者がローカルでの開発、 テスト、デプロイメントを容易に⾏えるようにするた めの、キュレーションされた体験を提供するプラット フォームです。私がこれをプラットフォームと呼ぶ理由 です。 17 / 27

Slide 18

Slide 18 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ Aspirations for .NET Aspire 将来の展望 Hotter Reload. 部分的にアプリケーションを変更したときに、 そのリソースだけを再起動する機能を近い将来 に作りたいと考えている。 また、デバッガーのダイナミックなdetach / attach も⾏いたいと考えている。 18 / 27

Slide 19

Slide 19 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ Aspirations for .NET Aspire 将来の展望 多⾔語対応 .NET でできている開発の効率化を、 javascirpt、python など他の⾔語でもできるよ うにしていく。デバッガのアタッチなども.NET 並にできるようになることを考えている。 19 / 27

Slide 20

Slide 20 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ Aspirations for .NET Aspire 将来の展望 ローカル実⾏もコンテナで可能にしたい。デ バッグ、ネットワークなど課題は多い チーム開発補助 マイクロサービス開発の効率化、パスワードや インフラの共有など 20 / 27

Slide 21

Slide 21 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ Aspirations for .NET Aspire 将来の展望 リモート開発ができるようにすることにより、 Github Codespacesなどでフルの開発がAspire で⾏いやすくする。 Aspire CLI Aspire関係のコマンドをCLIとしてまとめたい とのこと開発体験やデプロイを効率化させると のこと。 21 / 27

Slide 22

Slide 22 text

ネットシェア可 #dotnetlab 1. dotnet confにおけるAspire関連の登壇のまとめ Aspirations for .NET Aspire 将来の展望 デプロイにApp Hostを使うとか、いろいろなア イデアが計画されている。チーム内でも意⾒が 分かれているので、実現するかは未定だが、開 発体験の向上という意味でいろいろなチャレン ジや、固定観念を壊すアイデアも考えらている ので楽しみ。 Azureのデプロイに関しては全ての機能が使え ることを計画され、できるだけ低い権限で安全 にリリースする⽅式に関して考えられている。 22 / 27

Slide 23

Slide 23 text

ネットシェア可 #dotnetlab 2. ライブコーディング 23 / 27

Slide 24

Slide 24 text

ネットシェア可 #dotnetlab 2. ライブコーディング 24 / 27 やりたいこと ● mac で postgres を設定 ● Sekibanの簡単な機能を書く ● SekibanのWeb APIの設定をAPI書く ● SekibanのScalar UIの実⾏ができる ● Blazor からデータを取得する (時間的に間に合わなそう)

Slide 25

Slide 25 text

ネットシェア可 #dotnetlab 3. Summary 25 / 27

Slide 26

Slide 26 text

ネットシェア可 #dotnetlab 5. Summary ● Aspire 9 になって利便性が向上、C#のプログ ラム以外でもさらに多くの⾔語で使えるよう になった。 ● Aspireから先に使い始めて、C#に⼊ってくる ⼈ができるといいな。 ● Aspireの 26 / 27

Slide 27

Slide 27 text

Thank You 27 Sekiban Github https://github.com/J-Tech-Japan/Sekiban Resultbox Github https://github.com/J-Tech-Japan/ResultBoxes Today’s Sample https://github.com/tomohisa/Solution2_202411 19_Sample 株式会社ジェイテックジャパン Website. https://www.jtechs.com/japan/ 会社ブログ zenn https://zenn.dev/p/jtechjapan_pub