「クロスプラットフォームってどんな意味?」
アプリ開発の需要が増え、耳にする機会が増えた“クロスプラットフォーム”という言葉。一体どんな意味かご存じでしょうか?
本記事では、クロスプラットフォームの意味を知らない方へ向け、クロスプラットフォームとは何か?解説していきます。意味の理解だけでなく、メリットデメリット、クロスプラットフォームの種類や事例を学べます。ぜひ最後までご一読ください。
目次
1. クロスプラットフォームとは
まずそもそもクロスプラットフォームとは何か?
クロスプラットフォームとは、Windows・MacOS・iOS・Androidなど異なるプラットフォーム上で同じ仕様のアプリケーションを動作させることを可能にしたプログラムです。複数のプラットフォームに対応したアプリケーションを一つの環境、一つの言語で開発できることから、マルチプラットフォームとも呼ばれています。
2. クロスプラットフォームに注目が集まった背景
クロスプラットフォームに注目が集まった背景としては、開発期間や開発コストを大幅に削減できることが関係しています。例えば、スマホアプリの開発を行う場合、iOS向けとAndroid向け両方を開発する必要がありますが、クロスプラットフォームを用いればそれぞれの開発を一括で行えるようになります。そのため従来であれば「iOS向けのアプリ開発では、XCodeという開発環境を用意してObjective-CやSwiftなどのプログラミング言語を使う必要がある」、「Android向けのアプリ開発では、Android Studioという開発環境を用意し、JavaやKotlinなどのプログラミング言語による開発が必要」など、別々の開発が必要だった部分もクロスプラットフォームによりまとめられ、開発期間とコスト削減につながるようになりました。
近年のアプリ開発はスピード感も重要ですが、各OSごとに開発を進める手法では多くの手間と時間を要します。ゆえに、この点を解消できるクロスプラットフォーム開発に注目が集まったといえます。
3. クロスプラットフォームのメリット
ではここからはクロスプラットフォームを活用するメリットとデメリットを紹介していきます。まずはメリットです。
3-1. 開発に関する工数やコストを削減できる
クロスプラットフォーム開発には様々なメリットがありますが、最大のメリットは開発に要する工数やコストを削減できることです。上記の通り、従来のアプリ開発では各プラットフォームごとに開発を行う必要がありました。しかし、クロスプラットフォーム開発では一つの開発環境、一つのプログラミング言語で開発を進められるので、開発にかかる工数やコストを大幅に削減できます。
3-2. 機会損失を避けられる
機会損失を避けられるのもメリットのひとつです。機会損失とは、アプリを利用するユーザーを獲得できる機会のことを指します。例えば、スマホアプリの開発において機会損失を避けるには、iOSとAndroid両方に対応したアプリを開発する手段が考えられます。しかし開発体制が小規模の企業では予算の都合などで、一方のOSに絞らざるを得ないケースもあり、機会損失につながる場合もみられるでしょう。この時、複数のプラットフォームに容易に対応できるクロスプラットフォームであればOSを1つに絞る必要なく、iOSとAndroid両方に対応することができます。これにより、開発環境が小規模であっても機会損失を避けられるようになります。
3-3. 仕様変更や保守運用のコスト削減につながる
仕様変更や保守運用のコスト削減につながる点もメリットといえます。開発したアプリをユーザーに使い続けてもらうためには、リリース後も保守運用を徹底しつつ、定期的な仕様変更を行っていく必要があります。単一の環境・言語で開発できるクロスプラットフォーム開発では、仕様変更にスムーズに対応できるとともに、不具合(バグなど)解消にかかるコストを削減できます。
4. クロスプラットフォームのデメリット
次に、クロスプラットフォームを活用するデメリットを紹介します。
4-1. OS依存で発生したエラーに対応しづらくなる
まず1つめのデメリットが、OS依存で発生したエラーに対応しづらくなることです。クロスプラットフォーム開発で用いる言語は一つだけですが、OS依存で発生したエラーについては、そのOSに対応した環境で処理しなければなりません。例えば、iOSとAndroidの両方に対応したアプリでiOSのみにエラーが発生した場合は、XCode上でObjective-CやSwiftを使って対応する必要があります。そのため、各プラットフォームに対応できるエンジニアが在籍していなかった場合は、外注業者に頼らざるを得ない状況に陥る可能性も想定されます。
4-2. OSのアップデートへの対応が遅れる可能性がある
2つめのデメリットが、OSのアップデートへの対応が遅れる可能性もある点です。OSのアップデートが実施されると、アプリを最新のOSに対応させる必要もありますが、クロスプラットフォームの場合、ツールがOSのアップデートに対応するまで待つ必要もあります。アップデート直後に対応してくれるツールもありますが、最新OSへの対応が遅れる可能性がある点も考慮しておきましょう。
5. クロスプラットフォームの種類とは
近年、ネイティブアプリでもクロスプラットフォーム開発に対応できるツールが数多く登場していますが、一口にクロスプラットフォームツールと言っても、大きくネイティブ型・ハイブリッド型・独自レンダラ型の3種類に分けられます。
5-1. ネイティブ型
ネイティブ型は、OSプラットフォームの描画エンジンを利用した画面表示を行うタイプです。OSごとに備わっているシステムを利用しているため、ハイブリッド型や独自レンダラ型と比べて処理速度が速いというメリットがあります。また、ネイティブアプリと同等の操作性と高度なUIデザイン設計が可能なのも特徴です。OSへの依存度が高いという側面はありますが、ネイティブ型は主にオフライン環境で操作するアプリ開発に適しています。
5-2. ハイブリッド型
ハイブリッド型は、WebViewを利用して開発するタイプです。WebViewとは、ChromeやSafariといったWebブラウザのように、OS上でWebページを表示できる機能を持つソフトウェアでスマホのアプリに組み込まれています。WebViewを利用したソフトウェアは、OS上で動作してWebページを表示させるためハイブリッド型と呼ばれています。クロスプラットフォームでOSの機能を直接編集することはできませんが、Web上の機能であればHTML・CSS・Javascriptなどの言語を使って開発をすすめることが可能です。ただし、機能の一部がWebに依存するため、処理速度が遅かったり、ネイティブ型と比べて高度な機能を実装できなかったりといったデメリットも見受けられます。
5-3. 独自レンダラ型
独自レンダラ型は、独自のレンダリングエンジンを利用したタイプです。レンダリングエンジンとは、プログラミング言語を解釈して描画するシステムのことで、WebブラウザやWebViewはHTMLレンダリングエンジンによりHTMLを解釈した上で描画しています。ネイティブ型は高速処理が実現可能で、操作性も高いのがメリットですが、OSのUIに依存するという側面があります。しかし、独自のレンダリングエンジンを使用した独自レンダラ型は、OSに依存しないグラフィック表現が実現できます。処理速度も速いので、独自レンダラ型は主にゲーム開発現場で用いられています。
このように、ネイティブ型・ハイブリッド型・独自レンダラ型はそれぞれ異なる特徴を持つので、それぞれの特徴を理解した上で自社のアプリ開発に適したクロスプラットフォームツールを選ぶことが大切です。
6. クロスプラットフォーム開発に使える代表的なツールとは
現在、クロスプラットフォーム開発に使えるツールは数多く登場していますが、ここでは代表的なツールを4つご紹介します。
6-1. ReactNative
ReactNative(リアクトネイティブ)は、Meta Platforms(旧Facebook)が開発したオープンソースの開発環境で、ネイティブ型に分類されます。モバイル向けのJavascriptの開発環境となっており、iOS・Android向けのネイティブアプリを開発することが可能です。同社のJavascriptライブラリである「React」を継承した設計となっているため、Reactを利用した経験があるエンジニアには使いやすいでしょう。
6-2. Flutter
Flutter(フラッター)は、Googleがリリースした開発環境で、独自レンダラ型に分類されます。Googleが開発した「Dart」という言語を用いて開発するのが特徴で、iOSとAndroidの両方に対応したスマホアプリを開発可能です。UI自由度の高さ、処理速度の速さが特徴のツールで、ホットリロード機能によりアプリに対してプログラムの変更をリアルタイムで反映できるというメリットもあります。一方で、日本ではDartを扱えるエンジニアが少ないという側面があるので注意が必要です。DartはJavascriptが抱える問題を解決するために開発された言語なので、Javascriptを扱えるエンジニアであれば比較的簡単に習得できますが、他の言語と比べると日本語での情報が乏しいので習得に時間がかかる可能性があります。
6-3. Unity
Unity(ユニティ)は、Technologiesが提供している開発環境で、主にゲーム開発目的で利用されています。独自レンダラ型に分類されるツールで、C#やJavascriptを用いてネイティブアプリを開発することも可能です。もともとはMacOS向けの開発環境でしたが、現在はWindowsやiOS、Androidだけでなく、様々なゲーム機にも対応しています。VRやARに対応したアプリ開発も可能で、Unityは開発者同士のコミュニケーション環境も充実しています。他の開発者が作成したプログラム部品や素材を購入できるアセットストアも提供されており、3Dモデルや音楽など自作するには時間がかかる素材も簡単に入手可能です。
6-4. Swift
Swift(スウィフト・スイフト)は、Appleが開発したプログラミング言語です。Objective-Cの後継となる言語で、iOS・MacOS・Linuxで利用することができます。学習コストが低い、実行速度が速いといった特徴があるため、現在はiOSアプリ開発における中心的な言語となりつつあります。
7. クロスプラットフォームを用いた具体的な事例とは
様々なメリットがあるクロスプラットフォーム開発は、今後益々需要が高まることが予想されていますが、最後にクロスプラットフォームを用いて開発されたアプリの事例をご紹介します。
7-1. Ketchup Master
最初の事例は、Unityを用いたハーパーカジュアルゲームの事例です。敵のホットドッグにケチャップを吹きかけ、ゴールを目指すユーモアあふれるハイパーカジュアルゲームとなっています。
7-2. 外国人向けの日本語学習スマホアプリ
次の事例は、日本語能力試験N3の取得を目指すレベルを想定して作られた「外国人向けの日本語学習スマホアプリ」と「学習管理のための管理者システム」の事例です。
公開時点のターゲットはAndroidユーザーですが、長期的な運用を見据えiOSが普及している地域でも使えるようにしたいという視点からFlutterを用いた開発を行った事例です。
7-3. ポケモンGO
次の事例は「ポケモンGO」です。2016年にリリースされ、世界的に大ヒットしたポケモンGOはUnityを利用して開発されました。ポケモンGOはAR技術を活用することで、現実世界にポケモンが現れる仕組みを実現しています。AR技術の他にも位置情報を取得するGPS機能も活用されていますが、これらはUnityを活用することで比較的簡単に実装することが可能です。またUnityは、ポケモンGO以外にも「ドラゴンクエストウォーク」「スーパーマリオラン」「白猫プロジェクト」など様々な人気ゲームの開発に使われています。ゲーム以外にも、医療教育分野で使われている3D人体解剖アプリの「teamLabBody」、竹中工務店が提供している建物の内部や外部をVRで体験できるシミュレーター「visiMax Mobile」などもUnityで開発されています。
7-4. マインクラフト
次の事例は、世界的に高い人気を誇っている「マイクラ(マインクラフト)」です。マイクラは、もともとPC向けのゲームとして開発されましたが、現在はPC向けのJava版(Java Edition)と統合版(Bedrock Edition)の2種類が存在します。クロスプラットフォームなのは統合版で、PC・スマホ・タブレット・各種ゲーム機器など様々な端末でプレイすることができます。
7-5. UberEats
次の事例は「UberEats」です。UberEatsには、クロスプラットフォームのReact Nativeが活用されています。React NativeはFacebookの開発に使われたツールとして有名ですが、UberEatsでは飲食店側が利用するレストラン用のダッシュボード開発にReact Nativeが採用されました。レストラン用のダッシュボードはもともとWeb用に構築されていたため、それをそのまま活用できるReact Nativeは最適なツールだったとされています。
7-6. Instagram
最後の事例は「Instagram」です。写真や動画の投稿に特化したSNSである「Instagram」でもReact Nativeが活用されています。Instagramでは2016年初頭からReact Nativeを導入し始めたとされており、最初にプッシュ通知をReact Nativeで実装し、次にポストプロモートやSMSキャプチャチェックポイントなど5つの機能を段階的に実装していきました。
8. まとめ
クロスプラットフォームを活用すれば、複数のOSに対応したアプリを一括で作れるようになります。様々なメリットもありますが、デメリットも存在しています。しっかり押さえておきましょう!
9. クロスプラットフォームを用いたアプリ開発を得意とする会社
最後に、クロスプラットフォームを用いたアプリ開発を得意としている会社をご紹介していきます。クロスプラットフォームを用いたアプリ開発の外注を検討している方はぜひ参考にしましょう。
株式会社バイタリフィ
本記事を執筆している株式会社バイタリフィでは、FultterやReactNative、Unityをはじめとしたクロスプラットフォーム開発を得意としています。また、アプリ開発の企画部分から保守運用まで一気通貫で対応可能なので、些細なお悩みにもお答え可能です。ぜひお気軽にご相談いただけますと幸いです。