Upgrade to Pro — share decks privately, control downloads, hide ads and more …

.NET Night Party@品川

.NET Night Party@品川

2023 年を締めくくる、.NET 開発者による .NET 開発者のための忘年会
https://msdevjp.connpass.com/event/303250/

- もっと話したい & 聞きたい「.NET のここだけの話」
- .NET Conf お楽しみクイズ大会
- .NET 8 ライブコーディング対決!

Takaaki Suzuki

December 20, 2023
Tweet

More Decks by Takaaki Suzuki

Other Decks in Programming

Transcript

  1. 本日の Wi-Fi Event Code:dotnetnight ※[MSFTGUEST] から上記をご入力ください .NET Night Party@品川 2023

    年を締めくくる .NET 開発者による .NET 開発者のための忘年会へようこそ! 森口 理絵 (@Rie_Moriguchi) / Community Program Manager@Microsoft 鈴木 孝明 (@xin9le) / Microsoft MVP for Developer Technologies
  2. 本日のアジェンダ + 注意事項 時間 内容 スピーカー 19:00 Opening - 19:05

    もっと話したい&聞きたい・・・ .NETのここだけの話 .NET Conf 2023 Recap Japan の スピーカー 20:05 .NET Conf お楽しみクイズ大会 全員 20:35 .NET 8ライブコーディング 対決! by Microsoft MVP +マイクロソフト社員 鈴木 孝明 河合 宜文 初音 玲 草場 友光 大田 一希 20:55 Closing/記念撮影 - ✓本日のイベントはオンライン配信/レコーディン グ動画公開を予定していません。そのため 「なるほど!」と思われることがありましたら、 ぜひ X などでご投稿ください。 ハッシュタグ:#dotnetconf ✓終了後に 30 分ほど自由な交流の時間を ご用意しています(任意参加)。今日の 学びを皆さんで一緒に話し合いましょう! ✓ 進行状況によって予定時間を前後する 場合があります。 ✓ 喫煙所はありません。 本日の Wi-Fi - Event Code:dotnetnight ※[MSFTGUEST] から上記をご入力ください
  3. .NET Conf Recap スピーカー/担当セッション 井上 章 千代田 まどか 上坂 貴志

    大田 一希 岩永 信之 鈴木 孝明 日本マイクロソフト株式会社 Senior Cloud Solution Architect Manager Microsoft Corporation Cloud Advocate 日本マイクロソフト株式会社 Azure Technical Specialist 日本マイクロソフト株式会社 Cloud Solution Architect Microsoft MVP for Developer Technologies Microsoft MVP for Developer Technologies Welcome to .NET 8 .NET 8 と Azure OpenAI の 最新アップデート .NET 8 と クラウドネイティブ: 一挙に掴む、必見の開 発エッセンス .NET 8 でのASP.NET Core Blazor の 新機能紹介 開発ツールの最新アップデート セッション本編では語りきれなかったあんなことやこんなこと、他のスピーカーに聞いてみたいこと を “ここだけの話” として皆さんでいろいろ話しましょう!
  4. お楽しみクイズ大会のグランド ルール ✓ 本日お昼に配信した .NET Conf Recap Japan のセッションで解説された 内容の中から

    9 問出題いたします(選択式)。 ✓ 間違えた方はその時点でお座りください。 ✓ 最後まで残った方が優勝!特別な機会をご案内いたします☺
  5. Q1. WCF の開発コード名は? Question A. Avalon B. Indigo C. Longhorn

    WCF のコード名は「Indigo」です。WCF は、Windows Communication Foundation の略称で、Windows アプリ ケーションのためのサービス指向アプリケーションを構築するためのフレームワークです。WCF を使用すると、1 つのサービス エンドポイントから別のサービスエンドポイントに非同期メッセージとしてデータを送信できます。WCF は、Web サービスと Web サービスクライアントを作成するための管理しやすいアプローチを提供するように設計されています。 Windows Communication Foundation とは - WCF | Microsoft Learn
  6. Q2. dotnet コマンドの初期の名称は? Question A. k B. d C. f

    Imran Qadir Baksh (Baloch) Blog - K (dnu), KVM (dnvm), KPM (dnu), KLR, KRE (dnx) in ASP.NET Core
  7. Q3. .NET Aspire リリース予定はいつ? Question A. 2024 年 4 月

    〜 6 月 B. 2024 年 7 月 〜 9 月 C. 2024 年 10 月 〜 12 月
  8. Q3. .NET Aspire リリース予定はいつ? Question A. 2024 年 4 月

    〜 6 月 B. 2024 年 7 月 〜 9 月 C. 2024 年 10 月 〜 12 月 カレンダーイヤー 2024 年の Q2、というアナウンスがあります。それまでに機能がいっぱい追加されそうですね。 .NET Aspire documentation (Preview) | Microsoft Learn
  9. Q4. 次はログ出力するコードです。 さて.NET 8 で追加になったのはどの部分でしょう? Question A. LoggerMessage 属性 B.

    LogProperties 属性 C. アクセス修飾子の付いた partial メソッド D.追加になっていない。コンパイルエラーになる public static partial class MyLogger { [LoggerMessage(1, LogLevel.Information, "DoSomething Message")] public static partial void DoSomething(this ILogger logger, [LogProperties] MyService service); }
  10. Q4. 次はログ出力するコードです。 さて.NET 8 で追加になったのはどの部分でしょう? Question A. LoggerMessage 属性 B.

    LogProperties 属性 C. アクセス修飾子の付いた partial メソッド D.追加になっていない。コンパイルエラーになる public static partial class MyLogger { [LoggerMessage(1, LogLevel.Information, "DoSomething Message")] public static partial void DoSomething(this ILogger logger, [LogProperties] MyService service); } .NET Conf 2023 で紹介された機能です。 インスタンスを渡すことで Public なプロパティをログ出力できるようになりました。便利ですね。 コンパイル時のログ ソース生成 - .NET | Microsoft Learn Behind [LogProperties] and the new telemetry logging source generator (andrewlock.net)
  11. Q5. ASP.NET Core Blazor で .NET 8 で追加された新しいプロジェクトテンプレートは? Question A.

    Blazor Hybrid C. Blazor Web App D. Blazor WebAssembly B. Blazor Server .NET 8 で追加された新しいプロジェクトテンプレートは Blazor Web App です。 このプロジェクトテンプレートで Server、WebAssembly に加えて新しい SSR を統合したアプリケーションの開発が出来ます。 ASP.NET Core Blazor プロジェクトの構造 | Microsoft Learn
  12. Q6. Blazor で初回は Server モードで動いて 2 回目以降 は WebAssembly で動くようにするために設定する

    レンダーモードはどれ? Question A. @rendermode Interactive C. @rendermode InteractiveServer D. @rendermode InteractiveWebAssembly B. @rendermode InteractiveAuto
  13. Q6. Blazor で初回は Server モードで動いて 2 回目以降 は WebAssembly で動くようにするために設定する

    レンダーモードはどれ? Question A. @rendermode Interactive C. @rendermode InteractiveServer D. @rendermode InteractiveWebAssembly B. @rendermode InteractiveAuto @rendermode InteractiveAuto で実行時に自動でレンダリングモードが決まるのは自動 (Auto) なので @rendermode InteractiveAuto になります。 ASP.NET Core Blazor のレンダー モード | Microsoft Learn
  14. Q7. 以下のうち C# 12 の機能ではないものはどれ? Question A. コレクション式 C. ref

    readonly 引数 D. ¥e エスケープ B. プライマリ コンストラクタ
  15. Q7. 以下のうち C# 12 の機能ではないものはどれ? Question A. コレクション式 C. ref

    readonly 引数 D. ¥e エスケープ B. プライマリ コンストラクタ 「¥e エスケープ」は C# の次期バージョンである C# 13 で導入される機能です。 すでに Visual Studio 17.9 Preview 1 に搭載されており、実際に利用することができます。 C# 12 の新機能 - C# ガイド - C# | Microsoft Learn
  16. Q8. プライマリ コンストラクタで Backing Field が 複数できるときのコンパイラ警告はどれ? Question A. CA1304

    「CultureInfo を指定すべし」 C. CS9124 「Backing Field が複数できるからアカンで」 D. IDE0290 「プライマリ コンストラクタが使えるよ」 B. CA2016 「CancellationToken を指定すべし」 コンストラクター宣言に関連するエラーを解決する - C# | Microsoft Learn
  17. Q9. 次のコードで得られる文字列は? Question A. “.NET 8 is cool” B. “Chack

    is super” C. “Love developer” var result = "¥u0098ÞìÊ@ÈÊìÊØÞàÊä"; Console.WriteLine(GetAnswer(result)); string GetAnswer(string result) { var answer = string.Empty; foreach (char c in result) { int asciiValue = (int)c; int shiftedValue = asciiValue >> 1; answer += (char)shiftedValue; } return answer; }
  18. Q9. 次のコードで得られる文字列は? Question A. “.NET 8 is cool” B. “Chack

    is super” C. “Love developer” var result = "¥u0098ÞìÊ@ÈÊìÊØÞàÊä"; Console.WriteLine(GetAnswer(result)); string GetAnswer(string result) { var answer = string.Empty; foreach (char c in result) { int asciiValue = (int)c; int shiftedValue = asciiValue >> 1; answer += (char)shiftedValue; } return answer; }
  19. 本日のライブコーディング プレイヤーの皆さま 鈴木 孝明 (@xin9le) 河合 宜文 (@neuecc) 初音 玲

    (@hatsune_) 草場 友光 (tomo_kusaba) 大田 一希 (@okazuki) Microsoft MVP for Developer Technologies Microsoft MVP for Developer Technologies Microsoft MVP for Windows Development Microsoft MVP for Developer Technologies 日本マイクロソフト株式会社 Cloud Solution Architect
  20. 本家は北陸の C# MVP たち 2014 年から北陸で毎年開催 @Fujiwo (小島 富治雄) @AILight

    (石野 光仁) @RyotaMurohoshi (室星 亮太) @xin9le (鈴木 孝明) de:code 2019 にも出張登壇 NSAT 195 の怪物コンテンツ
  21. 解答例 int[] dice = [1, 2, 3, 4, 5, 6];

    var rolls = Random.Shared.GetItems(dice, 3).Dump(); rolls.Sum().Dump();
  22. 解答例 public sealed class ZonedTimeProvider : TimeProvider { private readonly

    TimeZoneInfo _timeZone; public ZonedTimeProvider(TimeZoneInfo timeZone) : base() => this._timeZone = timeZone; public override TimeZoneInfo LocalTimeZone => this._timeZone; }
  23. 解答例 var timeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); var timeProvider =

    new ZonedTimeProvider(timeZone); var timer = timeProvider.CreateTimer ( callback: static state => { var tp = (ZonedTimeProvider)state!; tp.GetLocalNow().Dump(); }, state: timeProvider, dueTime: TimeSpan.Zero, period: TimeSpan.FromSeconds(1) );
  24. Q3: byte[] data = [1, 2, 3]; を Base64 変換

    ※ Convert.ToBase64String() は利用しないものとする
  25. 解答例 byte[] array1 = [1, 2, 3]; int[] array2 =

    [1, 2, 3]; JsonSerializer.Serialize<ReadOnlyMemory<byte>>(array1); // "AQID" JsonSerializer.Serialize<ReadOnlyMemory<int>>(array2); // [1,2,3] Convert.ToBase64String(array1); // AQID
  26. 参考資料 C# 12.0 の新機能 https://ufcpp.net/study/csharp/cheatsheet/ap_ver12/ What’s new in .NET 8

    https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8 Visual Studio 2022 Release Notes https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-notes