
スマホアプリ開発を行う上で、気をつけなければならないことは、世の中にはさまざまなOSが存在しているということです。
この点を解決するには、WindowsやMacOSなど複数のOS上で同じ仕様のアプリケーションを動作させることができるプラットフォームである、クロスプラットフォームを用いるという方法があります。マルチプラットフォームとも言われるこの仕組みは、果たしてどのようなものなのでしょうか?
こちらのコンテンツでは、アプリ開発のプラットフォームについて触れた後、クロスプラットフォームを使用した際のメリットやデメリット、そしてクロスプラットフォームの開発に利用出来る主なツールについてご紹介していきます。日常生活ではあまり聞きなれない言葉が登場しますが、本記事を何度か読んでいただくと、ご理解いただけると思います。是非最後までお付き合いください。
クロスプラットフォームとは何か?
まずクロスプラットフォームとは、Android、Windows、macOSなどの異なる環境でも同じ仕様のアプリケーションを動かすことが可能なフレームワークを指しています。本来、スマホアプリを含むソフトウェアは使用する動作環境をベースに開発されます。それ故、想定されていない環境では使用できないことになります。しかし、昨今では動作環境が多様化しており、このような仕様では利用者の幅が狭まることとなるため、同じプログラムでも様々な環境下で使用可能なクロスプラットフォームが登場してきました。この後触れますが、React NativeやFlutterといったフレームワークが該当します。
クロスプラットフォームのメリットとは?
以下に掲げる3点がクロスプラットフォームを利用する主なメリットとして考えられます。
- 複数の環境に適応した開発が1度で可能になる
- 開発工数やコストを削減できる
- エンジニアの確保がしやすい
・複数の環境に適応した開発が1度で可能になる
React NativeやFlutterといったクロスプラットフォームを使用すると、開発の大部分を共通化できます。具体的には、基本的なデータベースへのアクセス、通信処理に関するプログラム、データを動かす部分の共通化が可能になります。
・開発工数やコストを削減できる
React NativeやFlutterのようなクロスプラットフォームを活用することで、ソースコードの共通化を図ることができます。また、スマホアプリのリリース後に発生するバグ(不適合)の対応も1つのソースコードを改修することで済むケースが増えますので、SwiftやKotlinといったネイティブ開発言語と比較すると改修稼働も大幅に減らせるでしょう。機能改良や新機能追加といった対応も同様に、ネイティブ開発言語と比べると稼働量を抑えることができます。
・エンジニアの確保がしやすい
クロスプラットフォームの概念が登場した直後は、当たり前ですが、React Native、Flutterを使えるエンジニアがほとんどいませんでした。React Nativeは2013年頃、Flutterは2018年頃にリリースされ、そこから10年近くの年月が経ち、React Nativeを使うエンジニア、Flutterを使うエンジニアが徐々に増えています。これまではそれぞれのOS、ネイティブ開発言語ごとにそれぞれのエンジニアを確保、あるいはそれらの技術習得が必要でしたが、React NativeやFlutterといったクロスプラットフォームを採用することで、大部分のソースコードは1つの開発言語で組み立てることができるようになり、エンジニアの確保がしやすくなったと言えるでしょう。
これらのメリットからお分かりかと思いますが、クロスプラットフォームを活用することで、かなりの労力と時間を削減できます。
それでは、このように良い点が多いクロスプラットフォームですが、デメリットはどのようなことが挙げられるのでしょうか?次の章でご紹介します。
クロスプラットフォームのデメリットとは?
クロスプラットフォームのデメリットは、以下の2点が考えられます。
- エラーの所存が不明確になることもある
- ネイティブ開発言語と比べて開発事例が少ない
- OSに依存したバグ対応に追われることもある
- OSのバージョンアップ対応等に課題がある
・エラーの所存が不明確になることもある
クロスプラットフォームでは、各OS毎の不具合が見つけにくいといったデメリットがあります。各OSの仕様が少しずつ異なることから、ある一部のOSのみの修正をしなければならなくなることもあります。その場合、共通プログラムの部分的な対応だけでは改修が難しくなるため、結果として、不具合の出たOSに対応する言語を扱えるエンジニアが修正を行うケースも出てくるでしょう。またモノによっては管理が煩雑になることも考えられます。
・ネイティブ開発言語と比べて開発事例が少ない
Objective-CやSwift、JavaやKotlinといった開発言語と比べると、クロスプラットフォームの開発事例は少ないです。そのため、インターネット上に開発事例や実装事例が少なく、モノによっては開発や実装ができない、時間がかかるといったケースも出てくるでしょう。
・OSに依存したバグ対応に追われることもある
前述の通り、クロスプラットフォームのメリットは、1つの環境で複数のデバイス機器に対応したスマホアプリを開発できることですが、OS関連の不具合が発生すると、それぞれのOSに合わせた開発言語で対応しなければならないケースも出てきます。
・OSのバージョンアップ対応等に課題がある
Appleが提供するiOS、Googleが提供するAndroidOSは定期的にアップデートが行われています。ネイティブ開発言語の場合、スマホアプリをOSに合わせて対応していきますが、クロスプラットフォームを利用する場合、クロスプラットフォームが最新のOSのバージョンに対応することを待たなければならないケースがあります。結果として、OSやデバイス機器に合わせた最新の機能開発に課題が残る、というのもクロスプラットフォームのデメリットとしてあげられるでしょう。
アプリ開発のプラットフォームの種類
ここでは、一旦アプリ開発のプラットフォームについて触れたいと思います。アプリ開発のプラットフォームは主に以下の3種類に分けられます。
一つ一つ見ていきましょう。
・ネイティブ型
ネイティブ型とは、各OSのプラットフォームの描画エンジンを使用するタイプを指します。フレームワークからOSのUI部分を操作する感覚と等しいため、扱いやすく感じるでしょう。他の2種類よりも処理が高速なのも特徴の1つです。
また、オフライン環境でも利用が可能なアプリ開発に向いているタイプでもあります。
・ハイブリッド型
WebviewというOS上で動作するソフトウェアを利用し、HTML5/JavaScriptといったWebベースで動作をするツールをさします。OS上で動作・Webページを表示することから、ハイブリッド型と呼ばれています。機能の一部をWebに頼るため、処理速度が遅いのが難点と言えるでしょう。
・独自レンダラ型
独自のレンダリングエンジン(独自のシステム)により画面の描画を行う方法で、OSに関係なく活用が可能なところがメリットです。OSに依存せずクロスプラットフォームを実現する方法で、主にゲーム開発に向いています。
クロスプラットフォーム開発の代表的なフレームワーク
既にご説明したものもございますが、クロスプラットフォームの代表的なフレームワークについてご紹介します。
- Flutter
- React Native
- Cordova
・Flutter
Googleが提供するクロスプラットフォームで、iOSとAndroidのアプリを一度に開発できます。Flutterは、DartといJavaScriptの設計を踏襲し、開発した言語を使います。Flutterの詳細については、下記の記事にまとめておりますので、より詳しく知りたいという方はそちらをご確認いただけたらと思います。
・React Native
Facebook(現在のMeta社)が開発したオープンソースのネイティブアプリケーションフレームワークになります。Web開発向け言語であるJavaScriptを用いてネイティブアプリを開発できる、iOSとAndroidの両方で動作するクロスプラットフォームであることから、React Nativeを活用することで、人材確保や工数削減といった効果が期待できます。
・Cordova
Apacheソフトウェア財団が提供するモバイルアプリ開発環境です。ハイブリッド型クロスプラットフォームを実現し、独自のプラグインを作成することもできるため、柔軟性の高い開発ができることが大きな特徴です。
まとめ
いかがでしたでしょうか。アプリ開発に必須な技術、「クロスプラットフォーム」。ネイティブ型・ハイブリッド型・独自レンダラ型の各々には、それぞれ上記に挙げたような特徴があります。各企業で適したタイプを見出し、このツールを活用して開発を進めていきましょう。
監修者
鈴木聡一郎
取締役
<略歴>
慶応義塾大学経済学部、慶応義塾大学大学院・慶応義塾大学ビジネススクールMBA(経営学修士取得)卒業。
大手目がベンチャー企業の株式会社ディー・エヌ・エーで国内利用者数約200万人のメガヒットアプリ、マンガボックスアプリをゼロベースから開発。その後複数の大手企業を経て、株式会社GeNEEの取締役に就任。
<資格>
MBA(経営学修士)等