2022年にデスクトップを開発する方法

2022年にデスクトップを開発する方法

おめでとうございます。2021年にこの記事を読んでいるなら、あなたはもう来年にタイムスリップしています。

最終更新 2022/05/06 6:39
顾中民
読了目安 5 分
カテゴリ
フロントエンド
タグ
Flutter

原文URL:https://www.telerik.com/blogs/how-to-desktop-2022

デスクトップを構築するための今日のあらゆる異なる方法を見てみましょう。人生の伴侶を賢く選んでください。

おめでとうございます。もし2021年にこの記事を読んでいるなら、あなたはもう来年にタイムスリップしています。世界的なパンデミックは過ぎ去り、世界は正常に戻りつつあります。Microsoft スタックの開発者にとって、.NET 6、.NET MAUI および関連ツールは昨年11月にリリースされました(ハハ、計画は変化に追いつけません。サイト管理者が2022年5月6日にこの記事を転載した時点で、MAUIはまだ正式版をリリースしていませんが、もうすぐだと思います、笑)。Apple は安定した XCode バージョンで macOS Monterey と iOS 15 を確固たるものにしました。もし今日、まったく新しいデスクトップアプリケーションプロジェクトを立ち上げる任務があるとしたら、あなたは何を使いますか?

まず、誰にもデスクトップアプリケーションは「レガシー」だと言わせないでください。周りを見渡せば、ほとんどのエンタープライズワークフローがデスクトップソフトウェアに依存していることがわかります。

現在は2022年で、開発者はデスクトップを構築する方法として多くの選択肢があります。誰と話すかによりますが、過剰な技術と選択肢は解放的であるか、あるいは威圧的であるかのどちらかです。結局のところ、これは開発者の経験と、より良いコード共有のために他に何を構築しているかにかかっているかもしれません。

デスクトップアプリケーションのテクノロジースタックを、3つのタイプの開発者の観点から探ってみましょう。

1. 伝統主義者

ネイティブツールを使用し、単一プラットフォームを対象としてデスクトップ向けに設計されています。

1.1 WinForms

Windows Formsは2002年に.NET 1.0と共に導入され、最も古いWindowsデスクトップ技術の1つですが、驚くべきことに今でも強力です。WinFormsの成功の一部は、ツールのシンプルさ、開発者の高い生産性、そして豊富なツールエコシステムにあります。Windows上の最新のWinFormsアプリケーションは、最新の.NETランタイム上で動作し、強力なUIと最新のWindows APIへの完全なアクセスを備えています。

1.2 WPF

Windows Presentation Foundationは2006年に.NET 3.0と共にWindowsデスクトップ技術として導入され、拡張可能なアプリケーションマークアップ言語(XAML)で定義された、ビジネスロジックから分離可能なUIスタックも導入しました。WPFは最新の.NETランタイム上で動作し、今でも強力であり、豊富な開発者エコシステムを誇ります。最新のWPFアプリケーションは、深いシステム統合と最新のタッチ/インクサポートを備え、モダンなUXを発揮します。多少の学習曲線はありますが、WPFは開発者の生産性を向上させ、豊富なツールを提供します。

1.3 UWP

.NET C#/VB/F# などのモダンな言語の発展に伴い、UIマークアップに.NETとXAMLを組み合わせる傾向は、Windows 8およびWindows 10でも続きました。モダンでは、タブレット、コンピュータ、2-in-1、HoloLens、Surface Hub、Xbox、IoTなど、さまざまなWindowsデバイスのフォームファクタが必要です。Universal Windows Platformは、適応型UIを持つすべてのWindowsデバイス向けに構築し、Microsoft Storeを介してアプリケーションを提供するための開発者体験を統合することを約束しました。

デスクトップブリッジのような後続の開発により、開発者は従来のWin32アプリケーションをUWPコンテナーにパッケージ化してストアに公開し、XAMLアイランドを介してモダンなUWP UIを他のWindowsデスクトップアプリケーションに埋め込むことができます。当初のUWPビジョンは進化したかもしれませんが、ネイティブランタイムと分離されたAPIアクセス層の基盤は、今日でもWindowsアプリケーションにうまく機能しています。

1.4 AppKit/Cocoa

macOS用のネイティブデスクトップアプリケーションを構築したいですか?AppKitがあなたの友達です。macOSアプリケーションを作成するためのUIコンポーネントと、画面上に効率的に描画するための詳細を実装するために必要なすべてのオブジェクトを定義します。AppKitはCocoa(macOSのObjective-C APIフレームワーク)に統合されていますが、SwiftUIからもAppKitを使用できます。XCodeのモダンなツールを使用すれば、macOSデスクトップ向けの構築は、iOSや他のAppleプラットフォーム向けのもう一つのターゲットに過ぎません。

