.NET Conf in Tokyo 2019に参加してきました #dotnetconf

f:id:orangeclover:20191119214932p:plain

2019/10/27(日)に開催された .NET Conf in Tokyo 2019の参加レポートです。遅っ
危うく前日の10/26(土)に品川に行くところだった。
.NET関連は初めて参加した。
.NET Core 3.0だからLinux中心か?と思ってたぐらい.NETは疎い。
Visual Studio 2019と.NET Core 3.0が普通の組み合わせなのね。






What’s New in .NET Core 3.0 and Visual Studio 2019 for .NET developers

Steve Carroll

資料

.NET Growth Continues

f:id:orangeclover:20191119215632p:plain

スポンサー

.NET FoundationのコーポレートスポンサーにAWSが参加

Miscroservice

f:id:orangeclover:20191119215829p:plain

ASP.NET Core 3.0

f:id:orangeclover:20191119215907p:plain - gRPC
- Woker Service
- WebAPI + Identity

C#8.0

f:id:orangeclover:20191119215929p:plain

  • null許容参照型
  • 非同期ストリーム
  • 範囲アクセス
  • パターン ベースな using
  • readonly 関数メンバー?
  • using ステートメントの改善

Xamarin

f:id:orangeclover:20191119220012p:plain

Blazor

f:id:orangeclover:20191119220035p:plain

ML.NET

f:id:orangeclover:20191119220054p:plain

.NET 5

f:id:orangeclover:20191119220113p:plain .NET Framework、.NET Core、Xamarinと3つに別れていたランタイムとライブラリが.NETで一本化する

.NET Schedule

f:id:orangeclover:20191119220130p:plain

バージョン リリース予定 LTS
.NET Core 3.1 Dec 2019 LTS
.NET 5.0 Nov 2020
.NET 6.0 2021 LTS
.NET 7.0 2022
.NET 8.0 2023 LTS

.NET Core 3.1が2019/11から2019/12に延びたらしい。 2年ごとの偶数バージョンがLTSになるのね。

Visual Studio 2019 for .NET devs

  • Visual StudioとVisual Sutdio Code で Live Share
    • ソース画面の共有
    • 定義元へのジャンプ
    • co-editing
    • co-debugging

Viusal StudioとVisual Studio CodeでLive Shareで共有。

将来Language Srever Protocolのように、エディタ、IDEで跨って共有できるようにプロトコルが できたら面白いんだけどな。

Code fixes and refactorings

configure

Visual Studioのデモを生で見たの初めてだ。 動かしてるのを見るとそうやって使うのねと感心する。





.NET の今と今後に思うこと (Tokyo Ver.)

Akira Inoue (@chack411)

資料

Windows DNA?

https://www.itmedia.co.jp/help/howto/win/win2000/0007special/complus_vb/chap1/08.html

.NET Frameworkが出る2002年よりも前。com中心の世界。

One ASP.NET

コンパクトにプラがブルにOSに依存しないようにする流れ

.NET オープンソースの道のり

.NET foundation

  • 今年はawsがコーポレートスポンサーとして参加

.NET Application Models(.NET Core 3.0)

.NET Framework の今後について

  • .NET Framework 4.8が最後のメジャーバージョンとなる予定 マイナーバージョンは変わる可能性はある。
  • サポートライフサイクルポリシーの変更はなし インストール先のWindows OSと同じライフサイクルポリシーと同じ
  • .NET Coreが主流となってきた
  • 既存は、.NET Frameworkベースはそのまま利用可能
  • 新規開発の場合は.NET Coreを推奨

Visual Studio App Center for .NET Core 3.0 Windows Apps

WPF、Win Fromsなどデスクトップアプリの機能は停滞していた。 裏では、.NET Core側へ移行していた

  • App Center
    App Centerで配布用のアプリの作成、配布できる 配布対象グループの人にメールが届き、使う人は、App Centerからダウンロードして、インストールできる

  • WPF、Win Formsでcraashレポート、テレメトリーがとれるようになった。
    実行環境、バージョンなどが取れるようになった

Windows Forms とWPFオープンソースモメンタム

プルリクが増加、今まで見えなかったバグの見るかと対応の速さもOSS化もメリット

APS.NET Core 3.0 Blazor

ブレザー

  • C#で作ったWebAssemblyをブラウザで動作させる
  • JavaScript(Angular、React、Vue)を知らなくてもOK
  • 全部C#で作れる
  • rezor構文

  • 2種類

    • Blazor サーバアプリ

      • サーバサイド

      • 拡張子.razorでcssとは分ける

      • .NETのアセンブリとしてコンパイルされる
      • フロント側の処理としてはJavaScriptは存在してる(ユーザーが書く訳ではない)
      • サーバとブラウザがWebSocketでやり取り
      • Visual Stduioでデバッグできる
      • 再利用したいものはRazorのライブラリでコンポーネント化しておく
    • Blazor WebAssembly App(2020/5予定)

      • Visual Stduioでデバッグできない、ブラウザのデバッガー

Programinng

アルゴリズムと入力から答えを求める

Machine Learnig

答えと入力からアルゴリズムを求める

APIを使うように機械学習を使う

ML.NET

  • ML.NET Model Builder
  • AutoMLである程度最適なアルゴリズムを検出してくれる
  • 生成されたモデルもzip形式でアプリケーションに組み込まれる
  • 例 感情分析

