iOSとAndroid、アプリ開発における違いは?同時に開発する方法も紹介

みなさんはスマートフォンというと何を思い浮かべるでしょうか。iPhoneを思い浮かべる人もいれば、Androidを思い浮かべる人もいるでしょう。どちらもスマートフォンではありますが、これらは「OS」が異なり、アプリケーションを開発する際の言語や審査方法などに違いがあります。
この記事では、スマートフォンに入れて使うアプリケーションの開発について、iOSとAndroidでの違いや、双方に対応したアプリケーションを同時に開発する方法を紹介していきます。
iPhoneやAndroidスマートフォン向けアプリ開発を検討中の方のために「アプリマーケティングの基礎知識」をまとめました。知っておけば企画段階で役立つ重要なポイントを中心にご紹介していますので、ぜひご覧ください。
【資料を読む】アプリマーケティングの基礎を解説!これを知っているだけでC向けアプリの企画が劇的に変わる!
【基礎】iOSとAndroidの違い
スマートフォンやパソコンのOSとは、Operation System(オペレーティング・システム)を略した言葉で、アプリやデバイスを操作するための基本のソフトウェアです。アプリケーションはOSごとに開発されるのが一般的であり、あるOSに向けて作ったアプリケーションを他のOSで動かそうとしても動きません。
iOSはApple社が作っているOSで、Apple社の作る機器以外には搭載されていません。
AndroidはGoogle社が作っているOSで、ソニーやシャープ、サムスン、ファーウェイなど様々な会社がAndroidOSを搭載したスマートフォンを作っています。
MMD研究所の「2019年12月 iPhone・Androidシェア調査」によると、日本国内のAndroidのシェアは57.2%、iOSのシェアが42.8%と、Androidが優勢ながらも両者5割前後のシェアを持っています。
参考に世界全体の状況も確認してみましょう。NetApplications.com「Operating System Market Share」にて2019年の12月のデータを見てみると、Androidのシェアは70.0%、iOSのシェアが29.5%、それ以外のOSのシェアが1割ほどと、Androidの勢力がより大きいことがわかります。
iOSとAndroid、アプリ開発における違い


ここでは、アプリ開発においてのiOSとAndroidでの違いを解説します。
開発言語の違い
まず、それぞれのOSのアプリ開発言語について紹介します。
iOS用のアプリを開発する際に使う開発言語
iOSのアプリを開発するために使われるプログラミング言語は、Objective-CとSwiftの2つです。
Objective-Cは、C言語をベースに開発された言語で、現在は主にiOSのアプリを開発する目的で使用されています。
SwiftはApple社が開発した、2014年登場の比較的新しいプログラミング言語です。2020年現在、Objective-CよりもSwiftが使われることが多くなっています。
SwiftにはObjective-Cとの互換性があり、1つのアプリを開発するのにObjective-CとSwift、両方の言語を使うことも可能です。
Android用のアプリを開発する際に使う開発言語
Androidのアプリを開発するために使われるプログラミング言語は、JavaとKotlinの2つです。
Javaは1995年に登場した、2020年現在も世界的にもっとも使われているプログラミング言語です。JavaScriptと混同されがちですが、名前が似ているだけでまったく別のものです。Javaはコンパイラ言語という種類に分類されており、RubyやPHPなどの他のプログラミング言語に比べ、処理速度の速いアプリを開発することができます。
Kotlinは2011年に登場したプログラミング言語です。2017年にAndroidの開発言語として使用されはじめた比較的新しい言語です。Javaよりも簡潔なコードで済むことや、開発においての安全性を担保しやすいことが特徴です。KotlinはJava言語との互換性を持っているため、Javaでコードが書かれている既存のアプリにKotlinのコードを足すことでアプリの内容を改良することが可能です。
開発環境の違い
アプリの開発をする際に必要なツールについて、iOS、Androidそれぞれに分けて説明します。
iOSアプリの開発ツール
iOSアプリを開発するには、Xcodeと呼ばれるツールが必要です。XcodeはApple社の提供する「Mac OS X」向けの統合開発環境であり、誰でも無償でAppStoreからインストールできます。
アプリを作るために必要な作業をすべてサポートするツールで、iOSのスマートフォンアプリの開発以外にも、Mac用のアプリやAppleTV用のアプリ、AppleWatch用のアプリなどApple製品全般のためのアプリを作ることが可能です。
ただし、Macでしかアプリの開発ができないため、Macを準備しておく必要があります。
Androidアプリの開発ツール
Androidアプリの開発をするには、Android Studioと呼ばれるツールが必要です。
Android StudioはGoogle社が提供するAndroidプラットフォームのための統合開発環境で、Androidのスマートフォンアプリの開発以外にも、Androidタブレット、AndroidTV、Android Auto(カーナビ)などのアプリの開発をすることができます。
Windows、MacOS、Linuxのいずれかの環境があれば、Android Studioを使ったアプリ開発が可能です。
開発費用
アプリの開発費用は、以下のように計算されます。
「開発費用=人件費+固定費用」
アプリ開発において、人件費は「人月(にんげつ)」という作業量を表す単位を用いるのが一般的です。これは、ある作業を1人で行った場合にかかる月数、もしくはその作業を1ヶ月で終わらせるために必要な人数を表しています。たとえば、4人月の作業を2人で行う場合にかかる月数は2ヶ月と見積もります。
1人のエンジニアが1ヶ月働く際にかかるコストを「人月単価」と呼びます。アプリ開発に携わる技術者として、システムエンジニアやプログラマーなどの職業がありますが、役割分担の違いにより人月単価は変化します。一般的な人月単価の目安は、以下の通りです。


