クロスプラットフォームとは? 開発上のメリット&デメリット、種類、主なツールについてわかりやすく解説!
クロスプラットフォームとは、WindowsやmacOS、iOS、Androidなど異なる複数のOS上で同じ仕様のアプリケーションを動作させるプログラムのことです。マルチプラットフォームと呼ばれることもあります。
この記事では、クロスプラットフォームの概要とその種類、代表的な開発ツールについて取り上げます。
クロスプラットフォームとは
クロスプラットフォームとは、Windows、macOS、Linux、iOS、Androidなど異なるプラットフォームにおいて同じ仕様のアプリケーションを動かすことができるプログラムのことを指します。
ITソフトウェアというものは基本的に、動作および利用する環境をあらかじめ想定した上で開発を進めていきます。そのため、ある環境を想定して作ったソフトウェアは、ほかの環境ではそのまま使うことができません。
ところが、近年多くのプラットフォームが林立し、単一のプラットフォームにしか対応できないとなると利便性が失われてしまいます。
そこで、一つのプログラムで複数のプラットフォームに対応できることが求められてきました。
特にスマホアプリの開発においては、iOSとAndroidの両方に対応していく必要性から、クロスプラットフォームが多く用いられます。
クロスプラットフォームのメリット・デメリット
クロスプラットフォームを使うメリット・デメリットを知っておきましょう。
クロスプラットフォームを使うメリット
クロスプラットフォームを用いる主なメリットには、以下の通りです:
・一度の開発で複数のOSに対応した開発を一気に行うことができる
・既知の言語知識を活用でき、対応できる開発エンジニア人材を確保がしやすい
・複数のプログラムを開発する場合に比べ開発工数及び費用が大幅に削減できる
クロスプラットフォームを使うデメリット
クロスプラットフォームを使うデメリットとして、以下の3つが挙げられます。
・対応OSの一部に発生する不具合に影響を受ける可能性がある
・各OSのアップデート時期や内容により最新バージョンへの対応にタイムラグが起きうる
クロスプラットフォームの種類
クロスプラットフォームを実現するための仕組みは大きく分けて3種類あります。
【ネイティブ型/ネイティブUI】
プログラミング言語を解釈し、目にみえる形に描画するシステムのことを「レンダリングエンジン」といいます。
ネイティブ型は、OS上のレンダリングエンジンを利用するクロスプラットフォームです。固有のプログラミング言語でUIを操作する記述を行い、その命令をそれぞれのOSのUI(ネイティブUI)に変換し、画面表示(レンダリング)を行います。そのため、高速処理が可能であり、ネイティブアプリ同等のUI表現が可能になります。
【独自レンダラ型】
上記のネイティブ型では、どうしてもネイティブUIに依存した描画表現となり、自由度が足りない面があります。そこで独自レンダラ型では、クロスプラットフォーム独自のシステムでレンダリングを行うことで、OSに依存しないグラフィック表現が可能です。こちらも比較的高いパフォーマンスで処理ができ、ゲーム開発にも向いています。
【ハイブリッド型】
WebView上でネイティブ機能を用いるハイブリッド型と呼ばれるプラットフォームがあります。
OSの機能を直接使って開発するのではなく、Web上であれば、HTMLやCSS、Javascriptなどのプログラム言語を利用できるため、開発が比較的容易になります。
一方、レンダリング機能の一部をWebに頼る分、処理スピードが出せず、またネイティブ型ほど高度な機能を持たせることもできません。
クロスプラットフォームに使われる主なツール
Flutter
Flutter(フラッター)は、Googleが開発しているオープンソースのフレームワークです。クロスプラットフォームに対応しており、ワンソースで複数のプラットフォーム(iOS、Android、Web、Windows、Mac、Linux)に対応したアプリを開発することができます。
プログラミング言語には、同じくGoogleがJavaScriptが持つ課題を解消するために2011年に開発した「Dart」が採用されています。
記述したコードをリアルタイムで反映する「ホットリロード」に対応し、動画が高速です。
Google Adsなどに採用されていて注目度の高いフレームワークです。
React Native
React Native(リアクトネイティブ)は、Meta Platforms(旧Facebook)が開発したオープンソースのフレームワークです。「React」というWebアプリを構築するためのフレームワークをそのまま引き継いで設計されました。
React NativeはReactと同様、JavaScriptを使用しているため、Web技術を活用しながら内部的にはネイティブのレンダリングAPIが呼び出される仕様になっているため、ネイティブ環境と変わらないUIが提供できます。
ネイティブ開発経験がなくても、日頃からReactやJavaScriptに慣れ親しんだ技術者であれば、ReactNativeであればクロスプラットフォーム開発に参画しやすい点も見逃せません。
Meta社傘下のInstagram、Facebookのほか、Microsoft のSkypeなどに採用されています。
Xamarin
Xamarin(ザマリン)は、Microsoftが提供するオープンソースのフレームワーク「.NET Framework」の環境を用い、デバイスやOSに依存せず、多様なアプリケーションを構築できます。
Xamarinでは、Microsoftが開発した「C#」というプログラミング言語であらゆるネイティブAPIの処理を記述できるため、ネイティブアプリとほぼ同じことを比較的容易に実装できます。
リレーショナルデータベースや XML に対する操作をプログラミング言語で記述できる「LINQ」や、無名のメソッドを簡単に記述できる「ラムダ式」を活用しアプリを開発できるため、C#や.NET Frameworkの経験があるエンジニアであれば対応しやすいフレームワークです。
C#はもともとWindows向けの言語でしたが、Mac向けの開発環境であるVisual Studio for Mac上でXamarinを用いることができ、すなわちMacでも開発が可能です。
よく知られたところでは、NHK紅白歌合戦、新型コロナウイルス接触確認アプリやNintendo Switch Onlineに使われています。
Unity
Unity(ユニティ)は、Unity Technologiesが提供するゲーム向けの開発プラットフォームです。プログラミング言語は「C#」が基本です。もともとMac向けの開発環境でしたが、現在はWindowsやiOS、Androidといったスマホアプリや、さらにNitendo SwitchやPlayStation4など多様なゲーム機器にも対応しています。
Unityでは、3D描画やサウンド再生もできます。「アセットストア」という、ほかのユーザーが作成したプログラムの部品や素材が購入できるマーケットプレイスもあり、自前で一から手がけるには工数がかかる3Dモデルや音楽などを容易に入手できるメリットもあります。
そして、話題のVR(仮想現実)やAR(拡張現実)を駆使したリッチなコンテンツにも向いています。
ポケモン Go、ドラゴンクエストVIII 空と海と大地と呪われし姫君、白猫プロジェクトなどに採用されています。
まとめ
NTQでは、クロスプラットフォームを用いたアプリ開発にも実績があり、各種レンダリング手法を用いた開発も行っています。クライアント様の要望に対し、適切なフレームワークによる開発をご提案できます。
クロスプラットフォームを使ったアプリケーション開発をお考えなら、ぜひ一度お気軽にご相談ください。