Introducing .NET 5

  • 別れていた実装部分を統一
  • .NET Core/Xamarionのアプリケーションモデルは全サポート
  • .NET Frameworkからは.NET 5では含まれないアプリケーションモデルもある
    • APS.NET Web Forms→Blazorへ置き換え
    • WCF → gRPC へ置き換え
    • WF → Open Soure core workflow for windows workflowへ置き換え

.NET スケジュール

  • .NET Core 3.1 Dec 2019

NovからDecにずれ込んでいる

まとめ

  • この10年はクラウド革新・・・今後は?

  • 技術を塩漬けするリスクと最新技術を使う意味

    • 今使えるから塩漬けすると、5年後、10年後にアップデートすると大変
    • 常に最新化するも大変だが、CI/CD/DevOpsの環境を整えて、最新化していく 最低でもLTS版でアップデートする 10年後も最新版を保っていく
  • .NETを使い続けたいなら"今"に目を向けよう
    .NETOSS、コミュニティベースで開発している、開発に参加することで、エコシステムがより盛り上がる

Life runs on Code
It's agrate time to be .NET Developer





.NET Core 3.0 + Windows 10 で WPF 開発

Kazuki Ota (@okazuki)

資料

今日のゴール

  • 最新WPFの状況把握
  • Windows 10 + WPFで開発できること

WPF

  • Windows Presentation Foudation
  • 3.0から登場
  • イマイチ流行った印象がない
  • WinFormsが強い
  • Visual StudioWPFで作られている
  • XAMLベース
  • 見た目を柔軟にいじれる

.NETの今後 WPF的には

  • .NET Frameworkで今後考えられること
    • 対応しないライブラリの登場
    • C#の最新言語仕様に対応しきれない

.NET Coreへいくメリット

  • ランタイム込みでデプロイにも対応(バージョン問題を解決できる)
  • シングルバイナリ(EXE)での提供

.NET Coreへいくデメリット

  • サポートライフサイクルが短い
  • Windows組み込みではないので、ランタイムの更新は考えないと行けない セキュリティアップデートなど

.NET Frameworkから.NET Coreへ移行

移行ドキュメントを読め

.NET Frameworkからの移行時の苦しみ

Windows 10対応

Windows 10のAPIも呼べる

  • Microsoft.Windows.SDK.Contracts Packageをインストールすれば可能
  • 以前に比べて格段に楽にできる

サポートされているWindows 10 API

  • すべてのWindows 10 APIをサポートしてるわけではない
  • リストが確認できる

  • サポートされているAPI

    • DualApiPartitionAttributeがついているAPI
    • Windows 10 のMSIX形式に固めたアプリだけで使えるAPI

MSIX

Visual Sutdioにパッケージ化する機能がある Windowsアプリケーションパッケージプロジェクト

更新

  • 次回起動時にチェックして、次々回時に更新するのがデフォルトの設定
  • 更新しないと起動しないようにも設定できる

XMAL Islands

https://docs.microsoft.com/ja-jp/windows/apps/desktop/modernize/xaml-islands

参考

https://github.com/dotnet-presentations/dotnetconf2019/blob/master/Technical/Modernizing%20.NET%20Desktop%20Applications%20with%20.NET%20Core.pptx





Inside FastEnum

Takaaki Suzuki (@xin9le)

資料

高速化

速いものを使う

Enum is too late

FastEnum の方が20万倍〜30万倍速い

Static Type Caching

  • 静的コンスタラクタ 一度だけ動くことが保証されるので、排他不要

Unsafe.As

同じメモリ領域を別の型で参照することができる Cのポインターのキャストみたいだな。

感想

性能改善はナノ秒のオーダーなのか。恐れ入りました。 いつか言ってみたいセリフ。 「会社ではなく世界に貢献しているです。」 「早すぎて測定できない」





C# 8.0 非同期ストリーム

Nobuyuki Iwanaga (@ufcpp)

資料

  • C# 8.0 非同期ストリーム

非同期ストリーム

C# 8.0の残りの大物が非同期ストリーム。それを今日説明する。
「複数のデータ」という点が非同期メソッドから非同期ストリームへの変更点

  • awaitとyieldの混在:複数のデータを非同期に返す
  • await foreach:複数のデータを非同期に受け取る

非同期ストリームの例 gRPC

C# 8.0の言語構文・ライブラリ的な説明

  • 非同期メソッドの拡張
    • awaitとyieldの混在
    • async修飾子を付ける
    • 戻り値はIAsyncEnumerable
  • 非同期foreach
    • await foreach (var x in asyncStream)
    • IAsyncEnumerable (と同じ名前のメソッドを持つ型)を受け付ける
  • (おまけで)非同期using
    • await using (var x = asyncResource)
    • IAsyncDisposable (と同じ名前のメソッドを持つ型)を受け付ける

要求されるフレームワーク

  • .NET Standard2.1/.NET 3.0では標準提供 最近のMSの方針としては基本的に古いバージョンへのバックポートはしない。 非同期ストリームだけは例外。下位バージョンにもNuGetパッケージで提供

Task周りの歴史

Taskクラス初期導入から非同期ストリームまでC#がおかれている当時の 背景も踏まえての説明。





Unity Trackの資料

Clean Architecture for Unity

https://www.slideshare.net/monry84/clean-architecture-for-unity

MagicOnion〜C#でゲームサーバを開発しよう〜

https://www.slideshare.net/torisoup/magiconionc

Riderはいいぞ!

https://speakerdeck.com/ryotamurohoshi/riderhaiizo

C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜

https://learning.unity3d.jp/3973/
講演動画もあり。





他の方の感想・まとめ

登壇者ブログ

参加者グログ

Twtiterまとめ

https://togetter.com/li/1422801