Slide 1

Slide 1 text

本日の Wi-Fi Event Code:dotnetnight ※[MSFTGUEST] から上記をご入力ください .NET Night Party@品川 2023 年を締めくくる .NET 開発者による .NET 開発者のための忘年会へようこそ! 森口 理絵 (@Rie_Moriguchi) / Community Program Manager@Microsoft 鈴木 孝明 (@xin9le) / Microsoft MVP for Developer Technologies

Slide 2

Slide 2 text

本日のアジェンダ + 注意事項 時間 内容 スピーカー 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] から上記をご入力ください

Slide 3

Slide 3 text

もっと話したい & 聞きたい・・・ .NET のここだけの話 .NET Conf 2023 Recap Japan のスピーカー

Slide 4

Slide 4 text

.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 の 新機能紹介 開発ツールの最新アップデート セッション本編では語りきれなかったあんなことやこんなこと、他のスピーカーに聞いてみたいこと を “ここだけの話” として皆さんでいろいろ話しましょう!

Slide 5

Slide 5 text

.NET Conf お楽しみクイズ大会 会場の皆さまご起立ください!

Slide 6

Slide 6 text

お楽しみクイズ大会のグランド ルール ✓ 本日お昼に配信した .NET Conf Recap Japan のセッションで解説された 内容の中から 9 問出題いたします(選択式)。 ✓ 間違えた方はその時点でお座りください。 ✓ 最後まで残った方が優勝!特別な機会をご案内いたします☺

Slide 7

Slide 7 text

Q1. WCF の開発コード名は? Question A. Avalon B. Indigo C. Longhorn

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Q2. dotnet コマンドの初期の名称は? Question A. k B. d C. f

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Q3. .NET Aspire リリース予定はいつ? Question A. 2024 年 4 月 〜 6 月 B. 2024 年 7 月 〜 9 月 C. 2024 年 10 月 〜 12 月 カレンダーイヤー 2024 年の Q2、というアナウンスがあります。それまでに機能がいっぱい追加されそうですね。 .NET Aspire documentation (Preview) | Microsoft Learn

Slide 13

Slide 13 text

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); }

Slide 14

Slide 14 text

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)

Slide 15

Slide 15 text

Q5. ASP.NET Core Blazor で .NET 8 で追加された新しいプロジェクトテンプレートは? Question A. Blazor Hybrid C. Blazor Web App D. Blazor WebAssembly B. Blazor Server

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Q8. プライマリ コンストラクタで Backing Field が 複数できるときのコンパイラ警告はどれ? Question A. CA1304 C. CS9124 D. IDE0290 B. CA2016

Slide 22

Slide 22 text

Q8. プライマリ コンストラクタで Backing Field が 複数できるときのコンパイラ警告はどれ? Question A. CA1304 「CultureInfo を指定すべし」 C. CS9124 「Backing Field が複数できるからアカンで」 D. IDE0290 「プライマリ コンストラクタが使えるよ」 B. CA2016 「CancellationToken を指定すべし」 コンストラクター宣言に関連するエラーを解決する - C# | Microsoft Learn

Slide 23

Slide 23 text

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; }

Slide 24

Slide 24 text

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; }

Slide 25

Slide 25 text

.NET 8 ライブコーディング対決! Microsoft MVP + マイクロソフト社員が 熱いバトルを繰り広げます

Slide 26

Slide 26 text

本日のライブコーディング プレイヤーの皆さま 鈴木 孝明 (@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

Slide 27

Slide 27 text

本家は北陸の C# MVP たち 2014 年から北陸で毎年開催 @Fujiwo (小島 富治雄) @AILight (石野 光仁) @RyotaMurohoshi (室星 亮太) @xin9le (鈴木 孝明) de:code 2019 にも出張登壇 NSAT 195 の怪物コンテンツ

Slide 28

Slide 28 text

会場のみなさんで 作るセッションです ヤジ歓迎!ツッコミ歓迎!

Slide 29

Slide 29 text

Q1: サイコロを 3 回振り それぞれの目と合計値を表示 こんなん誰でもできるやろ(jk っていう warm up 問題です☆(ゝω・)vキャピ

Slide 30

Slide 30 text

解答例 int[] dice = [1, 2, 3, 4, 5, 6]; var rolls = Random.Shared.GetItems(dice, 3).Dump(); rolls.Sum().Dump();

Slide 31

Slide 31 text

Q2: 1 秒ごとに シアトル時間を表示 どうやっても書けそうだけど .NET 8 のイベントですしね?ね?

Slide 32

Slide 32 text

解答例 public sealed class ZonedTimeProvider : TimeProvider { private readonly TimeZoneInfo _timeZone; public ZonedTimeProvider(TimeZoneInfo timeZone) : base() => this._timeZone = timeZone; public override TimeZoneInfo LocalTimeZone => this._timeZone; }

Slide 33

Slide 33 text

解答例 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) );

Slide 34

Slide 34 text

Q3: byte[] data = [1, 2, 3]; を Base64 変換 ※ Convert.ToBase64String() は利用しないものとする

Slide 35

Slide 35 text

解答例 byte[] array1 = [1, 2, 3]; int[] array2 = [1, 2, 3]; JsonSerializer.Serialize>(array1); // "AQID" JsonSerializer.Serialize>(array2); // [1,2,3] Convert.ToBase64String(array1); // AQID

Slide 36

Slide 36 text

参考資料 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

Slide 37

Slide 37 text

Closing 楽しい時間が過ぎるのはあっという間ですね・・・ お顔出しできる方は一緒に記念撮影しましょう!

Slide 38

Slide 38 text

Download .NET 8 https://aka.ms/get-dotnet-8