Ignite Microsoft は、クロスプラットフォーム開発フレームワーク React Native が、Windows とモバイルの両方にまたがるアプリケーションを作成するという問題に対する重要なソリューションであると示唆しました。
Office 365やAzureサービスにアクセスするファーストパーティおよびサードパーティのアプリは、WindowsだけでなくiOSとAndroidでも動作する必要があるため、クロスプラットフォーム開発はMicrosoftにとって極めて重要です。この点を強調するかのように、同社は来年末に発売予定のデュアルスクリーンAndroidデバイス「Surface Duo」を発表しました。
2016年に同社はXamarinを買収し、C#と.NETを用いたiOS、Android、macOS向けの開発を可能にしました。また、MicrosoftはWindows、macOS、Linuxで動作する.NET Coreにも投資しています。
.NET Coreは当初サーバー開発向けに開発されましたが、デスクトップWindowsアプリケーションのサポートへと進化しています。Microsoftは、.NET 5が2020年後半にリリースされ、「Windows、Linux、macOS、iOS、Android、tvOS、watchOS、WebAssemblyなどを対象とする」と発表しました。
こうした活動にもかかわらず、Microsoftはクロスプラットフォーム開発において.NETに完全に依存しているわけではありません。これにはいくつかの理由があります。1つは、Windowsチームがこれまで.NETと共通言語ランタイム(CLR)のオーバーヘッドを懸念し、パフォーマンス上の理由からC++での開発を好んできたことです。Windowsデスクトップアプリケーション向けの次世代APIであるWinUIはC++で構築されています。2つ目に、Microsoftは.NETコミュニティ以外の開発者、特にJavaScriptやWebテクノロジーに精通した多くの開発者にアピールしたいと考えています。
.NET の絡み合い: 5.0 で本当に Microsoft の開発スタックが統合されるのでしょうか?
続きを読む
React Nativeはこれらすべての要件を満たしています。Reactウェブフレームワークは、JavaScriptでユーザーインターフェースを構築するためにFacebookによって開発されました。Facebookは2015年にReact Nativeをリリースし、iOSおよびAndroid向けのモバイルアプリケーションにReactを使用できるようになりました。MicrosoftがスポンサーとなっているReact Native for Windowsは、Windows 10 UWP(ユニバーサルWindowsプラットフォーム)またはWindows 7以降のWPF(Windows Presentation Foundation)をターゲットとするフレームワークです。UWP版はネイティブWinUIコントロールを使用します。開発者はJavaScriptまたはTypeScriptでコーディングでき、人気のVisual Studio Codeエディター用のツールも提供されています。
Microsoftのスライドによると、C++を使用したUWPはパフォーマンスに最も優れている。
Windows版React Nativeは.NETコードを生成しますが、これは現在vNextと呼ばれる次期リリースでC++実装に置き換えられます。Igniteでこの計画を発表したMicrosoftのプログラムマネージャー、Kalita Saintonge氏とSteven Moyes氏は、2019年末までに実稼働開始予定のvNextバージョンでは、メモリ要件が削減され、パフォーマンスが向上すると述べました。また、React Nativeは組み込みブラウザエンジンを必要としないため、別のクロスプラットフォームソリューションであるElectronフレームワークよりもはるかに軽量であるとも指摘しました。
MicrosoftがReact Nativeを重視する理由については、いくつかの手がかりがあります。一つは、Officeチームが既にReact Nativeを活用していることです。例えば、最新のWordで右クリックしてコメントを追加すると、表示されるポップアップボックスはReact Nativeで記述されています。現在プレビュー段階にある、近日リリース予定のOfficeカレンダーアプリケーションも同様です。これらのアプリケーションは、.NETではなくvNext実装を使用しています。
「React Nativeを使って新しい[Surface]デバイスをターゲットにできるだろうか?と疑問に思われるかもしれません。その質問への答えは、できることを願っています」と、モイーズ氏はSurface Duoを描いたスライドを示しながら述べた。「React Nativeはネイティブアプリケーションを構築するものです。Reactが複数のプラットフォームをターゲットとするアプリを構築するのに最適なプラットフォームであることは当然です。」
Microsoft の公式見解では、Xamarin と React Native は Windows とモバイルを対象とするのには同等に良い選択肢であり、既存の C# コードやスキルを持つ人にとっては Xamarin が賢明な選択であるとのことですが、Windows チームと Office チームでは最高のパフォーマンスを得るために C++ コード生成を備えた React Native が好まれているようです。
Windows 7についてはどうでしょうか?これは、Windows 7をまだ使用している企業のビジネスアプリケーションや、より広範なリーチを望むWindows開発者にとって問題です。React NativeではWPF版を使ってこれを実現できますが、Moyes氏は乗り気ではありませんでした。「WPFコンポーネントも用意していますが、積極的な投資は主にUWPレイヤーに集中しています。WPFは…どちらかといえばコミュニティモジュールです」と彼はIgniteの参加者に語りました。®