💻

Avanade Beef v4 から v5 の変更点について

2023/04/11に公開

はじめに

Avanade Beef (以下、Beef) は ASP.NET Core をベースとする Web API の自動生成ツールです。

https://github.com/Avanade/Beef

概要については以下のスライドもご覧ください。

2023/01/26 [1] に v5 がリリースされました。v5 については多くの破壊的変更があります。詳細は以下にまとめられています。

https://github.com/Avanade/Beef/blob/master/docs/Upgrade-v4-to-v5.md

ドキュメントを全部読むのは大変なのでキーとなる箇所について取り上げたいと思います。

破壊的変更

最も大きな変更点としては、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 クラスを拡張して設定情報を取得するようになりました。ただキー名の書き方が特殊で微妙かもしれません。

おわりに

自前で書くコードにはあまり影響が入ることはないようですが、自動生成されるコードには大きな変更が入っているので、そのあたりは気を付ける必要があります。

脚注
  1. オーストラリアの建国記念日だそうです。Beef を開発しているチームはオーストラリアです。 ↩︎

Discussion