Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

.NET Conf 2019 のデスクトップアプリに関するセッションについて

41 views

Published on

.NET Confのデスクトップアプリケーションに関するいくつかのセッションについて概要をまとめます。

かごんま.NET
https://kagoshima-dotnet.connpass.com/event/149260/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

.NET Conf 2019 のデスクトップアプリに関するセッションについて

  1. 1. .NETConf2019のデスクトップアプリに関するセッショ ンについて 2019年10⽉16⽇
  2. 2. ⾃⼰紹介 名前:福森 拓⼤ 会社:南⽇本情報処理センター ⾔語:VB.NET、C#、Python、(なぜかまだVB6...) ジャンル:Web、デスクトップアプリケーション、機械学習
  3. 3. 要約 .NETConf2019(https://www.dotnetconf.net)の中から、デスクトップに関するセッショ ン2つについて、概略を説明します。 1..NETCoreを使⽤した.NETデスクトップアプリケーションの近代化 Modernizing.NETDesktopApplicationswith.NETCore https://www.youtube.com/watch?v=k7z4ZxFc8h8 2.WindowsデスクトップアプリケーションのためのDevOpsとVisualStudioAppCenter を始めよう GetStartedwithDevOpsfor.NETWindowsDesktopAppsandVisualStudioApp Center https://www.youtube.com/watch?v=8ioUk4RajpM
  4. 4. キーノート概要 参考:https://blog.azure.moe/2019/09/24/net-conf-2019-day-1-keynote/ .NETCore3.0 C#8.0 デスクトップアプリ Xamarin Web、Blazor 機械学習 IoT .NET5
  5. 5. 1..NETCoreを使⽤した.NETデスクトップアプリケーシ ョンの近代化 1-1..NETCoreデスクトップとは何か 1-2..NETCoreと.NETFrameworkどちらを選択するのか 1-3.アプリケーションの.NETCoreへの互換性の判断 1-4..NETCoreへの移植(Porting) 1-5.その他
  6. 6. 1-1.NETCoreデスクトップとは何か
  7. 7. .NETCoreに移⾏する上で .NETCoreに移⾏することで特に⼤事な点は、.NETの未来が.NETCoreである、ということ だ。 来年には、.NET5がリリースされる(2020年11⽉)。 アプリケーションを.NETに移植しておくことで、.NET5への移⾏をスムーズに⾏うことがで き、新機能の組み込みにも対応できる。 現時点でも.NETFrameworkでは実現できない多くの.NETCore特有の機能がある。 異なる.NETCoreバージョンのアプリケーションの実⾏(Side-by-side) ⾃⼰完結型のアプリケーション 単⼀ファイルの実⾏ファイル ⼩さいアプリケーションサイズ
  8. 8. 同⼀マシンでの異なるバージョンの.NETCoreアプリケーションの実 ⾏(Side-by-side) .NETFrameworkでは 1つのバージョンしか実⾏できず、常に最新のバージョンに⼊れ替えていく必要がある。 そのため、開発者は依存関係に気をつけ、IT部⾨は会社全体で意思決定を⾏う必要があった。 .NETCoreでは 各アプリケーションそれぞれのペースで更新することができる。なぜなら、.NETCoreはそれ ぞれのバージョンを同⼀マシンで共存することができ、各アプリケーションはターゲットバ ージョンをそれぞれで決めることができるからだ。
  9. 9. ⾃⼰完結型のアプリケーション アプリケーションを、動作環境で完全に独⽴して動作する⾃⼰完結型のアプリケーションと して配布できる。 MSIXは新しいWindowsアプリケーションパッケージ形式であり、Windows10に.NET Core3.0のデスクトップアプリケーションを展開するために使⽤できる。 https://www.itmedia.co.jp/pcuser/articles/1806/07/news110.html https://docs.microsoft.com/ja-jp/dotnet/core/whats-new/dotnet-core-3-0#msix- deployment---windows-desktop 単⼀ファイルの実⾏ファイル アプリケーションを単⼀ファイルの実⾏ファイルとして作成できる。これは、アプリケーシ ョンと.NETCoreを1つの⼤きなZIPファイルとしたものとなる。
  10. 10. ⼩さいアプリケーションサイズ .NETCore3では、アセンブリサイズが、.NETCore2.2以前に⽐べて⼩さくなっている。 その他 ML.NET、Blazorなど多数の新機能は、.NETCoreでサポートされる。
  11. 11. 1-2..NETCoreと.NETFrameworkどちらを選択するの か
  12. 12. 新規アプリ .NETCoreで作成しましょう。
  13. 13. 既存アプリでメンテナンスモード 既存アプリで完全にメンテナンスモードで、全ての開発は終了しており、機能変更⽬的のコ ードの変更は発⽣しないものは、.NETFrameworkのままでよい。 実際、VisualStudioは.NETFrameworkを完全にサポートし、.NETFrameworkのセキュリ ティアップデートも問題なく⾏われている。
  14. 14. 既存アプリでまだ開発が⾏われている 既存アプリで開発が⾏われており、コードの変更があり、.NETCoreでの新機能の恩恵を受け たい場合は、NETFrameworkから.NETCoreへの変換を検討した⽅がよい。 重要な点は、アプリケーションごとで特定の事情があるので、.NETCoreでの恩恵と、移植に 必要な作業量を天秤にかけて決断することである。
  15. 15. 1-3.アプリケーションの.NETCoreへの互換性の判断
  16. 16. PortabilityAnalyzer https://aka.ms/portabilityAnalyzer アプリケーションを.NETCoreに対応させるためにどのぐらいの作業が発⽣するのか、とい う問題がある。 そのためには、PortabilityAnalyzerを使⽤する。 このツールは、あなたのアプリケーションで使⽤されている全てのAPIについて、.NETCore 3でサポートされているかを⽰し、必要なリファクタリングについて助けとなってくれる。
  17. 17. ⼿順 1.PortabilityAnalyzerを実⾏ 2.移植性を判断したいアプリケーションのフォルダのパスを選択する 3."Anazlize"をクリック ※インターネット接続が必要 4.アプリケーションが参照しているアセンブリと全てのAPIについてチェックし、結果を Excelに出⼒する
  18. 18. Excelへの出⼒
  19. 19. PortabilitySummaryシート 列名 内容 Headerfor assemblyname entries アセンブリ名 Target Framework 現在のターゲットフレームワーク .NETCore+ Platform Extensions .NETCoreとの互換性を%表⽰する。 ⾼ければ互換性が⾼いということを⽰し、100%に満たないというこ とは.NETCoreでは完全にサポートされていないということ
  20. 20. Detailシート サポートされていない関数について、詳細を確認できる。 列名 内容 Targettype APIのタイプ Targetmember 関数、プロパティなど Headerforassemblynameentries アセンブリ名 .NETCore+PlatformExtensions .NETCoreでサポートされているか RecommendedChanges お勧めの変更⽅法
  21. 21. PortabilityAnalyzerの結果を⾒る時に⼤事なのは 100%に満たない互換性を持つアセンブリが、バージョンアップで対応しているかどうかを確 認すること。 たとえ、100%に満たなくても、開発元が新しいバージョンで、.NETCoreや.NETStandard をサポートしているのであれば、対応バージョンにバージョンアップすれば良い。 すべてを⾃分で対応する必要はない。
  22. 22. 1-4..NETCoreへの移植(Porting)
  23. 23. 移植 .NETFrameworkから.NETCoreへの移植は、単純にcsprojファイル の"TargetFramework"の値を変更するだけで良い。 変更前 <TargetFramework>net472</TargetFramework> 変更後 <TargetFramework>netcoreapp3.0</TargetFramework> しかし、.NETFrameworkのプロジェクトが旧形式の場合は、先にSDK形式に移⾏する必要 がある。
  24. 24. 移植⽅法 移植⽅法は、次の2つがある。本⽇は、TryConvertを使った移植について説明する。⼿作業 での移植については、後で⽰す、セッションの⽇本語訳に記載している。 1.⼿作業での移植 時間はかかるが、こちらのパターンでないと移植できない場合がある。 2.TryConvertを使った移植 Microsoftが作成した多くのケースで使えるようなツール
  25. 25. TryConvertを使った移植 Try-Convertツール https://github.com/dotnet/try-convert 引数として、.NETFrameworkのプロジェクトファイルを指定するだけで良い。 .try-convert.exe -p “<path to your .csproj file>" プロジェクト形式の変換 "TargetFramework"の.NETCore3.0への変更 を⾏い、うまくいけば、数ステップで変換可能である
  26. 26. 1-5.その他
  27. 27. セッションの⽇本語訳 [.NETConf2019].NETCoreを使⽤した.NETデスクトップアプリケーションの近代化 (Modernizing.NETDesktopApplicationswith.NETCore) https://qiita.com/tfukumori/private/37fe740ca0b81293c03f 移植⼿順の詳細 プロジェクト形式の判断⽅法 ⼿作業での移植⼿順 WindowsCompatibilityPack 画⾯デザイナーについて WPFデザイナーは正式版 WinFormsはプレビュー版(まだ、VisualStudioには含まれていない) 関連セッション
  28. 28. 2.Windowsデスクトップアプリケーションのための DevOpsとVisualStudioAppCenterを始めよう 2-1.DevOpsとは何か 2-2.概要 2-3.AzureDevOpsでの発⾏とAppCenterとの連携の組み込み 2-4.VisualStudioAppCenter 2-5.その他
  29. 29. 2-1.DevOpsとは何か
  30. 30. DevOpsを⾏う企業の⾼い⽣産性
  31. 31. 収益と利益の向上 DevOpsを⾏う企業では、コードをより早くリリースすることができ、バグをより少なくする ことができ、最終的には、収益と利益をあげることができる。 デスクトップアプリケーションでは⾏われていない デスクトップアプリケーション開発者の中では、DevOpsに対する議論が⻑らく⾏われてこな かった。 今回のセッションでは、デスクトップアプリケーションのDevOpsについて説明されている。
  32. 32. 2-2.概要
  33. 33. サンプルソース、使⽤するサービス GitHubデモで使⽤したアプリケーション https://github.com/diverdan92/DotNetConf2019 AzureDevOps https://dev.azure.com/ VisualStudioAppCenter https://appcenter.ms/
  34. 34. 概略図
  35. 35. 2-3.AzureDevOpsでの発⾏とAppCenterとの連携の組 み込み
  36. 36. ⼿順:AzureDevOpsでの発⾏ 1.[GitHub]GitHubを⾃分のアカウントにフォークする 2.[AzDevOps]⾃分のAzureDevOpsで新規にプロジェクトを作成する 3.[AzDevOps]BuildでNewPipelineを選択し、GitHubを選択する。 4.[AzDevOps]新規パイプラインとして、".NETDesktop"を選択し、各種設定を⾏う。 5.[AzDevOps]ビルドと発⾏を⾏う。
  37. 37. ⼿順:AppCenterでの分析と解析の組み込み(1/2) 1.[AppCenter]アプリケーションを作成する 2.[VisualStudio]OverViewの説明に従い、アプリケーションを書き換える。 コンストラクタ、またはアプリケーション開始点 AppCenter.Start("XXXXXXXX-YYYY-ZZZZ-AAAA-99999", typeof(Analytics), typeof(Crashes)); イベントを取りたい場所 Analytics.TrackEvent("Pressed Button"); Catchブロック、または集約例外 Crashes.TrackError(e, new Dictionary<string, string>() { { "Equation: ", equation } });
  38. 38. ⼿順:AppCenterでの分析と解析の組み込み(2/2) 3.[VisualStudio]GitHubへのコミット ビルドできることを確認後、チームエクスプローラーの変更から「すべてをコミットし て同期」を選択し、ローカルリポジトリのmasterブランチに変更をコミットし、変更を リモートリポジトリ(GitHub)と同期する。 4.[AzDevOps]⾃動ビルド AzureDevOpsのパイプラインでは、GitHubのmasterブランチの変更を受けて、⾃動的 にビルドされる。
  39. 39. 2-4.VisualStudioAppCenter
  40. 40. 分析(Analytics) AppCenterでは、アクティブユーザー数、デバイス、国、⾔語、あらゆる種類の詳細なデバ イスの分析を⾏うことができる。 アプリケーションの使⽤時間等なども収集できる。 診断(Diagnostics) アプリケーションがクラッシュしたときの情報を収集することができる。 具体的に、ユーザーがどのような操作を⾏ったときにクラッシュしたのか、ということを収 集することで、障害の分類、優先順位、問題管理を⾏うことができる。GitHubとのIssue連携 を⾏うことも可能。
  41. 41. デモ AppCenterの表⽰ 分析(Analytics) 診断(Diagnostics)
  42. 42. Releaseの作成 ベータユーザーやテスターに通知を送ることができる。 現在は⼿作業でReleaseを作成する必要があるが、将来的には、AzureDevOpsの Pipelineから、⾃動的にAppCenterにReleaseさせることが可能になる。
  43. 43. 2-5.その他
  44. 44. セッションの⽇本語訳 [.NETConf2019]WindowsデスクトップアプリケーションのためのDevOpsとVisual StudioAppCenterを始めよう (GetStartedwithDevOpsfor.NETWindowsDesktopAppsandVisualStudioApp Center) https://qiita.com/tfukumori/private/37a9d54cdb260a4c6100 AzureDevOpsの発⾏とAppCenterの連携⼿順詳細 画像付き⼿順詳細 VisualStudioAppCenterで分析できる内容 分析内容 GitHubの連携 ロードマップ 関連リソース MSIXについてなど
  45. 45. ありがとうございました

×