Avanade Beef v4 から v5 の変更点について
はじめに
Avanade Beef (以下、Beef) は ASP.NET Core をベースとする Web API の自動生成ツールです。
概要については以下のスライドもご覧ください。
2023/01/26 [1] に v5 がリリースされました。v5 には多くの破壊的変更があります。詳細は以下にまとめられています。
ドキュメント全体を読むのは大変なので、キーとなる箇所について取り上げます。
破壊的変更
最も大きな変更点は、Beef のコア機能の多くが再利用可能なコンポーネントとして分離されたことです。
| コンポーネント | 機能説明 |
|---|---|
| CoreEx | コア機能 (.NET Core拡張) |
| UnitTestEx | テスト機能の拡張 |
| DbEx | データベース管理の拡張 |
| OnRamp | コード生成機能 |
ほとんどの機能はそれぞれに移行したため、Beef 単体はかなりシンプルになりました。
XML ベースのコード生成機能の廃止
XML ベースは廃止され、YAML でのコード生成のみ利用可能になりました。ほとんど使う機会はないと思われるため、影響は少ないです。
自動的なエンティティ スコープ
Beef のビジネス エンティティには 2 種類あり、Business プロジェクトに作成するものと Common プロジェクトに作成するものがあります。これは entityScope パラメーターで指定できましたが、非推奨となりました。
JSON シリアライザーの変更
JSON シリアライザーが抽象化され、特定のライブラリに依存しなくなりました。既定では System.Text.Json が使用されます。
参照データ
参照データの実装が変更されました。
オブジェクトとプロパティのマッピングの変更
マッピングが抽象化され、AutoMapper に依存しなくなりました。IConverter によるカスタム マッピングも可能ですが、逆に AutoMapper の機能を最大限に使っていた場合は不便になる可能性があります。
CancellationToken の追加
非同期メソッドに CancellationToken を渡すパラメーターが追加されました。これは省略可能なので、基本的には影響はありません。
クリーナーの変更
Beef にはクリーナーの機能 (たとえば、文字列の前後の不要なスペースを除去する、日付のタイムゾーンを調整するなど) がありますが、これが既定では無効になりました。有効化するには明示的に YAML に記述する必要があります。
Check クラスの廃止
Beef には null を検出するための Check クラスがありましたが、廃止されました。.NET Core 標準の方法を使用することが推奨されています。
その他の変更点 (抜粋)
YAML ファイル名の変更
新しい機能を使用するには YAML ファイルを *.beef.yaml から *.beef-5.yaml に変更する必要があります。
Clean コマンドの追加
v4 までは自動生成されたコードが不要になったとき、クリーンアップする方法がありませんでしたが、そのための clean コマンドが追加されました。
グローバルな using の使用
テンプレートが global using を含むようになりました。
設定情報クラスの使用
SettingsBase クラスを拡張して設定情報を取得するようになりました。ただし、キー名の書き方が特殊でややわかりづらいです。
おわりに
自分で書くコードにはあまり影響はありませんが、自動生成されるコードには大きな変更が入っているため、その点には注意が必要です。
-
オーストラリアの建国記念日です。Beef を開発しているチームはオーストラリアにあります。 ↩︎
Discussion