全3902文字
PR

 「1つのコードで複数のOSやプラットフォームに対応したアプリケーションを開発できる」――。この言葉に引きつけられる開発者は多いのだろう。その気持ちはとてもよく分かる。1つのコードベースに集約できれば、ロジックの改訂が1度で済む。利用環境を限定しなくて済めばより多くの利用者に使ってもらえる。

 その1つが、米Microsoft(マイクロソフト)が2022年5月23日に開発者向け会議「Microsoft BUILD 2022」で正式リリースを発表した「.NET MAUI(Multi-platform App UI)」だ。とはいえこの種の技術は意外とうまくいっていない。それなりに使われはするものの、誰しもこぞって使うという感じにはなっていないのだ。

.NET MAUIのアプリをVisual Studio 2022プレビュー版で作成しているところ
.NET MAUIのアプリをVisual Studio 2022プレビュー版で作成しているところ
[画像のクリックで拡大表示]

Javaはクライアントよりもサーバーで活躍

 今は昔、米Sun Microsystems(サン・マイクロシステムズ、当時)が「Java」を公開したのが1995年。そのときはWebブラウザーのプラグイン(アプレットと呼ばれていた)として作られたが、翌年には「JDK(Java開発キット)1.0」が公開。そのときに「AWT(Abstract Window ToolKit)」と呼ぶGUI(グラフィカル・ユーザー・インターフェース)構築部品も用意されていて、GUIを持つアプリも開発できた。「Write Once,Run Anywhere(WORA)」がJavaのキャッチフレーズとなった。

Javaで作られたマルチプラットフォームアプリの例。以前「記者の眼」で紹介した折り紙アプリ「Oripa」はJavaで作られている
Javaで作られたマルチプラットフォームアプリの例。以前「記者の眼」で紹介した折り紙アプリ「Oripa」はJavaで作られている
[画像のクリックで拡大表示]

 ただ実際にはご存じの通り、Javaはクライアント用のソフト開発よりもサーバー用のソフト開発に重宝された。WORAという特性は、あまり生かされなかった。AWT以降も「JavaFx」や「Swing」といったGUI開発のフレームワークが提供されたが、部分的な利用にとどまった。

FlashはWeb限定で普及したが

 マルチプラットフォーム対応のアプリ実行環境として最も成功したのは米Adobe(アドビ)の「Flash」だろう。しかしこれもあくまでもWebブラウザーのプラグインとしてだけである。

 Flashの技術を利用した単独のアプリ実行環境として「AIR(Adobe Integrated Runtime)」が提供されたが、こちらは普及したとは言い難い。その後米HARMAN International(ハーマンインターナショナル)がAIRを買収した。現在も同社が提供を続けている。

Adobe AIRのサイト
Adobe AIRのサイト
(出所:ハーマンインターナショナル)
[画像のクリックで拡大表示]

 Flashは米Apple(アップル)が同技術の排除を明確に打ち出し、「iPhone」や「iPad」では使われないことが明確になったのが致命的だった。AdobeはFlashの実行環境である「Flash Player」の開発と配布を2020年に終了している。

 使われたという意味からすると、これらは必ずしも失敗ではない。だが現在広く使われているかというと残念ながら答えはノーだ。その理由の1つが、いずれも実行環境として独自のランタイムを必要とした点ではないだろうか。Javaなら「Java Runtime Environment」であり、AIRなら「Adobe AIR Runtime」である。アプリの配布だけでも面倒なのに、別途「これも入れてください」というのは意外とハードルが高いはずだ。