Better Engineer Life

記事を頻繁に書き直す性格なのでごめんなさい。

.NET Conf 2018に参加して勉強したメモ

csugjp.connpass.com

 

私が聞いて学んだことをメモ。発表していただいた方々に感謝。

【キーノート】「.NET の今とミライ」

 スライドが公開されています。

www.slideshare.net

 

 仕事では、どうしても古いアーキテクチャで開発する必要があり、.NET Coreについては1.0の頃に一度試してまだまだこれからかなと思ってました。

 それからキャッチアップをやってなかったのですが、この講演で最先端の.NETについて知ることができました。

 

Blazor

 Blazorという言葉は聞いていて、調べたことがあったのですが、全くわからず放置していたのですが、今回のわかりやすい説明で理解することができました。

  • Browser + Razor = Blazor
  • すべてのブラウザで動作
  • WebAssemblyとして実装

 実際にdllをクライアントに落としてきて、そのdllを使ってプログラムを動かすという仕組み。Chromeを使って実演されていたのだが、本当にdllをダウンロードしてくるので、なんか不思議。

 私がjavaScriptを書きたくない人なので、うってつけの技術。

 

Server Side Blazor

 Blazorのようにdllをクライアントに落とさず、サーバーサイドで処理してWebSocketでSignalRの結果をやり取りするというもの。

 

.NET Core 3.0

 WPFとWinFormsに対応するというもの。

 未だに仕事もプライベートも.NET Frameworkですが、これが出ると.NET Coreに切り替えたくなる個人的にはかなり大きなポイントだと見ています。

 Visual Studioでもビルドとデバッグはサポートしているが、デザイナーはまだ実装が済んでいないとのことでした。

機械学習について

チャックさんが「機械学習やりなさいと無茶ぶりされてませんか」というくだりで安心。

確かに難しいです。それをCognitive ServiceとしてAzureで提供されています。

Docker

チャックさんの説明を聞いていると、Dockerについても勉強する必要があるかなとは思いました。

 

しばやん・チャックの激論 ASP.NET / ASP.NET Core

こちらもスライドを公開されています。ありがたいです。

speakerdeck.com

 

Blazorについては激論でした。

 

HTTP REPL CLI

Web APIを実行できるCLIベースのツール。

HTTP-REPL Tool to test WEB API in ASP.NET Core 2.2

上記サイトを見たところ、なるほど。使ってはみたい。

ですが、私はCLIに対して抵抗あるから、使ってすぐ飽きるかも。

Visual Studio 2019 / C#8.0

中でも注目は、Nullable Reference Typesとのこと。

調べたところ、下記などの記事で紹介されています。自分としてはこの仕組みになって実装したらどうなるか、想像がついていきません。

Essential .NET - C# 8.0 と Null 許容参照型

 

.NET Framework 4.8 / .NET Core 3.0

.NET Frameworkについては新たな機能追加はされないとのこと。

なのでここらが.NET Coreへの切り替え時なのかなと。

SelfContainedAppでUSBを挿せば環境関係なく動くというもの。それこそ今、仕事で3.5前提のアプリを.Net Framework2.0で動かさなくならなくなった!というトラブルが発生したので、そういうこともなくなっていけばいいなーと。

.NET Core アプリケーション展開 | Microsoft Docs

 

Azure Pipeline

公開リポジトリならば無料で10並列まで実行。時間無制限。

要はGitHubで公開しているソースならば無料で使えるということ。かなりの大盤振る舞い。

自分のGitHubのソースで試してみようかな。

 

継続的にテスト可能な設計を考える

www.slideshare.net

 

仕事でもプライベートでもテストコードは書きますが、目から鱗なお話でした。

  1. インターフェース経由でやりとりしてテスタブルにする
  2. インターフェースをリポジトリではなくビジネスロジックの文脈で定義する

この流れは、(なるほど!)と唸りました。

すべてのコードを同じレベルではなく、テスト戦略を立て、効率的なテストコードを書くという結論も現実的には全てテストコードでカバーできるわけないから確かにそうだよなと納得。