プログラミング C# - 翔ソフトウェア (Sho's)

C#/.NET/ソフトウェア開発など

BuriKaigi 2021 を開催しました

BuriKaigi 2021 | connpass

毎年冬に富山で開催されている BuriKaigi (*)。
COVID-19 の影響で、今回はオンライン開催となりました。

(*) BuriKaigi とは何かということは次に詳しく書かれています: Burikaigi という毎年冬のイベント | hikaruworld | Medium

初のオンライン開催ということで、ノウハウも少なく、果たしていつものように参加していただけるだろうか、盛り上がるだろうか、と心配しておりました。
ところが、定員オーバーの 167名もの方にご参加いただき、大いに盛り上がりました。ありがたいことです。

例年は富山での開催ということでご参加いただけなかった方にも多数ご参加いただけたようで、オンラインならではのメリットもあったようですが、やはり直接皆様にお会いできなかったのは残念でした。
ぜひまたオフラインで開催できるようになることを期待しています。

今回は、ルーム シロエビとルーム ホタルイカの2トラックに分かれて、開催されました。

勉強会後の懇親会でブリしゃぶを食べるのが恒例ですが、今回のブリは、各自氷見の松本魚問屋さんからの取り寄せとなりました。

ブリしゃぶセット

私は、恒例の「C# ドキドキ ライブ コーディング!!」に登壇しましたが、意外にも、いつも通りの楽しいセッションになったようです。
盛り上げてくださった皆さま、ありがとうございました。

また、初めての SpacialChat 懇親会も、意外と楽しめました。
少し話し足りなかったくらいです。

開催概要

BuriKaigi 2021
日時 2021年1月30日(土) 13:00〜18:00 (終了後懇親会)
会場 オンライン - Zoom 使用 (懇親会は: SpacialChatSpacialChat 使用)

イベントの様子

懇親会の様子
BuriKaigi 2021 懇親会の様子

資料

ルームルーム シロエビ
ルーム ホタルイカ

ブログ

Shos.UndoRedoList (undo/redo ができる List と ObservableCollection)

undo/redo ができる List と ObservableCollection を作りました:

※ 使い方は README.md を参照してください。

WPFサンプル アプリもあります。

WPF のサンプル アプリ
WPF のサンプル アプリ

NuGet からインストールできます:

エンジョイ!

Shos.UndoRedoList (List and ObservableCollection which support undo/redo)

I made List and ObservableCollection which support undo/redo:

* See README.md for instructions.

* There is also a sample app for WPF.

Sample app for WPF
Sample app for WPF

You can install this library from NuGet:

Enjoy!

【ライブコーディング】連結リスト LinkedList<T> ‐自作で学ぶコレクションの基礎‐

YouTubexin9le さんとコーディング ライブをやりました。

お題は、C#連結リスト LinkedList<T>

テストを書きながら少しずつ実装していくというものになっています。

Visual StudioLive ShareLive Unit Testing を使い、2人で快適にコーディングすることができました。

「.NET で機械学習/ディープラーニングをやってみよう!」 | MVP パーソナルスポンサー | de:code 2020

デジタル イベントとして開催された de:code 2020 (6月17日 – 7月17日) にMVP パーソナルスポンサーとしてサンプル コードとチュートリアルを提供しました。

【de:code 2020】 Azure Machine Learning Studio と Python と C#/.NET によるディープ ラーニングのサンプル/チュートリアル | GitHub

概要

Azure Machine Learning などで機械学習/ディープラーニングのモデルを作成し、それを .NET の中の ML.NET を利用して使ってみましょう。

チュートリアル形式で説明します。

  1. 話題の TensorFlow を使って機械に学習させよう
  2. Azure Machine Learning を使ってクラウド上で機械学習してみよう
  3. .NET の中の ML.NET を使って学習済みのモデルを使ったアプリケーションを作ってみよう

サンプルコード/ツールの狙い (利用される方にとっての価値)

機械学習/ディープラーニングのモデルを作成するところから、.NET アプリケーションで使うまでの手順を、実際に手を動かしながら学ぶことができます。

Microsoft Build 2020 (2020/05/19-20)

マイクロソフトの最新の技術について、以下のようなオンラインイベントで情報が提供されました。

これらのイベントで公開された/公開予定の技術についてご紹介いたします。

.NET 関連

● One .NET (ひとつの .NET)
○ 現在の .NET

○ 次の .NET

以前から発表されている通り、次の .NET では次のようになります。

"One .NET" ということで、.NET が現在の .NET Core に統合され、.NET 5 となります。

.NET 5 に含まれないもの

ちなみに .NET Framework は 4.8 が最終バージョンです。今後は保守フェーズに入り、機能の新規追加はされなくなります。

.NET Framework のサポート自体は Windows 10 がサポートされている間は続くと思われます。

将来性から考えると、新規に .NET で開発する場合は、.NET Core を用いるべきだと考えられます。

.NET のロードマップ

上記のとおり、現在ある .NET Framework、.NET Core、Xamarin は一つの .NET に統合されます。

但し、2020 年 11 月の .NET 5 リリース時点では Xamarin の統合はプレビュー扱いです。

.NET 6 で完全に統合される見込みです。

.NET 6 は LTS (Long term support: 長期サポート) 版となる予定なので、新規開発に利用するのは、.NET 6 からが無難かも知れません。

● 新たなマルチプラットフォーム アプリケーション開発方法

Microsoft は既に Windows への囲い込みを行っていませんので、新たな開発方法としては Windows 以外の OS もサポートするマルチ プラットフォームなものを提供していくことになります。

