SlideShare a Scribd company logo
1 of 37
.NET Core 3.0時代の
デスクトップアプリ開発戦略を考える
Desktop App Dev Strategy for .NET Core 3.0
Atsushi Nakamura
About Me
Copyright 2019 @nuits_jp Slide 2
中村 充志 / Atsushi Nakamura
• リコージャパン株式会社 金融事業部所属
• Enterprise系SIerのITアーキテクト
• 最近はもっぱらC#er
• アプリケーションアーキテクチャを試行錯誤するのが趣味
• Blog http://www.nuits.jp
• Blog(英語) https://blog.nuits.jp
• Twitter @nuits_jp
.NET Core 使ってますか?
Copyright 2019 @nuits_jp Slide 3
.NET Core 3.0でWPFを動かしてみましたか?
Copyright 2019 @nuits_jp Slide 4
Desktop App Dev Strategy for .NET Core 3.0
Overview
Overview
Slide 6Copyright 2019 @nuits_jp
本日は主に次の二つについて、お話ししたいと思います。
1. デスクトップ アプリを.NET Coreで開発するモチベーションとは?
2. 実業務アプリを実際に.NET CoreにLive Migration
Desktop App Dev Strategy for .NET Core 3.0
おねがい
ライブ マイグレーション対象は、実業務で利用しているものです。
そこだけは撮影をご遠慮ください。
おねがい
Desktop App Dev Strategy for .NET Core 3.0
.NET Coreでデスクトップアプリを開発するモチベーションとは?
.NET Coreでデスクトップアプリを開発するモチベーションとは?
1. .NET Core 3.0におけるWinForms・WPFのサポート
2. 開発の中心が.NET Coreへシフト
3. 魅力的な.NET Coreの特徴
デスクトップ アプリを.NET Coreで開発するモチベーションとは?
1. .NET Core 3.0におけるWinForms・WPFのサポート
2. 開発の中心が.NET Coreへシフト
3. 魅力的な.NET Coreの特徴
開発の中心が.NET Coreへシフト
• 開発の中心はすでに.NET Coreへシフト
• .NET Frameworkへのポーティングは後方互換性確保が困難ではない
範囲に限定されつつある
• C#8.0の適用が.NET Frameworkへは部分的になっている
• .NET Frameworkは5.xはもう出ない噂も?
• クラウドは.NET Core一択では?
Copyright 2019 @nuits_jp Slide 12
デスクトップ アプリを.NET Coreで開発するモチベーションとは?
1. .NET Core 3.0におけるWinForms・WPFのサポート
2. 開発の中心が.NET Coreへシフト
3. 魅力的な.NET Coreの特徴
魅力的な.NET Coreの特徴
• Side by Sideの復活
• Runtimeを同梱して配布可能(たったの60Mぽっち)
• 軽快な動作速度を含む、先進的な機能の採用
ついに.NET Framework 4.0とおさらばだ!(某金融向SIer)
.NET Framework 3.5で頑張らないでいいんですね!涙(某金融向SIer)
Copyright 2019 @nuits_jp Slide 14
で、.NETCoreでWPFって現実的なの?
Copyright 2019 @nuits_jp Slide 15
Desktop App Dev Strategy for .NET Core 3.0
.NET Framework → .NET Core Live Migration
Live Migration Menu
• 単純なWPFアプリをMigrationして基本を確認
• 実業務レベルのWPFアプリをMigrationして勘所を整理
Copyright 2019 @nuits_jp Slide 17
Let’s Migration!
Copyright 2019 @nuits_jp Slide 18
最もシンプルなMigration
1. .csprojを.NET Core形式に修正
2. AssemblyInfo.csを削除
3. ビルド時にコピーする設定をしていたファ
イルなどを再設定するのを忘れずに
Copyright 2019 @nuits_jp Slide 19
実業務レベルのアプリをMigration
Copyright 2019 @nuits_jp Slide 20
対象アプリの特徴
• .NET Framework 4.5.2
• ビルドしたDLLの編集あり〼(PropertyChanged.Fody)
• 大き目な.NET Framework製のサードパーティライブラリあり
• TWAIN制御あり(.NET→COM→Win32 API、32bit driver)
• System.Drawing.Bitmapに依存(つまりGDI+に依存)
Copyright 2019 @nuits_jp Slide 21
Let’s Migration!
Copyright 2019 @nuits_jp Slide 22
Point 1
• .NET Framework 4.5.2
• ビルドしたDLLの編集あり〼(PropertyChanged.Fody)
• 大き目な.NET Framework製のサードパーティライブラリあり
• TWAIN制御あり(.NET→COM→Win32 API、32bit driver)
• System.Drawing.Bitmapに依存(つまりGDI+に依存)
Copyright 2019 @nuits_jp Slide 23
• .NET Frameworkでは標準で参照できたパッケージが.NETCore
では標準では参照できない可能性があります。
→ NuGetからパッケージを明示的に適用
Point 2
• .NET Framework 4.5.2
• ビルドしたDLLの編集あり〼(PropertyChanged.Fody)
• 大き目な.NET Framework製のサードパーティライブラリあり
• TWAIN制御あり(.NET→COM→Win32 API、32bit driver)
• System.Drawing.Bitmapに依存(つまりGDI+に依存)
Copyright 2019 @nuits_jp Slide 24
• .NET Frameworkの旧世代(どこまでかは不明)のILを編集をして
いたDLLはBatImageExceptionが発生するかも?
→静的コード生成ツールは.NET Standardに対応したものを利用
ちょっと待って!
Copyright 2019 @nuits_jp Slide 25
なんで.NET Frameworkプロジェクトを参照できるの??
Copyright 2019 @nuits_jp Slide 26
なぜ.NET Frameworkのプロジェクト参照が通るのか
実はWPFやWinFormsが移植できた理由がここにあります。
理由は主に2点
• ILは共通仕様である
• DllImportはもともとサポートされている
System.IO.Fileなどを例に考えると理解しやすい。
Copyright 2019 @nuits_jp Slide 27
なぜ.NET Frameworkのプロジェクト参照が通るのか
多分こんなイメージ(ちょっと間違ってるかも?
Copyright 2019 @nuits_jp Slide 28
UserSideFrameworkSide
.NET Framework
Runtime
Win32 API
System.IO.File
for .NET Framework
P/Invoke
My Class Library
for .NET Framework
My Application
for .NET Framework
.NET Core
Runtime
Win32 API
System.IO.File
for .NET Core
P/Invoke
My Class Library
for .NET Framework
My Application
for .NET Core
なぜ.NET Frameworkのプロジェクト参照が通るのか
多分こんなイメージ(ちょっと間違ってるかも?
Copyright 2019 @nuits_jp Slide 29
UserSideFrameworkSide
.NET Framework
Runtime
Win32 API
System.IO.File
for .NET Framework
P/Invoke
My Class Library
for .NET Framework
My Application
for .NET Framework
.NET Core
Runtime
Win32 API
System.IO.File
for .NET Core
P/Invoke
My Class Library
for .NET Framework
My Application
for .NET Core
なぜ.NET Frameworkのプロジェクト参照が通るのか
多分こんなイメージ(ちょっと間違ってるかも?
Copyright 2019 @nuits_jp Slide 30
UserSideFrameworkSide
.NET Framework
Runtime
Win32 API
System.IO.File
for .NET Framework
P/Invoke
My Class Library
for .NET Framework
My Application
for .NET Framework
.NET Core
Runtime
Win32 API
System.IO.File
for .NET Core
P/Invoke
My Class Library
for .NET Framework
My Application
for .NET Core
この二つは完全に別物です
My Class Libraryから利用している
クラス・メソッドがCoreに存在しない
場合、実行時エラーとなります
(Coreでビルドできても実行時エラーになることも)
Point 3
• .NET Framework 4.5.2
• ビルドしたDLLの編集あり〼(PropertyChanged.Fody)
• 大き目な.NET Framework製のサードパーティライブラリあり
• TWAIN制御あり(.NET→COM→Win32 API、32bit driver)
• System.Drawing.Bitmapに依存(つまりGDI+に依存)
Copyright 2019 @nuits_jp Slide 31
• .NET Framework製サードパーティライブラリは利用しない
• 自家製.NET Frameworkライブラリは.NETCoreへ移植して動作
検証を済ませてから利用する
不安視してたけど問題なかった箇所
• .NET Framework 4.5.2
• ビルドしたDLLの編集あり〼(PropertyChanged.Fody)
• 大き目な.NET Framework製のサードパーティライブラリあり
• TWAIN制御あり(.NET→COM→Win32 API、32bit driver)
• System.Drawing.Bitmapに依存(つまりGDI+に依存)
Copyright 2019 @nuits_jp Slide 32
まとめ
Copyright 2019 @nuits_jp Slide 33
まとめ
1. プロジェクト移行ツールなどを通す必要がない
→ 変更範囲の把握から死ねる的なことはない
2. 以下の対応だけで動く可能性は大いにある
• .csprojをCore形式に修正
• AssemblyInfo.csを削除
• 参照やファイルコピーなどを移行前と同じように追加
3. .NET Framework製のライブラリは
.NET Coreもしくは.NET Standardへ全て移行推奨
→ 特定の条件下で.NET Core未サポートのAPIを利用している
可能性があり危険
4. API Browserと友達になろう!
https://docs.microsoft.com/ja-jp/dotnet/api/
Copyright 2019 @nuits_jp Slide 34
.NET Coreでデスクトップアプリを開発するモチベーションとは?
1. .NET Core 3.0におけるWinForms・WPFのサポート
2. 開発の中心が.NET Coreへシフト
3. 魅力的な.NET Coreの特徴
弊社(私の周辺限定)の場合
• 基本的にサーバーサイドの新規作成サービスは.NETCoreへ移
行中(.NETCore 2.2)
• 既存サーバーサイドサービスも、改修に合わせて移行予定
• デスクトップアプリは技術検証を進めて.NETCore 3.0のGo Live
まち
既存アプリの.NET Core移行はどうすべきか?
• 以下の条件が担保できるなら一括置き換えもありか?
• .NET Coreもしくは.NET Standard対応ですべて揃えられる
• すべてのケースにおいてテスト可能な時間・コストが取れる
• 上記の条件を満たせない場合、アプリケーションの分割を検討
• アプリがモノリシックである事が技術的負債となっている
• .NET Coreの採用関係なく、ユースケースまたはユースケースパッ
ケージ単位でのアプリ分割を進める
• その中で、.NET Coreに移行しやすい箇所から移行を進める
→ Side by SideやRuntime同梱のメリット
Copyright 2019 @nuits_jp Slide 36
ThankYou!
Any Questions?

More Related Content

What's hot

「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけらAtsushi Nakamura
 
Another Visual Studio - Visual Studio for Mac
Another Visual Studio - Visual Studio for MacAnother Visual Studio - Visual Studio for Mac
Another Visual Studio - Visual Studio for MacTomohiro Suzuki
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
世界一わかりやすいClean Architecture alpha-1
世界一わかりやすいClean Architecture alpha-1世界一わかりやすいClean Architecture alpha-1
世界一わかりやすいClean Architecture alpha-1Atsushi Nakamura
 
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform CloudWataru Unno
 
継続的にテスト可能な設計を考える ベータ版
継続的にテスト可能な設計を考える ベータ版継続的にテスト可能な設計を考える ベータ版
継続的にテスト可能な設計を考える ベータ版Atsushi Nakamura
 
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介富士通クラウドテクノロジーズ株式会社
 
Unno Wataru Nutanix Advent Calendar 2018
Unno Wataru Nutanix Advent Calendar 2018Unno Wataru Nutanix Advent Calendar 2018
Unno Wataru Nutanix Advent Calendar 2018Wataru Unno
 
6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後Shingo Sasaki
 
Kinectプログラミング Step by Step
Kinectプログラミング Step by StepKinectプログラミング Step by Step
Kinectプログラミング Step by StepAkira Hatsune
 
KinectプログラミングStepByStep
KinectプログラミングStepByStepKinectプログラミングStepByStep
KinectプログラミングStepByStep信之 岩永
 
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介Yuta Matsumura
 

What's hot (20)

「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
GitLabで始めるDevOps入門
GitLabで始めるDevOps入門GitLabで始めるDevOps入門
GitLabで始めるDevOps入門
 
Another Visual Studio - Visual Studio for Mac
Another Visual Studio - Visual Studio for MacAnother Visual Studio - Visual Studio for Mac
Another Visual Studio - Visual Studio for Mac
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
世界一わかりやすいClean Architecture alpha-1
世界一わかりやすいClean Architecture alpha-1世界一わかりやすいClean Architecture alpha-1
世界一わかりやすいClean Architecture alpha-1
 
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
 
ニフクラでも できる!Kubernetes。
ニフクラでも できる!Kubernetes。ニフクラでも できる!Kubernetes。
ニフクラでも できる!Kubernetes。
 
ニフクラのサービス基盤運用におけるCIの取り組み
ニフクラのサービス基盤運用におけるCIの取り組みニフクラのサービス基盤運用におけるCIの取り組み
ニフクラのサービス基盤運用におけるCIの取り組み
 
継続的にテスト可能な設計を考える ベータ版
継続的にテスト可能な設計を考える ベータ版継続的にテスト可能な設計を考える ベータ版
継続的にテスト可能な設計を考える ベータ版
 
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
「クラウド移行をめぐるウソ・ホント」 オンプレのVMwareからの切替は大変?P2V2Cの具体的な事例を紹介
 
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Hacktoberfest 概要、Node-REDプロジェクト貢献手順Hacktoberfest 概要、Node-REDプロジェクト貢献手順
Hacktoberfest 概要、Node-REDプロジェクト貢献手順
 
【初心者向け】API を使ってクラウドの管理を自動化しよう
【初心者向け】API を使ってクラウドの管理を自動化しよう【初心者向け】API を使ってクラウドの管理を自動化しよう
【初心者向け】API を使ってクラウドの管理を自動化しよう
 
Unno Wataru Nutanix Advent Calendar 2018
Unno Wataru Nutanix Advent Calendar 2018Unno Wataru Nutanix Advent Calendar 2018
Unno Wataru Nutanix Advent Calendar 2018
 
Node-REDからメール送信
Node-REDからメール送信Node-REDからメール送信
Node-REDからメール送信
 
6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後
 
VM 基盤運用チームの DevOps
VM 基盤運用チームの DevOpsVM 基盤運用チームの DevOps
VM 基盤運用チームの DevOps
 
Kinectプログラミング Step by Step
Kinectプログラミング Step by StepKinectプログラミング Step by Step
Kinectプログラミング Step by Step
 
最近のQ#について
最近のQ#について最近のQ#について
最近のQ#について
 
KinectプログラミングStepByStep
KinectプログラミングStepByStepKinectプログラミングStepByStep
KinectプログラミングStepByStep
 
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
 

Similar to Desktop app dev strategy for .net core 3.0

そろそろレガシーな.Net開発をやめなイカ?
そろそろレガシーな.Net開発をやめなイカ?そろそろレガシーな.Net開発をやめなイカ?
そろそろレガシーな.Net開発をやめなイカ?Yuta Matsumura
 
.NET Core 3.0 に備えよう
.NET Core 3.0 に備えよう.NET Core 3.0 に備えよう
.NET Core 3.0 に備えようm ishizaki
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーションYuta Matsumura
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今Yuki Igarashi
 
OSSコンソーシアム 開発基盤部会 2018年度 活動方針・部会紹介
OSSコンソーシアム 開発基盤部会 2018年度 活動方針・部会紹介OSSコンソーシアム 開発基盤部会 2018年度 活動方針・部会紹介
OSSコンソーシアム 開発基盤部会 2018年度 活動方針・部会紹介Daisuke Nishino
 
201110 02 Polytech center 2
201110 02 Polytech center 2201110 02 Polytech center 2
201110 02 Polytech center 2openrtm
 
.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能TomomitsuKusaba
 
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理Kouji Matsui
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#Yuta Matsumura
 
WPF & Windows Forms on .NET Core 3.0
WPF & Windows Forms on .NET Core 3.0WPF & Windows Forms on .NET Core 3.0
WPF & Windows Forms on .NET Core 3.0ShinichiAoyagi
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能TomomitsuKusaba
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMFAtomu Hidaka
 
WPF on .NET Core 3.0
WPF on .NET Core 3.0WPF on .NET Core 3.0
WPF on .NET Core 3.0一希 大田
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET するm ishizaki
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio CodeTakashi Okawa
 
.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年10月 .NETの過去と現在.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年10月 .NETの過去と現在TomomitsuKusaba
 
マイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tyeマイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project TyeYuta Matsumura
 
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用de:code 2017
 
今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略信之 岩永
 

Similar to Desktop app dev strategy for .net core 3.0 (20)

そろそろレガシーな.Net開発をやめなイカ?
そろそろレガシーな.Net開発をやめなイカ?そろそろレガシーな.Net開発をやめなイカ?
そろそろレガシーな.Net開発をやめなイカ?
 
.NET Core 3.0 に備えよう
.NET Core 3.0 に備えよう.NET Core 3.0 に備えよう
.NET Core 3.0 に備えよう
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
 
OSSコンソーシアム 開発基盤部会 2018年度 活動方針・部会紹介
OSSコンソーシアム 開発基盤部会 2018年度 活動方針・部会紹介OSSコンソーシアム 開発基盤部会 2018年度 活動方針・部会紹介
OSSコンソーシアム 開発基盤部会 2018年度 活動方針・部会紹介
 
201110 02 Polytech center 2
201110 02 Polytech center 2201110 02 Polytech center 2
201110 02 Polytech center 2
 
.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能.NET 7におけるBlazorの新機能
.NET 7におけるBlazorの新機能
 
パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理パターンでわかる! .NET Coreの非同期処理
パターンでわかる! .NET Coreの非同期処理
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
WPF & Windows Forms on .NET Core 3.0
WPF & Windows Forms on .NET Core 3.0WPF & Windows Forms on .NET Core 3.0
WPF & Windows Forms on .NET Core 3.0
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
WPF on .NET Core 3.0
WPF on .NET Core 3.0WPF on .NET Core 3.0
WPF on .NET Core 3.0
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET する
 
Netmf-180224
Netmf-180224Netmf-180224
Netmf-180224
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
 
.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年10月 .NETの過去と現在.NETラボ2021年10月 .NETの過去と現在
.NETラボ2021年10月 .NETの過去と現在
 
マイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tyeマイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tye
 
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
 
今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略
 

More from Atsushi Nakamura

Unicodeで半角全角を扱うAmbiguous(曖昧さ)とUncertainty(不確実性)の恐怖
Unicodeで半角全角を扱うAmbiguous(曖昧さ)とUncertainty(不確実性)の恐怖Unicodeで半角全角を扱うAmbiguous(曖昧さ)とUncertainty(不確実性)の恐怖
Unicodeで半角全角を扱うAmbiguous(曖昧さ)とUncertainty(不確実性)の恐怖Atsushi Nakamura
 
世界一わかりやすいClean Architecture - DroidKaigiバージョン
世界一わかりやすいClean Architecture - DroidKaigiバージョン世界一わかりやすいClean Architecture - DroidKaigiバージョン
世界一わかりやすいClean Architecture - DroidKaigiバージョンAtsushi Nakamura
 
App center analyticsを使い倒そう
App center analyticsを使い倒そうApp center analyticsを使い倒そう
App center analyticsを使い倒そうAtsushi Nakamura
 
Old:App center analyticsを使い倒そう
Old:App center analyticsを使い倒そうOld:App center analyticsを使い倒そう
Old:App center analyticsを使い倒そうAtsushi Nakamura
 
Xamarin.forms navigation overview
Xamarin.forms navigation overviewXamarin.forms navigation overview
Xamarin.forms navigation overviewAtsushi Nakamura
 
App center analyticsを使い倒そう
App center analyticsを使い倒そうApp center analyticsを使い倒そう
App center analyticsを使い倒そうAtsushi Nakamura
 
Blue monkey architecture overview
Blue monkey architecture overviewBlue monkey architecture overview
Blue monkey architecture overviewAtsushi Nakamura
 
Xamarin Dev days 2 xamarin.forms ja
Xamarin Dev days 2   xamarin.forms jaXamarin Dev days 2   xamarin.forms ja
Xamarin Dev days 2 xamarin.forms jaAtsushi Nakamura
 
Why prism for xamarin.forms
Why prism for xamarin.formsWhy prism for xamarin.forms
Why prism for xamarin.formsAtsushi Nakamura
 
Enterpriseから見たXamarinの可能性
Enterpriseから見たXamarinの可能性Enterpriseから見たXamarinの可能性
Enterpriseから見たXamarinの可能性Atsushi Nakamura
 

More from Atsushi Nakamura (10)

Unicodeで半角全角を扱うAmbiguous(曖昧さ)とUncertainty(不確実性)の恐怖
Unicodeで半角全角を扱うAmbiguous(曖昧さ)とUncertainty(不確実性)の恐怖Unicodeで半角全角を扱うAmbiguous(曖昧さ)とUncertainty(不確実性)の恐怖
Unicodeで半角全角を扱うAmbiguous(曖昧さ)とUncertainty(不確実性)の恐怖
 
世界一わかりやすいClean Architecture - DroidKaigiバージョン
世界一わかりやすいClean Architecture - DroidKaigiバージョン世界一わかりやすいClean Architecture - DroidKaigiバージョン
世界一わかりやすいClean Architecture - DroidKaigiバージョン
 
App center analyticsを使い倒そう
App center analyticsを使い倒そうApp center analyticsを使い倒そう
App center analyticsを使い倒そう
 
Old:App center analyticsを使い倒そう
Old:App center analyticsを使い倒そうOld:App center analyticsを使い倒そう
Old:App center analyticsを使い倒そう
 
Xamarin.forms navigation overview
Xamarin.forms navigation overviewXamarin.forms navigation overview
Xamarin.forms navigation overview
 
App center analyticsを使い倒そう
App center analyticsを使い倒そうApp center analyticsを使い倒そう
App center analyticsを使い倒そう
 
Blue monkey architecture overview
Blue monkey architecture overviewBlue monkey architecture overview
Blue monkey architecture overview
 
Xamarin Dev days 2 xamarin.forms ja
Xamarin Dev days 2   xamarin.forms jaXamarin Dev days 2   xamarin.forms ja
Xamarin Dev days 2 xamarin.forms ja
 
Why prism for xamarin.forms
Why prism for xamarin.formsWhy prism for xamarin.forms
Why prism for xamarin.forms
 
Enterpriseから見たXamarinの可能性
Enterpriseから見たXamarinの可能性Enterpriseから見たXamarinの可能性
Enterpriseから見たXamarinの可能性
 

Desktop app dev strategy for .net core 3.0

Editor's Notes

  1. みなさんこんにちは。 ご紹介いただきました。ニュイこと中村です。 今日は 継続的にテスト可能な設計を考える というTitleでお話しさせていただこうと思います。 よろしくお願いいたします。
  2. まずは自己紹介から 中村充志と申します。 リコージャパン株式会社の金融ソリューション開発部 というところに所属しています。 Enterprise系SIerでITアーキテクトをやらせてもらっています。 さて、本題に入る前に、みなさんに二つほど質問をさせてください。
  3. もうすでに.NET Coreを仕事に使ってるよって方、どの程度いらっしゃいますか?
  4. .NET CoreでWPFを動かしてみたよって方はどの程度いますか?
  5. ではセッションに入りましょう。
  6. 本日は、主に次の二つについてお話したいと思います。 まず初めに、そもそもデスクトップアプリを なぜ.NET Coreで実装するのか?したいのか? そのモチベーションについて再確認したいと思います。 その後、実際に.NET Frameworkで作られた WPFのアプリケーションを.NET Coreに移行しつつ 以降のポイントについてお話したいと思います。 時間の関係上、前者はさらっとお話しして、基本的に後半をじっくりやりたいと思います。
  7. さて、始める前に一点だけお願いがあり〼。
  8. 今回お見せするアプリケーションは本物の業務アプリです。 一応弊社の共同著作になっているものですし、デモでお見せすることもよくあるので、お見せすること自体は問題ありません。 ただ、インターネット上に流れているのが目に留まって、弊社内で騒がれると対応が面倒なので、申し訳ありませんがデモアプリの撮影はご遠慮ください。
  9. では早速、本題に入りたいと思います。
  10. デスクトップアプリケーションを.NET Coreで開発したい、その本質的な理由はどこにあるのか? まずそこからお話ししたいと思います。 私は主に次の3点から、Coreを利用したいと考えています。 ①まず第一に、.NET Core 3.0から、WPFやWinFormsがサポートされたということ。 ②つぎに、すでにMS側の開発の中心が.NET Frameworkから.NET Coreにシフトしているということ ③最後に.NET Coreが非常に魅力的な特徴を持っているということ この3点です。 一番目は良いとして、2番以降をもう少し掘り下げてお話ししたいと思います。
  11. まず、開発の中心が.NET Coreにシフトしているという点について
  12. 実はすでに.NETの開発の中心は.NET FrameworkからCoreにシフトしています。 現在、.NET Frameworkの開発は、後方互換性の確保が容易なもののみが対象となっていて、Coreにのみ適用されている改修というのが多数あります。 実際、最新のC#8.0では一部の機能は.NET Frameworkへの採用は見送られておいますし、そもそも.NET Frameworkは4.x世代が最後で、5は出ないのではないか?といううわさもあります。 またそうではなくても、クラウドファーストが推進されている現在、クラウドでの利用は.NET Core一択だという現実もあります。
  13. また、Framework側のネガティブな問題だけではなく そもそもCoreが非常に魅力的だということがあります。
  14. 私が特に魅力を感じるところは、次の3点にあります。 ①ひとつはSide by Sideが復活し、異なるバージョンを共存して利用できるということ ②二つ目はRuntimeを事前にインストールしておかなくても、 技術的な投資を効率化するうえで、もう今後Frameworkに投資する意味はあまりなく、Coreに集中すべきだというのが私の考えです。
  15. デスクトップアプリケーションを.NET Coreで開発したい、その本質的な理由はどこにあるのか? まずそこからお話ししたいと思います。 私は主に次の3点から、Coreを利用したいと考えています。 ①まず第一に、.NET Core 3.0から、WPFやWinFormsがサポートされたということ。 ②つぎに、すでにMS側の開発の中心が.NET Frameworkから.NET Coreにシフトしているということ ③最後に.NET Coreが非常に魅力的な特徴を持っているということ この3点です。 一番目は良いとして、2番以降をもう少し掘り下げてお話ししたいと思います。
  16. 以上で私の発表を終わります。 ご清聴ありがとうございました。