2. 改良主義者

将来を見据えたデスクトップ構築、クロスプラットフォームのニーズを理解し、コード共有を望みます。

2.1 WinUI 3

Windows UI Library(WinUI)は、WindowsデスクトップおよびUWPアプリケーション向けのネイティブユーザーエクスペリエンス(UX)フレームワークです。WinUI 3は、次世代のネイティブWindows UIスタックであり、Windows 10から分離され、Fluent Design Systemをすべての体験に取り入れ、一貫性、直感性、アクセシビリティに優れたUXを実現します。WinUI 3は、デスクトップおよびUWPアプリケーション向けの最新ツールとサポートを開発者に提供します。Windows アプリ SDKは、広範なターゲットのWindows 10およびそれ以降のOSバージョンに対して、どのデスクトップアプリでも一貫して使用できる統一されたAPIとツールのセットを提供します。

2.2 Mac Catalyst

ほとんどの開発者はiOS向けに構築したいと考えており、ネイティブのmacOS開発はニッチな視聴者を対象としていることが証明されています。AppleはMac Catalystでこの問題を解決しようとしています。iOS、特にiPadアプリケーションがmacOS上でシームレスに動作するようにするものです。MacアプリとiPadアプリは、XCodeで同じプロジェクト/ソースコードを共有できるようになりました。AppKitとUIkitの間にはシームレスなマッピングが存在し、視覚的なインターフェースはiOS上のタッチとmacOS上のキーボード/マウスに最適化されています。

2.3 Flutter

Flutterはクロスプラットフォームモバイル開発で人気が高まっています。Dartでコードを書き、ウィジェットを使用して画面上のピクセルを描画します。Flutterは現在、デスクトップ向けのクロスプラットフォームアプリケーションを作成するために利用できます。FlutterエンジンはWindows、Linux、macOS向けにUIをレンダリングできます。Flutterのデスクトップサポートはまだベータ版ですが(2022年5月6日現在、Flutterのデスクトップバージョンは数か月前に正式リリースされており、安心して使用できます)、開発者は単一のコードベースからWindows UWP、macOS、Linuxをターゲットにでき、既存のFlutterアプリケーションにデスクトップサポートを追加することができます。

2.4 .NET MAUI デスクトップ

.NET開発者にとって、Xamarin.Formsは長い間、クロスプラットフォームアプリケーションを作成する最も簡単な方法の1つでしたが、Xamarin.Formsは主にiOS/Androidモバイルプラットフォームに対応していました。デスクトップ向けのXamarin.Formsレンダラーは存在しましたが、開発者がデスクトップ向けに自信を持つことはあまりありませんでした。Xamarin.Formsが.NET MAUIに進化したことで、この状況は変わりました。

iOS/Androidに加えて、.NET MAUIはデスクトッププラットフォーム(WindowsおよびmacOS)を完全にサポートします。開発者に.NET MAUIへの自信を抱かせる理由は、デスクトッププラットフォームのサポートがファーストクラスであり、単一のVSプロジェクトからの美しいツールと共有アプリケーションアーキテクチャを備えていることです。.NET MAUIは車輪の再発明をするのではなく、デスクトップ上でネイティブUIをレンダリングするために、広く受け入れられている2つの技術(Windows向けWinUI 3とmacOS向けMac Catalyst)を選択しています。

2.5 Uno プラットフォーム

「Windows」XAMLマークアップを使用して真のクロスプラットフォームを実現したい.NET開発者にとって、Uno Platformは優れたオープンソースの選択肢を提供します。WinUIをどこにでも普及させるために、UnoプラットフォームはWindows、macOS、Linux上のデスクトップアプリケーションを、C#およびXAMLの単一コードベースと好みのIDEからすべてサポートできます。

2.6 Avalonia

.NET XAMLフレームワークとして宣伝されているAvaloniaは、XAMLベースのレンダラーで、デスクトッププラットフォーム(Windows、macOS、Linux)上のアプリケーションをサポートする別のオープンソースオプションを提供します。

3. 流行に敏感な人

非デスクトップ技術を使用してデスクトップアプリを作成し、ウェブがどこにでもあると考えています。

3.1 PWA