初級(初歩レベル)システムエンジニア | 1人月60~100万円 |
中級(中堅レベル)システムエンジニア | 1人月80~120万円 |
上級(管理職レベル)システムエンジニア | 1人月100~160万円 |
下請け企業やフリーランスのプログラマー | 1人月40~60万円 |
大手企業のプログラマー | 1人月50~100万円 |
例として、4人月の作業を人月単価100万円のシステムエンジニアと、人月単価50万円のプログラマーの2人で作業する場合の人件費は、以下のように考えます。
人件費 =(1人目の人月単価+2人目の人月単価)×かかる月数
=(100万円+50万円)×2ヶ月
= 300万円
アプリ開発における固定費用とは、ドメインやSSL証明書の取得費用、アプリの運用に使うサーバー維持のための費用、OSのアップデートなどによるメンテナンス費用、不具合があった場合の対応のための費用などです。これらは開発の時だけでなく、アプリの運用をしていく限りかかり続ける費用となります。
基本的にアプリの開発費用は、固定費用よりも人件費の方が高くなります。そのため、アプリの開発を外部の専門業者に委託する場合は、製作会社によって見積もりの差が大きくなります。
たとえば、大手の製作会社にアプリの開発を依頼する場合は見積もりが高くなる傾向があります。一方、比較的新しく、小規模な製作会社にアプリの開発を依頼する場合には、大手よりは見積もりが低くなることが多いです。
アプリの開発において、大手の製作会社ならば優れたアプリを開発してくれるとは断言できません。また、製作会社によっても得意不得意がある場合もあるため、しっかり見積もりをしてもらい、イメージしているアプリが実現可能かしっかり精査したうえで頼むことが重要です。
公開方法
アプリの開発が完了したら、iOSはApp Store、AndroidはGoogle Playという名称の各OSの公式ストアにアプリを掲載しましょう。
AndroidはGoogle Playに掲載しなくてもアプリを配布することが可能ですが、より多くの人に届けるためにもGoogle Playに掲載することをおすすめします。iOSはApp Storeを経由しないとそもそもアプリの配布ができません。
なお、iOS、Androidどちらにおいても、公式ストアにアプリの掲載をしてもらうには審査を受ける必要があります。
審査
iOSの公式ストアであるApp Storeは、専門家によって人力でアプリの審査が行われています。元々、審査のためのやり取りに数週間から1ヶ月かかっていましたが、最近は徐々にかかる期間は短縮されています。とはいえ、最低でも1週間程度は見込んでおくと良いでしょう。
Androidの公式ストアであるGoogle Playは、自動の審査システムがアプリの審査を行います。以前は公開前の審査はなく、ストアに登録するとそのまま購入が可能になっていましたが、最近はある程度公開前の事前チェックがされるようになりました。
以下に、アプリの審査が不合格になる場合の基準(リジェクトポリシー)を掲載します。
例:App Store、Google Play両方に共通するリジェクトポリシー
- 一般的なアプリの利用方法でクラッシュしてしまうなど、きちんと動作しない場合
- リンク切れが起きていたり、表示されるはずの画像がなかったりなど、コンテンツが中途半端なままの場合
- アダルト要素がある場合
- 反社会的な表現がある場合
- アプリの説明文が不十分な場合
例:App Storeのリジェクトポリシー
- UIがAppleのデザインガイドラインに合っていない場合
- アプリ内で再生される動画や掲示板に投稿された文章が不適切な場合
- アプリの名称が他のアプリに類似している場合
例:Google Playのリジェクトポリシー
- アプリの名称に「Android」「Google」が使われている場合
- コンテンツの内容が盗作や盗用したものである場合
公開にかかるコスト
iOSの場合、アプリの審査を申請するためにはApple社へのデベロッパー登録が必要です。デベロッパー登録には毎年$99(日本円で約10,000円:2020年8月現在)かかります。
Androidの場合も、Google社へのデベロッパー登録が必要です。Androidのデベロッパー登録はiOSとは違い、初回登録時に$25(日本円で約2,500円:2020年8月現在)支払うのみで、年会費は必要ありません。
iOS・Androidのどちらにおいても、アプリビジネスを成功させるためには、良いアプリを開発するだけでなくリリース後のユーザー獲得や保守・運用の予算など押さえておくべき項目が数多くあります。そのためにチェックすべき項目を資料にまとめましたので、ぜひご覧ください。
【資料を読む】このチェックリストでアプリ開発は成功する!なぜ失敗するのか解説
iOSとAndroidのアプリ開発における共通点とは?
では反対に、共通点は何があるでしょうか。iOSとAndroidのアプリ開発における共通点は、「サーバー」と「設計」です。
サーバー
基本的にiOSとAndroidで、サーバーは同じものが使用可能です。データのやり取りを行う際のデータフォーマットが、XML(Extensible Markup Language)かJSON(JavaScript Object Notation)であれば、iOSとAndroidアプリのどちらでも対応できます。アプリ側のプログラミング言語は異なりますが、サーバー側のプログラミング言語はPHPなど、一つの言語で対応可能です。
また、Firebaseのようなバックエンド(サーバーサイドの処理)代行サービスなどがあり、アプリ開発は非常に便利になっています。Firebaseを採用すれば、ほとんどサーバー側の実装に困ることなくアプリ開発を進められるでしょう。
このように、サーバーサイドに関しては、iOSでもAndroidでも同じものを利用できるのです。
設計
iOSとAndroidのアプリ開発は、使用するプログラミング言語は異なりますが、プログラミングによって作り出される機能に大きな違いはありません。
iOSアプリとAndroidアプリでは、設計が同じものを異なるプログラミング言語で実装します。設計がほぼ同じなので、iOSかAndroidどちらかのアプリ開発をマスターしてしまえば、もう一方のアプリ開発も比較的スムーズに行えるのです。
もし、iOSとAndroidのどちらでアプリ開発を行うか迷っている場合は、開発ツールの利便性やコードの書きやすさを踏まえると、iOSでのアプリ開発から始めることをおすすめします。
iOSでの開発に慣れてきたら、Androidアプリの開発にチャレンジすると良いでしょう。
「クロスプラットフォーム開発ツール」とは?
従来、アプリなどに代表されるソフトウェアは、動作環境を想定したうえで、想定した動作環境に合わせた開発をしていくのが一般的でした。しかし、従来の開発方法の場合、iOS用に作ったアプリをAndroidで使うことはできないため、アプリを開発する場合にまずiOS向けを作るか、Android向けを作るかを考える必要がありました。
iOSとAndroid、両方の動作環境で使えるアプリを作りたい場合、どちらの動作環境でも同じように使えるプログラムを作っていくことが望まれます。この、1つのプログラムで複数の動作環境に対応できるプログラムのことを、クロスプラットフォームと呼びます。
クロスプラットフォーム開発のメリット
近年、アプリケーションの動作環境は多様化しており、一つひとつに合わせたアプリを作ろうとすると、膨大な手間と時間、人件費がかかります。しかし、クロスプラットフォームで作ることによって以下のようなメリットが得られます。
開発コストを抑えられる
これまでは、OSごとに別のプログラミング言語でコーディングする必要がありましたが、クロスプラットフォームによる開発によって、プログラミング言語を1つにまとめることで、大幅なコード削減が可能になるのです。また、バグの修正も1つのコードだけで済むため工数を減らし、コストを抑えられます。
最小限の人員で開発できる/人員確保が容易になる
クロスプラットフォームによる開発は、プログラムの大部分が1つの言語で実装可能になるため、開発人員を最小限にできます。人員を最小限にできると、より多くの案件に人員を振り分けられます。人材不足が大きな問題になっているエンジニア業界では、クロスプラットフォーム開発の広がりが、人材の有効活用を進めるきっかけになるでしょう。
ユーザーの幅が広がる
国内でのiOSとAndroidのシェアはほぼ半々のため、iOSとAndroidどちらか一方のみでの展開では、約5割のユーザーを取り逃してしまうことになります。この損失はあまりに大きいといわざるを得ません。クロスプラットフォームでは、1つのプログラミング言語で複数のOSに対応したアプリケーションを開発できます。つまり、これまで開発できていなかったOSにも対応できるため、ユーザーの幅が広がるのです。クロスプラットフォーム開発の広がりは、取り逃していたユーザーを取り込む良い機会となるでしょう。
iOSとAndroidの開発が同時にできる
前述したようにこれまでiOSとAndroidは、それぞれ別の言語でコーディングしなければなりませんでした。しかし、同じような仕様であれば、クロスプラットフォーム開発で両OSの開発が同時に行えます。そのため、従来の方法と比べてより効率的な開発が可能です。
クロスプラットフォーム開発の種類
クロスプラットフォーム開発には3つの種類があります。それぞれの特徴をご紹介します。
ネイティブ型
クロスプラットフォームの中で、ソフトウェアをOS上で操作していくものをネイティブ型と呼びます。カメラ機能やGPS機能など、すべてのOSの機能を活用できるのが特徴です。
なお、ネイティブ型のクロスプラットフォームを開発する場合、複数の動作環境で動作するクラスライブラリやランタイムを装備している必要があります。
ネイティブ型のクロスプラットフォームの開発ツールでよく使われているのは、Microsoft社が提供するXamarinやFacebook社のReact Nativeです。
独自レンダラ型
クロスプラットフォームの中で、独自のレンダリングエンジンを使って描画していくシステムを持つものを、独自レンダラ型と呼びます。
レンダリングエンジンとは、プログラミング言語を解釈しその通りに描画するシステムです。独自レンダラ型はそれぞれ独自のレンダリングエンジンを使うため、OSの違いに関わらず、どのOSでも同じように使うことができます。
独自レンダラ型のクロスプラットフォームの開発ツールでよく使われているのは、Unity Technologies社のUnityやGoogle社のFlutterです。
ハイブリッド型
クロスプラットフォームの中で、WebViewというソフトウェアを利用しているものをハイブリッド型と呼びます。WebViewとは、WebページをSafariやChromeなどのブラウザと同等に表示するという機能で、スマートフォンのアプリに組み込まれているものです。Web上の機能をHTMLやCSS、JavaScriptなどを使って設計できるため、ネイティブ型と違い比較的クロスプラットフォームのソフトウェアの開発として作りやすくなっています。
しかし、Web経由のソフトウェアのため、処理速度が遅いという難点があり、ネイティブ型ほどの高度な機能も実現できません。
ハイブリッド型のクロスプラットフォームの開発ツールでよく使われているのは、オープンソースであるCordovaです。
クロスプラットフォーム開発の注意点
ここでは、クロスプラットフォーム開発の「検討段階」と「実施段階」それぞれにおける注意点をご紹介します。
クロスプラットフォーム開発を検討する上での注意点
・OSによってファイルやフォルダの場所や呼び出し方が違う
・AppleStoreでアプリを配布する場合は、Macでの作業が必要になる
クロスプラットフォーム開発を実施する上での注意点
・OS個々の不具合対応が困難
クロスプラットフォームの難点は、OSごとの不具合対応です。OSの仕様として不具合が発生し個別の対応が必要な場合、個別のプログラミング言語で修正する必要があるでしょう。そうなると、不具合の修正は困難になります。
・日本での開発事例がまだ少ない
多くのメリットを持つクロスプラットフォーム開発ですが、日本ではあまり進んでいないのが現状です。まだまだ前例が少なく、普及段階といえるでしょう。そのため、開発内容によっては、各OSに対応したプログラミング言語で開発するよりも、クロスプラットフォーム開発の方がハードルが高い場合があります。
2023年時点では、Flutterでの開発が注目されており日本でのFlutter採用事例も増えてきました。
・OSやデバイスごとの最新機能の実装が困難
OSやデバイス特有の機能、例えばカメラやプッシュ通知などが新しくなった場合、クロスプラットフォーム開発では即座に対応できるかが不明です。そのため、OSやデバイスの最新機能を利用できない恐れがあります。
クロスプラットフォームの主要フレークワーク
クラスプラットフォームによるアプリケーション開発にはフレームワークが用いられます。フレームワークとは、ソフトウェアの開発で利用する定型的な処理やデータ構造などをまとめたテンプレートとなるものです。主要なフレームワークには以下の2つが挙げられます。
Flutter
「Flutter」は、Googleで開発された「独自レンダラ型」のフレームワークです。言語には、Googleが開発したDartという言語を使用し、主にiOSやAndroid向けのモバイルアプリの開発に利用されています。UI(ユーザーインターフェース)の自由度が高く、処理スピードの速さがメリットです。また、ホットリロード機能を搭載しているため、プログラムの変更をリアルタイムで適用できます。
比較的利用者も多いフレームワークのため、クロスプラットフォーム初心者におすすめです。
開発会社:Google
言語:Dart(JavaScript言語で解決できない問題点を改善するために代替された開発言語)
開発の種類:独自レンダラ型
プラットフォーム:iOS、Android、Windows、Mac OS
Flutterについてはこちらの記事で詳しく解説しています。
【アプリ開発歴10年】Flutterとは?Flutterの特徴・メリット・デメリットを徹底解説
React Native
「React Native」は、Meta Platforms(旧Facebook)が開発した、モバイル向けの「ネイティブ型」フレームワークです。Webアプリを構築するためのフレームワークであるReactを引き継いでおり、プログラミング言語にはReactと同様の「JavaScript」が使われています。また、ホットリロード機能を搭載しているため、プログラムの変更をリアルタイムで適用できます。
開発会社:Meta Platforms(旧Facebook)
言語:JavaScript
開発の種類:ネイティブ型
プラットフォーム:iOS、Android
React Nativeと前述のFlutterは、どちらを利用すべきかしばしば論争が巻き起こります。こちらの動画で我々の見解について詳しくまとめていますので、ぜひご覧ください。
まとめ
この記事では、iOSとAndroidのアプリ開発において、アプリ開発に使う言語や開発環境の違い、費用、審査などについてご紹介しました。昨今は動作環境が多様化していることや工数が削減できることから、開発にクロスプラットフォームが用いられるケースが増えています。
当社Pentagonでも、React NativeとFlutterでの開発実績がございますので、クロスプラットフォーム開発のご相談があれば、お問い合わせください。
そのほか、アプリ開発を成功させるために知っておくべき基礎知識をこちらの記事にてまとめています。アプリ開発が初めてという方は特に、こちらもチェックしてみてください。