😽

今年振り返り注目だった技術

2023/12/31に公開

Blazor Web Apps

https://learn.microsoft.com/ja-jp/aspnet/core/blazor/?view=aspnetcore-8.0#build-a-full-stack-web-app-with-blazor?WT.mc_id=DT-MVP-5004827

なんといっても、今年大きく進化したBlazorをあげなければいけないでしょう。
これまで、BlazorはServerとWebAssemblyの2択で、プロジェクトの選択時にどちらかを選択する必要がありましたが、Blazor Web Appsではページ単位でこれを選択することができます。
さらに、レンダーモードを自動とすることで初回読み込み時にはサーバーモードで動作しWebAssemblyとしての資源の読み込みが完了した2回目以降の表示時にはWebAssemblyとして動作させることができます。半面、サーバーでもWebAssemblyでも両方のモードで動作可能なコードが求められるようになるなどうまく使いこなすためにはハードルが上がってしまっているのも事実です。

OpenAI・Copilotなどの生成AI技術

https://learn.microsoft.com/ja-jp/azure/ai-services/openai/overview?WT.mc_id=DT-MVP-5004827

今年はまさにAIの年でした。
Satya Nadellaが語った通りMicrosoftはCopilotの会社となりつつありあらゆる製品にAIが入ってきています。
とりわけ.NET界隈で注目すべき点としてはSemantic Kernelです。同じような目的のLLMオーケストレーションを目的としたフレームワークにはLang Chainがありますが、Lang ChainがPythonのみを対象としているのに対しSemantic KernelはC#、Python、Javaといった比較的多くの言語に対応しているという強みがあります。
さらに、エンタープライズアプリケーションに生成AIを適用していくということになっていくと既存言語に合わせていく必要がありPythonで書かれているエンタープライズアプリケーションというのはなかなか限られているのではないかなという想像ができます。
このような点で、C#やJavaに対応がなされているSemantic Kernelのほうが有利かなという感触があります。

Blazor Fluent UI

今年、劇的に状況が改善されたOSSプロジェクトの一つとして挙げられるのはBlaozr Fluent UIです。
正直、昨年の今頃の段階では実プロジェクトで採用するには今一つでした。
しかし、現在は違います。
この1年でFastプロジェクト上での開発がすすみVer2系統は開発終了。
現在は、.NET6/7向けにVer.3系統、.NET8向けにVer.4系統の2本立てで進んでいます。

基本的に、Ver.4向けに新機能が入ってきてそのソースをマージする形でVer.3へ反映されてきてるという状況がここ最近です。

ここ最近のFluent UI関係の投稿で語っている通りBlazor Fluent UIに実装されているデザイントークンをそのまま使用しかつMicrosoftが出しているFluent UIのデザイン原則に関するドキュメント通りの設計をしていくとアクセシビリティに優れかつ操作性に優れたアプリケーションを構築することができます。

https://fluent2.microsoft.design/design-principles

EF Coreの移行ファイルがVisual StudioのGUI操作でも作れるように

https://devblogs.microsoft.com/visualstudio/web-api-development-in-visual-studio-2022/#entity-framework-support-in-visual-studio

実務じゃまず使わないけどもデモでよく使うのがこれ。
正直、EF Coreのコマンドを打ち込んでもいいんだけども何にも知らない層にもEF Coreバリバリ使っているよっていう層にもこんなのあるんだとおもわせるにはこれを使うとこれは知らなかったと1つくらい思わせることができるのではと思ってよく使っています。

実用性は??です。

エンドポイントエクスプローラ

https://devblogs.microsoft.com/visualstudio/web-api-development-in-visual-studio-2022/#endpoints-explorer

本当に便利なのはこっち。
先ほどのブログの一つ下にあるエンドポイントエクスプローラ。
WebAPIからエンドポイントをスキャフォールディングされてきますのでここからリクエストを生成できます。
生成したリクエストはテキストファイルとなるのでここにデータのパターンなどを書いておけばAPIに対して毎回同じリクエストを投げることができ簡易的なテストを実施することができます。
Swaggerは毎回APIに対してのリクエスト内容を設定する必要がありますがエンドポイントエクスプローラはリクエスト内容がファイルで残りますので繰り返しの検査に便利です。

.NET Aspire

https://learn.microsoft.com/ja-jp/dotnet/aspire/get-started/aspire-overview?WT.mc_id=DT-MVP-5004827

https://qiita.com/takashiuesaka/items/f45e930ef296c5710acc

従来のASP.NET Coreアプリに.NET Aspireを加えると手軽にOpenTelemetryによる可観測性の向上という恩恵が受けられます。デフォルトでダッシュボードが追加されたり監視設定のテンプレートコードが追加されたりします。
従来でも、自力でOpenTelemetryを設定すれば使えましたがいろいろと面倒ですね。
また、Resilienceの設定が入っています。
具体的にはHttpなどのリトライ設定などです。従来でもリトライ設計はあってたとえば、Httpのリトライ設計、データベースコネクションのリトライ設計などそれぞれのレイヤーごとにリトライ設計があるのでそれぞれ矛盾しないよう整合した形で設計することが求められていました。
きっと、それらがテンプレである程度よき形で入っているという良さがあるのでしょう。

ほか、分散アプリケーションのローカル開発環境対応という話もありますがAspireありきで設計もしくは最初から分散アプリケーションとして設計したアプリをメンテしているということでなければ恩恵は少ないかと思います。

Discussion