こんにちは、オルターブースエンジニアのはっしーです!
この間2025年が明けたかと思ったらもう1か月が経過しようとしていますね。 みなさんは今年の目標は立てましたか?
私は以下のように目標を設定したので達成できるように頑張っていこうと思います!
Microsoft 資格取得:5個/年 ブログを書く:12本/年 コミュニティでハンズオンイベントをする:3回/年 アウェイなイベントで登壇する:1回/年
さて、今回は .NET Conf 2024 Fukuoka x Osaka に参加して登壇させていただいたので紹介したいと思います。
.NET Conf 2024 Fukuoka x Osaka とは?
.NET Conf 2024 Fukuoka x Osakaは、グローバルイベント.NET Conf 2024のローカルイベントとして、福岡と大阪のコミュニティ合同で開催されました。
イベントでは、日本マイクロソフト株式会社 井上 章さんの「.NET 最新アップデート ~ AI とクラウド時代のアプリモダナイゼーション(キーノート)」をはじめとして、.NET 9の新機能やAzure Functionsの統合方法、BlazorとAIの活用法などが紹介され、懇親会も行われました。
.NET Conf 2024 Fukuoka x Osaka - connpass
登壇内容について
私は30分のセッション枠をいただいたので「ASP.NET Core の OpenAPIサポート」という内容で登壇をしてきました。
登壇資料についてはSpeaker Deckで公開していますので、よければご覧ください。
内容については.NET Conf 2024で以下のセッションを見て、ASP.NET CoreとOpenAPIについて改めて自分なりに整理したいと思い決めました。
最新のASP.NET Core のプロジェクトテンプレートと過去のプロジェクトテンプレートを比較しながら最新のOpenAPIサポートについての情報をお届けできたかと思います。
登壇してみた感想
登壇にあたり調べる過程で自分の中でもASP.NET CoreとOpenAPIについて整理できたよい機会でした。
また、セッションの中で触れていた最新のテンプレートにSwaggerUIを導入する方法について参加されていたMicrosoft MVPの方からより良い方法のフィードバックもいただき、より理解を深めることができました。
フィードバックいただいた内容を簡単に紹介します。
当初セッションでは以下のドキュメントを参考にProgram.csでSwaggerUIをプロジェクトに追加していました。
Swashbuckle と ASP.NET Core の概要 | Microsoft Learn
public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddAuthorization(); // Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi builder.Services.AddOpenApi(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.MapOpenApi(); app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.UseAuthorization(); // 省略 }
ただ、上記の方法ではAddOpenApi()でサービスを登録し、MapOpenApi()でドキュメントを生成しています。 しかし、その後にSwashbuckleを使って再度ドキュメントを生成しているため、同じドキュメントが二重に作成されてしまいます。
そこで、ドキュメントの生成はMicrosoft.AspNetCore.OpenApiに任せ、UIの部分だけをSwashbuckleやScalarで処理するのが良いとフィードバックをいただきました。
参考にするドキュメントは以下です。 生成された OpenAPI ドキュメントを使用する | Microsoft Learn
public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddAuthorization(); // Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi builder.Services.AddOpenApi(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { // ドキュメント生成のエンドポイントを追加 app.MapOpenApi(); // 先ほど登録した OpenAPI ルートを参照して // swagger-ui ミドルウェアを有効にします。 app.UseSwaggerUI(options => { options.SwaggerEndpoint("/openapi/v1.json", "v1"); }); } app.UseHttpsRedirection(); app.UseAuthorization(); // 省略 }
まとめ
さまざまな角度の.NETに関する情報を得ることができ、とても貴重なイベントでした。 また、登壇したことにより、フィードバックをいただけ、より理解を深められました。 .NETについて知見を深め、また次の機会により良い情報を提供できるように楽しみながら励みたいと思います。
最後まで読んでいただきありがとうございました。
サービス一覧 www.alterbooth.com cloudpointer.tech www.alterbooth.com