ウェブSPAフレームワークのいずれかを使用してウェブアプリケーションを構築している場合、PWA(プログレッシブウェブアプリ)は、同じアプリケーションをデスクトップ上で動作させる最も簡単な方法の1つです。PWAはオープンウェブ技術へのアクセスを提供し、クロスプラットフォームの相互運用性を実現し、モバイルまたはデスクトップデバイス向けにカスタマイズされたアプリに近い体験をユーザーに提供します。PWAは本質的にはウェブサイトであり、徐々に拡張されて、サポートされているプラットフォーム上でインストールされたアプリケーションと同様の機能を提供します。通常、オフラインでの動作、プッシュ通知のサポート、ハードウェアアクセスなどのデスクトップ機能を備えています。

通常のウェブアプリから始めて、開発者はアプリを段階的に拡張し、デバイス機能のアプリケーションマニフェストファイルとバックグラウンドスレッド操作用のJavaScriptサービスワーカーを追加することができます。PWA Builderのようなソリューションは、この変換を簡単に開始できるようにし、開発者はWindows/Macデスクトップ統合に深く入り込むことができます。

3.2 Electron

デスクトップ上で動作するウェブアプリケーションを望むことは新しいことではありません。そのようなニーズを満たす最も一般的なソリューション、Electronがあります。ElectronJSは、ウェブ技術を使用してクロスプラットフォームアプリケーションを構築するためのオープンソースプロジェクトであり、Windows、Mac OS、Linuxなど任意のデスクトップをターゲットにできます。

最もよく使われるデスクトップアプリケーションの多くは、本質的にはElectronシェルにカプセル化されたウェブアプリケーションです。例えば、Visual Studio Code、Microsoft Teams、Slack、Figmaなどです。

Electronはしばらく前から存在し、強力な開発者コミュニティ/エコシステムから信頼を得ています。JavaScript SPAフレームワークや.NET/Blazorで記述されたほとんどのモダンなウェブアプリケーションは、Electronを使用してデスクトップソリューションを強化できます。Electronがウェブアプリケーションをホストするシェルとしての強みの中核は、安定した予測可能な環境という考え方です。

そのために、各Electronアプリケーションは信頼性を提供する2つのものをバンドルしています。すなわち、レンダリングの一貫性のための独自のChromiumエンジンのコピーと、Node.jsランタイムです。アプリケーションのサイズやメモリフットプリントに注意する必要がありますが、Electronは実戦でテストされており、深いネイティブデスクトップ統合のための広範なAPIを開発者に提供します。

3.3 Blazor Hybrid

今日の安定した計算環境とモダンブラウザの存在を前提とすれば、ウェブアプリケーションはおそらく軽量なWebViewを介してデスクトップ上でホストできます。これにより、フットプリントが小さくなり、アプリケーションのブートストラップが容易になります。

Blazorを使用すると、開発者はC#/.NETを使ってモダンなウェブアプリケーションを構築でき、サーバー上で実行するか、WebAssemblyを介してクライアント上で完全に実行できます。Blazorはモダンな.NET開発者の間で非常に人気があり、Blazorの強力なデスクトップソリューションが登場するのは自然なことです。

.NET 6により、.NET MAUIは完璧なブートストラップを提供し、Blazor ハイブリッドアプリケーションがモダンなWebView(Windows上のWebView 2、macOS上のWKWebView)を介してデスクトップ上で動作できるようにします。Blazorは真のネイティブまたはハイブリッドクロスプラットフォームアプリケーションを構築するために使用でき、.NETウェブ開発者をデスクトップ領域に招待します。Blazorコンポーネントモデル、Razorレンダリングエンジン、CSSスタイリング、拡張性への親しみを、デスクトップアプリケーションの構築に適用し、ウェブとコードを共有できます。

明るい未来

好きか嫌いかに関わらず、デスクトップはこれからも存在し続けます。デスクトップアプリケーションは多くのエンタープライズワークフローを支え続け、開発者はWindows/MacOS/Linuxデスクトップ向けのソリューションを構築しなければなりません。良いニュースは、デスクトップに到達する方法がたくさんあることです。従来のデスクトップ技術は、ウェブやクロスプラットフォームソリューションと快適に共存し、より多くのコード共有を可能にします。良い親のように、デスクトップは判断しません。来るものは拒みません。良いパンは良いパンです。どのように提供するかに関わらず。

さらに探索

関連読書

その他の記事
同じタグ 2023/09/21

【翻訳】XAMLベースのクロスプラットフォームフレームワークの比較分析

長年にわたり、XAMLベースのUIフレームワークは大きく発展してきました。これらのフレームワークは主に、クロスプラットフォームアプリケーションをサポートするAvalonia UI、Uno Platform、.NET MAUIを含みます。もしマイクロソフトがもっと早くFlutterのようなクロスプラットフォームUIフレームワークをリリースしていたら、これほど多くの選択肢はなかったかもしれません。

続きを読む