スマホアプリを作りたいのだけど、何を勉強すればいいのかな。
スマホアプリ製作を始めたいなら、iPhoneやAndroidの2つのプラットフォームで動く「クロスプラットフォーム開発」を知ることが大切だよ。
プログラミングを勉強する理由の一つに、スマホアプリを作ってみたいというのがあると思います。
スマホアプリは、大きくiOS、Androidの2大プラットフォームがあります。
スマホアプリを作るのに、それぞれの開発言語、開発環境が必要となり、自分のアプリを、iOS、Androidの両方でリリースしたいとなると、2倍の時間がかかります。
そこで、考え出されたのが、クロスプラットフォーム開発です。
このクロスプラットフォーム開発を解説します。
クロスプラットフォーム開発とは
クロスプラットフォーム開発は、異なるOSやデバイスなどのプラットフォームにおいて、同一アプリケーションを動かす仕組みのことです。マルチプラットフォームと呼ばれることもあります。
特に、ios、Androidといったスマホアプリ業界においては、近年リリースされるアプリのほとんどがクロスプラットフォームアプリとなっているそうです。
クロスプラットフォーム開発のメリット
クロスプラットフォームアプリ開発を行うことで、何がうれしいのでしょうか?
メリットを以下に挙げます。
コードの共通化
クロスプラットフォーム開発では、データベース、通信処理などのロジック部分のコードを共通化することができますので、開発に掛かる時間や費用などの工数を大幅に削減することが出来き、保守運用や品質管理においても効果があります。また、プラットフォーム(OS)に関係なく多くのユーザーにリーチできます。また、逆に、特定のプラットフォームに依存していないため、そのプラットフォームが廃れた場合にも、他プラットフォームへの乗換コストが不要となります。
開発の分業化
クロスプラットフォーム開発では、フロントサイドとネイティブサイドの開発の分業化をすることができるため、互いの開発を個別に行えるため、効率よく開発・テストを管理することができます。
柔軟な開発言語の採用
開発言語がOSに依存しなくなり、開発言語の選択に幅が出てきます。クロスプラットフォーム開発で使用される言語は、JavaScriptなどで、技術習得のための環境が整っています。
クロスプラットフォーム開発のデメリット
OSの機能に依存するコードは個別の実装が必要
通知機能などOSに大きく依存する機能については、各プラットフォームごとに実装する必要があります。また、フレームワークに依存しやすいため、複雑な機能・めずらしい機能を実装しにくく、特にプラグインが提供されていない機能は実装できないことが少なくありません。
ネイティブアプリより大概重い(動作が遅い)
OS上でスムーズな動作が可能であるネイティブアプリに比べると、クロスプラットフォームで作られたアプリは、動作が遅くなる場合もあります。
クロスプラットフォーム開発の種類
クロスプラットフォーム開発では、大きく以下の3つに区分けできます。
・ハイブリッド型
・ネイティブアプリ型
・独自システム型
種類 | ツール | 使用言語 | 会社 |
ハイブリッド型 | Apache Cordova | HTML,Javascript,CSS | Apacheソフトウエア財団 |
ハイブリッド型 | Electron | HTML,CSS,JavaScript | GitHub |
ネイティブアプリ | React Native | JSX,Javascript | |
ネイティブアプリ | Xamarin | C# | Microsoft |
独自システム | Unity | C# | Unity Technologies |
独自システム | Flutter | Dart |
ハイブリッド型について
ハイブリッド型とはHTML5/JavaScriptのWebベースで動作するツールです。
Webページを『Chrome』や『Safari』などのブラウザと同じように表示する機能を持ち、スマホのアプリに組み込まれております。
ブラウザのレンダリングエンジンを利用する為、ブラウザ志向の操作感が基本となります。
モバイルデバイスのカメラ、GPS、加速度センサーなどにアクセスするためのAPIを追加することにより、JavaScript、HTML、CSSといったウェブアプリケーション開発の技術でモバイルアプリケーションを開発することができるのが特徴である。
Cordova
Apache Cordovaは、モバイルアプリ開発向けのオープンソースフレームワークです。このフレームワークを使用すれば、クロスプラットフォームに対応しハイブリッド性を持ち合わせたモバイルアプリを開発できます。
開発にはHTML5、CSS3、JavaScriptなどのWeb標準技術を使用します。
Cordovaは開発されてから10年ほど経っているため、インターネット上に豊富なリソースが公開されています。また、アプリの機能を補強するためのプラグインも多数存在します。
アプリ開発環境「Monaca」のフレームワークとして採用されています。
Electron
Electronは、GitHubが開発したオープンソースのソフトウェアフレームワークである。
ChromiumとNode.jsを使っており、HTML、CSS、JavaScriptのようなWeb技術で、macOS、Windows、Linuxに対応したデスクトップアプリケーションをつくることができる。
ネイティブアプリ型
ネイティブ型とはOSプラットフォームの描画エンジンを使用することで、操作性が高くネイティブアプリと同等のUIを作成することができます。
ゲームアプリ、自己管理系ヘルスケアアプリなどのオフライン環境でも利用できるダウンロード型のアプリケーションに向いております。
クロスプラットフォームツールにおけるネイティブ型の代表的なサービスとして『Xamarin』や『React Native』が挙げられます。
『ネイティブ型の特徴』
・OS(デバイス)が提供する機能は、すべて利用できる
・操作性が高くネイティブアプリと同等のUIを作成することができる
・動作速度が早い
Xamarin
Xamarin は、.NET を使用して、iOS、Android、Windows 向けの最新で高性能なアプリケーションをビルドするためのオープンソースのプラットフォームです。
Xamarin は、基になるプラットフォーム コードと共有コードの通信を管理する抽象化レイヤーで、メモリ割り当てやガベージ コレクションなどの利便性を提供するマネージド環境で実行されます。
Xamarin を使用すると、開発者はプラットフォーム間でアプリケーションの 90% (平均) を共有できます。 このパターンにより、開発者はすべてのビジネス ロジックを 1 つの言語で記述 (または既存のアプリケーション コードを再利用) して、各プラットフォームでネイティブのパフォーマンスとルック アンド フィールを実現することができます。
Xamarin アプリケーションを PC または Mac で記述し、ネイティブ アプリケーション パッケージ (Android 上の .apk ファイルや、iOS 上の .ipa ファイルなど) にコンパイルできます。
React Native
React Nativeは、Facebookが開発したクロスプラットフォームのアプリ開発用フレームワークです。
React Nativeの開発言語は、JavaScriptです。そのため、JavaScriptのコードを書ければAndroidとiOSの両方で開発が可能になります。
また、実績も豊富で、FacebookやUberEatsなどの、日本中で有名なアプリもReact Nativeで開発されています。
独自システム型
独自レンダラ型とは独自のシステム(レンダリングエンジン)で画面への描画を行うことで、OSに依存しない仕様を実現することができます。独自レンダラ型の代表的なサービスとして『Unity』や『Flutter』が挙げられます。
『独自レンダラ型の特徴』
・OSに依存しない仕様を実現できる
・ゲーム開発に向いている
Flutter
FlutterとはGoogle社によって開発されたオープンソースのモバイルアプリケーションフレームワークです。主にAndoroidやiOS向けのモバイルアプリケーションの開発に利用されます。
Flutterは「クロスプラットフォームにおいて100%のコードを共通化しない」という選択をしており、各プラットフォームのOSの機能に大きく依存するコードについては、ネイティブの言語で実装する仕様になっております。
Flutterの特徴は『迅速な開発』『表現力温で柔軟なUI』『ネイティブパフィーマンス』を掲げております。
Unity
Unityとは2005年にUnity Technologies社が開発をしたゲームを開発するためのツールである人気のゲームエンジンです。
Unityはスマートフォン向けモバイル3Dゲームアプリ市場において約50%、AR/VR向けの3Dエンジンでは60%のシェアを獲得するゲームエンジン市場における世界トップのサービスです。
主にスマートフォン向けモバイルゲーム、ブラウザゲームなどの開発に使用されております。
まとめ
スマホアプリ開発の第一歩として、クロスプラットフォーム開発について、紹介しました。
コメント