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

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

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 (値型) 関連の便利な機能追加が多いので、その辺りに注力してみた。

資料

参考資料

BuriKaigi 2020 が開催されました

毎年冬に富山で開催されている BuriKaigi (*)。
今回も、90名もの方にご参加いただき、大いに盛り上がりました。

昨年までは2トラックでしたが、今回は3トラックになりました (ルームA, B, C)。
リンクなどをまとめておきます。

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

開催概要

BuriKaigi 2020
日時 2020年2月1日(土) 13:00〜19:00 (終了後懇親会)
会場 富山県民会館 (懇親会会場: 割烹 扇)

イベントの様子

資料

ルームA
ルームB
ルームC
LT

写真・ビデオ

ブログ