「クロスプラットフォーム」が普及しなかった理由――.NET 6によって「クロスプラットフォーム2.0」は到来するか.NET 6移行入門(5)

.NET 6の現状を把握し、具体的な移行方法を学ぶ連載。今回は、「クロスプラットフォーム」が普及しなかった理由を考察し、.NET 6におけるクロスプラットフォーム技術についてまとめる。

» 2022年06月09日 05時00分 公開
[鈴木友宏NTTデータ先端技術株式会社]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 2022年5月23日、.NET MAUI(Multi-Platform App User Interface)がGA(一般提供)されました。そして.NET MAUIのリリースをもって、.NET 6ではクロスプラットフォーム化が「いったん完成」の域に達します。

 「クロスプラットフォーム」という言葉が一般的になって10年ほど経過していますが、.NETの世界では「Unity」を除き、クロスプラットフォームはあまり普及していません。

 .NET 6の現状を把握し、具体的な移行方法を学ぶ本連載「.NET 6移行入門」。前回では.NET 6で開発できるアプリの種類について総括しました。Windowsアプリを例にしても、WinForms、WPF(Windows Presentation Foundation)、WinUI 3といった世代ごとのフレームワークの存在やクロスプラットフォーム化によってモバイルアプリの流れをくむMAUIも利用可能になるなど、同じ種類のアプリを開発する方式が複数ある状況になっており、選択が難しくなっています。また、今後もクロスプラットフォーム化の流れが後退することはないと考えられます。

 この10年でアプリの主要な動作プラットフォームの主役はPCからスマートフォンに移り変わっている背景の中で.NET 6への移行時にも、現時点でそのアプリがクロスプラットフォームを必要としているかどうかに関係なく、将来を見据えてクロスプラットフォーム観点での検討する価値はあると考えられます。今回は、.NET 6におけるクロスプラットフォームの意義について考えていきます。

なぜクロスプラットフォームは普及しなかったのか

 一般的になった当初、クロスプラットフォームはiOS、Androidのアプリを一括で開発する目的で導入されていきました。

 当時真っ先にメリットとして挙げられたのはアプリの共通化による効率化、つまりコストダウンでした。ところが、アプリを開発してみると、クロスプラットフォーム開発ではネイティブ開発の知見にプラスしてクロスプラットフォームフレームワーク自体の知見も必要になることが分かりました。そのため、「学習コストがかさみ、思うようにコストダウンできない」「クロスプラットフォームフレームワーク自体や各種ツールの使い勝手や制限事項などによって品質の保証が難しい」といった問題が発生しました。その結果、クロスプラットフォームへの期待感は低下し、ネイティブ開発への揺り戻しが起こって今に至っています。

 では、「クロスプラットフォームは不要な技術なのか」というと、「そうではない」と筆者は考えています。クロスプラットフォームのゴールはターゲットプラットフォームに依存しない共通化された「Write once, run anywhere」のアプリ開発ですが、当初クロスプラットフォームのメリットとして開発コストの削減が注目され過ぎたことが問題だったと考えられます。

 当時の失敗を振り返ると、クロスプラットフォームで開発するには開発側もクロスプラットフォームに対応できる体制として、「ターゲットプラットフォームに依存しない汎化(はんか)された知見を深めること」「経験がないプラットフォームに短期間で対応できる開発プロセスを確立すること」「利用するクロスプラットフォームのSDKやツールの開発にもコミットし、ある程度の開発ツール起因の問題までは自チームで解決できる体制」などが必要だったのではないでしょうか。

アプリケーション アーキテクトの重要性

 これらのことを主導するには、アプリケーション アーキテクトの役割が重要になります。

 「ターゲットプラットフォームに依存しない汎化された知見」というのは、「UI、各種センサー、アプリの処理フロー、バックエンドとのインタフェースやセキュリティなどに関して、具体的にアプリケーションコードをどのような構文で記述するか」という知識ではなく、昨今のトレンドにのっとった共通認識として設計や実装パターンの知見です。

 これについては、クロスプラットフォームのSDKはその多くがオープンソースソフトウェア(OSS)ですから、複数のクロスプラットフォームのSDKを検証し、ソースコードを解析することで知見がたまります。

 「経験がないプラットフォームに短期間で対応できる開発プロセス」というのは、UI、各種センサー、アプリの処理フロー、バックエンドやセキュリティなどに関して汎化された知見を背景に、各プラットフォーム固有のAPIや動作を公式情報から素早く理解し、アプリケーションのコードに落とし込める能力です。この能力を磨くには日常的に検証を行い、具体化された知見を積み上げ、それと汎化された知見をひも付けることが必要です。

 その知見を社内やチーム内で共有できる状態に整備することで、チームの実力が向上します。

 「利用するクロスプラットフォームのSDKの開発にもコミットし、ある程度の開発ツール起因の問題までは自チームで解決できる体制」というのは、昨今の開発のスピード感の中でSDKが枯れるまで待てない状況において、クロスプラットフォームのSDKに機能が足りない場合や問題が発生した場合に、自分でIssue(イシュー)を立て、場合によっては自分で問題を改修し、コントリビューションするような動きです。

 以上の3つのような動きができることで、以下のようなクロスプラットフォームのメリットを効果的に享受でき、デメリットを軽減できます。

.NET 6におけるクロスプラットフォームのメリット

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。