注目すべきは、以下の二つです。

  • MAUI (Multi-platform App UI)
  • Blazor

将来的にはどちらもネイティブアプリケーションも開発できるものですが、MAUI は従来の Windows アプリケーション開発技術の延長にある技術、Blazor は Web アプリケーション開発技術の延長にあり、とりあえずは Web 開発用です。

ひとつずつ説明します。

○ MAUI (Multi-platform App UI)

MAUI というアプリケーション開発技術が発表されました。

MAUI の特徴は次の通りです :

XAML (Extensible Application Markup Language):

  • WPF や UWP、Xamarin Forms の UI 記述用言語
  • 今までは、XAMLWPF や UWP、Xamarin Forms で統一されていなかった
○ Blazor

現在すでに Blazor Server という、C# だけで Web アプリケーションが開発できるサーバーサイド技術が .NET で使用できますが、この技術が拡張され、Web アプリケーションだけでなくネイティブアプリケーションも作成できるようになることが予定されています。

Blazor の特徴は次のとおりです:

  • Web 技術の延長
  • 全体を C#/.NET で開発
  • UI は Razor (ASP.NET MVC の UI 言語) ベース

今回新たにリリースされたのは、Blazor WebAssembly 3.2.0 (GA) です。

近い将来この Blazor が拡張され、ネイティブ アプリケーション (Web アプリケーションでない Windows アプリケーション/Mac アプリ /iOS アプリ/Android アプリ) も作れるようになります。

  • Blazor Server (既存)
    • サーバーサイドを C# で記述。 ASP.NET WebForms に置き換わるものとされる。
    • クライアントサイドとは、SignalR で通信し、リアルタイムに同期をとる。
  • Blazor WebAssembly (今回リリース)
    • Blazor Server と違い、クライアントサイドで C# が動作する Web アプリケーションを作成できる
    • クライアント サイドのプログラムを JavaScript ではなく、C# で記述。
    • クライアント サイド (Web ブラウザー) 上で、WebAssembly の .NET が動作する
  • Blazor PWA (Progressive Web Application) (将来)
    • Web アプリケーションが単独のアプリケーションとして動作する
  • Blazor Hybrid (将来)
    • Electron や WebView を用いてデスクトップアプリケーションを開発
  • Blazor Native (将来)
    • ネイティブアプリケーションを開発
○ 参考
● 新たな Windows アプリケーション開発方法

新たな Windows アプリケーション ライブラリーとして WinUI 3 が発表になりました。

  • WinUI 3 Preview 1
    • UWP と Win32 アプリケーションをサポート
    • C/C++、.NET 5、WebView2、Fluent Design Controls に対応

■ 開発ツール関連

GitHub Codespaces/Visual Studio Codespaces

以下が発表されました:

  • GitHub Codespaces
  • Visual Studio Codespaces

Web 版 (クラウド版) の Visual Studio Code/Visual Studio です。

Visual Studio Codespaces は、以前 Visual Studio Online と呼ばれていたものです。

ネイティブアプリケーションだった Office が Web 版になり、Microsoft 365 になったように、様々なツールがクラウド版になっていきます。

Visual Studio
  • Visual Studio 2019 の 16.6 と 16.7 Preview 1 が公開されました。
  • Live Share でボイスチャットがサポートされます。
  • Windows Forms Designer for .NET Core がリリースされました。
  • Surface Duo (2 画面) の開発なども行えるようになってきました。
  • ML.NET 開発用の Model Builder が組み込まれました。
○ 参考
C# 9.0

C# 9.0 が発表されました。

○ 参考

■ Azure 関連

○ Azure

Serverless や AI/Data などを中心にアップデートされています。

  • Windows Server コンテナー
  • Private Link
  • Spot VM
○ Data 関連
  • Cosmos DB

Free Tier

AutoScale

Azure Synapse Link: データベース分析サービス

○ ML 関連
  • Cognitive Services
    • Personalizer
    • Speech Voice
  • Azure Machine Learning
    • AutoML 周り
    • Responsible ML
    • AI スーパー コンピューターの発表
○ 参考

■ Power Platform/Microsoft 365

○ Power Platform

Power Apps や Power Automate、Power BI、Dynamics 365、Microsoft 365 の新たな統合機能の発表

Microsoft 365 (旧名 : Office 365)

Microsoft Teams の多数のアップデートの予定が発表

Windows 関連

○ Terminal

Windows Terminal 1.0

次のような機能があります。

Microsoft Store からインストールできます。

  • タブ機能

タブごとに Windows Subsystem for LinuxコマンドプロンプトPowerShell など

タブの内部をペインに分割する機能

○ WSL2

WSL は、Windows に組み込まれた virtual な Linux 環境です。

Microsoft Store からインストールできます。

WSL2 で新たに GPU がサポートされます。 CUDA 利用できたり、GPU 版 Tensorfow が動作できたりします。

○ パッケージ マネージャー

winget という Windows Package Manager (Preview 版) がリリースされました。

Linux のようにコマンド ラインから簡単にアプリケーションなどがインストールできます。

参考:Windows Package Manager Preview | Windows Command Line

API

Project Reunion というプロジェクトが発表されました。

WindowsAPI は現在次のように 2 つ ありますが、これを統合しようというプロジェクトです。

■ 関連サイト

C#の新機能勉強会 ~C#7、8の新機能を活用して速く安全なプログラムを書こう~

C#の新機能勉強会 ~C#7、8の新機能を活用して速く安全なプログラムを書こう~」の資料をアップした。

C#7、8 では、struct (値型) 関連の便利な機能追加が多いので、その辺りに注力してみた。

資料

参考資料