一口でアプリ開発と言っても、開発言語は様々です。
また、アプリが動くプラットフォームにも種類が存在し、それぞれ得手不得手があり、開発できるプログラミング言語も異なってきます。
アプリ開発を成功させるためには、プラットフォームや開発言語の特徴をよく理解することが重要です。
そこで、この記事ではエンジニアの経験が無い方や初心者の方でもアプリ開発を成功できるよう、それぞれの特徴やメリット・デメリットを分かりやすく紹介します。
どんなプラットフォームがあるのか?
そもそもアプリ開発と一口に言っても、基盤となるプラットフォームにはいくつか種類があります。
またプラットフォームの種類によって、利用する開発言語も異なります。
開発するアプリは、基盤とするプラットフォームごとに大きく3種類に分けることができます。
1つ目は、WEBブラウザ上で動作する「WEBアプリ」。
2つ目は、スマホやPCにインストールして利用する「ネイティブアプリ」。
iOSアプリやAndroidアプリ、PCのデスクトップ環境上で動作するPCアプリ(デスクトップアプリ)なども、これに該当します。
そして3つ目が、「WEBアプリ」「ネイティブアプリ」の両方の特徴を兼ね備えている「ハイブリッドアプリ」。
以降、それぞれのアプリの特徴とおすすめの開発言語をご紹介いたします。
発注する際はアプリ開発言語の基礎知識を知っておく
システムやアプリを発注する際は、発注者が言語を習得する必要はありません。ですが、開発言語についてメリットやデメリットなどの特徴を把握しておくことで、プロジェクトの進行を進めやすくなります。
以降で、アプリ開発言語についての知識を知っておいた方がいい理由について解説します。
開発の委託先を選ぶ際にも開発言語を知っておくことは大切
また開発言語についての知識を持っておくことは、発注先選びにも活かすことができます。
さまざまな開発言語がある中、開発会社によって得意とする言語や環境があります。
開発委託先を選ぶ際は、開発会社の得意な言語・環境についても判断材料として把握しておくと良いでしょう。
アプリ開発の要件定義をスムーズに進められる
システム・アプリ開発のプロジェクトを進めるにあたって、最初の工程は要件定義です。
要件定義では、システムに必要な機能を洗い出し、その機能を実現するためにどのような画面が必要かなどを細かく定義していく工程になります。
基本的には開発会社の要件定義担当者がヒアリングしながら、時に提案を行いながら進めます。その際でも発注側担当者が言語の特徴などアプリ開発言語についての知識を持っておくことで、プロジェクトがスムーズに運ぶことができます。
WEBアプリの特徴
WEBアプリとは、Google ChromeやSafariといったWEBブラウザ上で利用できるアプリケーションのことです。
例えば、Gmailなどのメールサービスや、AmazonなどのECサイトもwebアプリケーションです。
スマホやPCなどの端末があれば、インストール不要で利用することができるというのが大きな特徴です。
WEBアプリのメリット
- フレームワーク活用で低工数
- 機能改修がスムーズ
- OSアップデートの影響をほぼ受けない
- プラットフォームの審査不要
- 課金手数料が掛からない
- WEBで集客できるので集客単価が低い
- PWAで高速性・機能性向上
フレームワークとは、よく使われる共通の機能の動作や処理をパッケージ化したものを言います。
効率的にWEBアプリケーション開発を行う場合は、このフレームワークを利用することが多いです。
またAppleやGoogleなどのプラットフォームによる制限が少なく、アプリストアを介さないため手数料を支払う必要もありません。またアプリのリリースやアップデートのタイミングで厳格な審査もありません。
さらにWEBアプリの場合、GoogleやYahooなどの検索エンジン経由で集客できるため、集客単価を低く抑えることが可能です。ネイティブアプリでもアプリストアを介して集客が可能ですが、やはりWEBでの検索ボリュームには敵いません。集客効率はWEBアプリの方が優れていると言えるでしょう。
PWAとはProgressive Web Appsのことで、WEBサイトをスマートフォン上でアプリのように動作させる仕組みを指します。このPWAという技術を利用することで、WEBアプリであってもネイティブアプリのような高速性・機能性が実現できます。
WEBアプリのデメリット
- リッチな表現が難しい
- リアルタイムに弱い
WEBアプリはネイティブアプリと比較して動作が重たく、なかなかスムーズには動きません。
そのため、ゲーム等のリッチな表現を使ったアプリを開発したい場合は、WEBアプリは不向きと言えます。
またWEBアプリはWEBブラウザを介して利用するため、インターネット接続が必須になります。
加えて、端末固有の固有機能を利用することができないため、プッシュ通知なども利用できません。
そのため、ユーザー同士のリアルタイムなコミュニケーションなどはネイティブアプリに比較して弱いという点があります。
WEBアプリの開発言語
WEBアプリ開発では、直接ユーザーに目に見える部分を実装するための「フロントエンド言語」と、直接ユーザーには目に見えない裏側部分を実装するための「バックエンド言語」の2種類の言語を用います。
それぞれで主に使われる言語は、以下の通りです。
フロントエンド言語
- HTML / CSS
- JavaScript
バックエンド言語
- Ruby
- PHP
- Python
- Java
- Go
フロントエンド言語の3種類は、何か1つを知っていれば良いわけではなく、WEBアプリの開発には3種類全てを組み合わせて利用する必要があります。
また、フロントエンド言語はWEBサイト制作の際にも利用されます。
ちなみにですが、フロントエンドの開発者を「フロントエンドエンジニア」、バックエンドの開発者を「バックエンドエンジニア」とよく言います。
HTML / CSS
HTMLとは、Hyper Text Markup Languageの略で、WEBページを作るためのマークアップ言語です。
「WEBページのタイトルはこの部分、本文はこの部分」、と言ったように、WEBサイトの骨組み・構成を決める役割を果たします。
CSSとは、Cascading Style Sheetsの略で、WEBページの見た目・デザインを整えるための言語です。
WEBページの文字の色や大きさ、背景などを設定する役割を果たします。
見た目・デザインを整える有名なフレームワークに、HTML・CSS・JavaScriptから構成される「Bootstrap」があります。
HTMLとCSSは厳密にはプログラム言語ではないですが、難易度が低いため初心者におすすめです。
JavaScript
JavaScriptとは、WEBページに見た目の動きをつけるための言語です。
JavaScriptを用いると、ポップアップを出したり、画像に動きを加えたり、といった動きをWEBサイトに実装することが可能になります。
有名なフレームワークに「Vue.js」「React」「Angular」があります。
JavaScriptもよく初心者向けのプログラム言語と言われます。
Ruby
Rubyとは、日本人のまつもとゆきひろ氏により開発されたオブジェクト指向型のスクリプト言語です。
コードの記述が短く簡潔なため、初心者にも向いています。
日本から生まれたプログラミング言語ということで、日本語のドキュメントや解説サイトが豊富な点も魅力的です
有名なフレームワークに「Ruby on Rails」があり、これを用いることで生産性の高い開発が可能になります。
初心者エンジニアにおすすめです。
PHP
PHPとは、動的にWEBページを生成することができるサーバーサイドのスクリプト言語です。
世界最大のCSMであるWordPressでも利用されているため、数多くのWEBサイトで採用されています。そのため、日本における技術者の数も多いとされています。
仕様や文法が比較的簡単なため、初心者が学習を始めやすい言語でもあります。
WordPressの他に、EC-CUBEなどのEC構築のためのプラットフォームにPHPが利用されていることが多いです。
また有名なフレームワークに「Laravel」があります。
Java
Javaは、世界でも最も多く使用されているプログラミング言語の1つです。
汎用性の高い開発言語であり、Androidアプリ開発に限らず、WEBアプリ開発のバックエンド言語として採用されたり、最近ではIoT機器の開発に採用されたりと、多くのアプリ開発で採用されています。
そのため、Javaを扱える技術者やJavaに関するドキュメントも豊富です。
有名なフレームワークとして「Spring」や「Play」などがあります。
Python
Pythonとは、AIや機械学習で利用されることが多く、近年注目を集めている言語です。
文法は比較的容易ですが、統計処理やデータ分析などを行う際に便利な機能などを有しており、今後も需要が伸びていくであろうと予想されます。
有名なフレームワークに「Django」があります。
Go
Goとは、2009年にGoogleが開発した比較的新しい言語であり、近年人気が上昇している言語です。
プログラミング言語としては、シンプルかつ堅牢であり、処理の実行速度も速いところが特徴です。
ネイティブアプリ(スマホ)の特徴
ネイティブアプリとは、端末に直接インストールして利用するアプリケーションのことです。
大きく、「スマホアプリ」と「PCアプリ」に分かれます。
ここでは特にスマホアプリについて説明いたします。
例えば、「パズドラ」や「PayPay」のような、App StoreやGoogle Playでインストールするアプリは、基本的にネイティブアプリです。
スマホアプリはさらに、「iOSアプリ」と「Androidアプリ」に分かれます。
iOSとAndroidで開発言語も異なります。
スマホアプリのメリット
- 端末の機能や性能をフルに活かせる
- リッチな表現が可能
- リアルタイムな対話が可能
- LTV向上
- インターネットが繋がっていない場所でも使える
端末に直接インストールするため、プッシュ通知やカメラ、GPSなどの機能が利用でき、また動作も速く、リアルタイム性も高いです。
一方、WEBアプリのようにインターネット接続が必須ではないため、オフライン状態で使えるアプリも多いです。
一度アプリをダウンロードしてもらえればWEBアプリと比較してリピート率も高くなる傾向にあるため、LTV(顧客生涯価値)の向上にも繋がります。
スマホアプリのデメリット
- ストア審査や手数料
- OSアップデートの影響
- iOS、Androidで別の言語なので工数がかさむ
- ストアからインストールしてもらう必要があるのでユーザーに手間がかかる
- 集客単価が高い
WEBアプリと異なり、プラットフォーム側の制約を多く受けます。
App StoreやGoogle Playなどのアプリストアを介するため、売上のうち一定割合の手数料をプラットフォーム側に支払う必要があり、またリリースやアップデート時に審査も必要になります。OSアップデートの影響も大きいです。
検索エンジン経由の集客もできないため、集客単価は比較的高くなる傾向にあります。
iOSアプリの開発言語
おすすめの開発言語は、Swiftです。
最近のiOSアプリ開発においては、Objective-CではなくSwiftで開発することが一般的です。
Swift
Swiftとは、2014年にApple社が開発した比較的新しいプログラミング言語です。
iPhoneやMacなどのApple製品のアプリを開発する目的で利用されます。
Objective-C
Objective-Cとは、C言語をベースにApple社製品で広く利用されている言語です。
初期のiOSアプリのほとんどは、Objective-Cで開発されていました。
その後Swiftが登場しましたが、Objective-Cで開発されたiOSアプリは未だに多く残っております。
そのため、既存アプリの保守等の観点から、Objective-Cが完全に無くなるとも考えにくいです。
しかしながら、現在のiOS開発の主流はSwiftになってきており、今後その傾向はより顕著となるでしょう。
Androidアプリの開発言語
おすすめ開発言語は、Kotlinです。
最近のAndroidアプリ開発においては、JavaではなくKotlinで開発することが一般的です。
Kotlin
Kotlinとは、2011年に登場した比較的新しい言語です。Google社により、Androidアプリの開発言語として公式認定されています。
元々Javaを改良して作られたプログラミング言語ということもあり、Javaよりも簡潔にコードを書くことができます。またJavaと互換性を持っており、Javaで開発された既存のアプリを、新しくKotlinに変換することも可能です。
そのため、今後のAndroidアプリ開発においては、JavaよりもKotlinが主流になっていくと考えられています。
Java
WEBアプリの開発言語でも登場したJavaです。
Androidアプリ開発においてKotlinが採用されつつありますが、Javaで開発された既存のAndroidアプリも数多く残っています。
そのため、保守の観点からもJavaの利用が無くなることはないと考えられます。
ワンソースでスマホアプリ開発する方法も
近年ではワンソースでiOSアプリ、Androidアプリを同時に開発するクロスプラットフォーム技術という方法も存在します。
ですがまだ完全にワンソースで開発できるわけではありません。
ここでは「Flutter」と「React Native」についてご紹介いたします。
Flutter
Googleが2018年に開発したモバイルアプリ用のフレームワークです。
単一のコードからiOS、Android両アプリの構築を可能にすることを目指したものです。
しかしながら、プッシュ通知やカメラなどの各プラットフォームのOSの機能に大きく依存する箇所については、ネイティブの言語で実装する必要があります。
React Native
Facebookが開発したモバイルアプリ用のフレームワークです。
React Nativeを利用すればJavaScriptでスマホアプリ開発することができようになります。
一方、現在は大規模なアップデートが頻発しているというデメリットもあります。
Xamarin
XamarinはマイクロソフトのiOS/Android/windows/macOS向けのオープンソースのプラットフォームです。ザマリンと読みます。C#が開発言語として採用されています。Visual Studioで開発します。
Unity
Unityは、ゲーム開発用のプラットフォームです。開発言語はこちらもC#となり,
SwiftもKotlinも使いませんので、Unityの経験があれば、スマホゲームの開発が可能です。
またUnityはクロスプラットフォーム対応しておりますのでiOS、Android両対応のゲームが作ることができます。またPlayStationやNintendo Switchなどの家庭用ゲーム機でも動作させることができます。2D、3Dグラフィックどちらも対応可能です。
ネイティブアプリ(PC)の特徴
近年ではあまり利用されなくなりつつあるPCにインストールして利用するアプリのことで、PCアプリとも言われます。
有名なアプリとして、「Photoshop」や「Illustrator」と言ったAdobe製品や、「Excel」「Power Point」と言ったOffice製品などがあります。
ビジネスで利用される、いわゆる業務アプリが多いこともPCアプリの特徴の一つです。
PCアプリはさらに、「Windowsアプリ」と「Macアプリ」に分かれます。
WindowsとMacで開発言語も異なります。
PCアプリのメリット
- 端末の機能や性能をフルに活かせる
- リッチな表現
- インターネットが繋がっていない場所でも使える
スマホアプリと同様、端末固有の機能や性能を活かすことができ、リッチな表現もスムーズに実装可能です。
またオフラインで利用することも可能です。実際に、メインで利用するシーンがオフラインであるPCアプリは多いです。
PCアプリのデメリット
- 需要が無くなりつつある
- OSアップデートの影響
近年のスマホ台頭により、また業務アプリのクラウド化により、PCアプリの需要自体が減ってきています。
加えて、スマホアプリと同様、OSアップデートの影響も大きいです。
Windowsアプリの開発言語
VisualBasic
Microsoft社が開発したオブジェクト指向のプログラミング言語です。
主にWindowsの業務アプリケーション開発のために利用されます。
C言語
1972年に開発された歴史ある開発言語です。
特定のハードや用途に限定されず汎用的に利用される言語であり、Windowsアプリに限らず家電や自動車の開発にも利用されています。
C++
C++は、C言語の機能拡張版です。
言語の仕様としては難しく習得難易度も高いですが、実装の自由度は高い点が特徴です。
C#
C#とは、2000年にMicrosoft社が独自開発した言語の1つで、JavaやPython、Rubyと同様にオブジェクト指向と呼ばれる言語です。
基本的にWindowsに特化した言語であり、主に業務アプリケーションを開発するために利用されます。
ASP
ASPとはActive Server Pagesの略であり、Microsoft社が開発したWEBページを動的に作成する技術のことを言います。
企業の業務アプリ開発でよく利用される技術の一つです。
Java
WEBアプリ及びAndroidアプリの開発言語でも登場したJavaです。
Windowsアプリ開発にもよく利用されています。
Macアプリの開発言語
Swift
iOSアプリ開発と同様、Macアプリ開発でもSwiftが主流となりつつあります。
Objective-C
iOSアプリ開発と同様、Macアプリ開発でも用いられます。
Macアプリ開発においても、近年はObjective-CではなくSwiftで開発することが一般的です。
Java
汎用性の高いJavaでもMacアプリは開発可能です。
ただし、繰り返しになりますがMacアプリ開発の主流はSwiftとなっています。
AI/機械学習開発でおすすめの言語
近年AI技術の発展により、AI開発の需要も多くなってきております。
AI開発についても、適した言語がありますので、今回はPythonとRをご紹介します。
Python
Pythonとは、AIや機械学習で利用されることが多く、近年注目を集めている言語です。
開発を効率よく進めるフレームワークやライブラリも豊富です。
文法は比較的容易ですが、統計処理やデータ分析などを行う際に便利な機能などを有しており、今後も需要が伸びていくであろうと予想されます。
有名なフレームワークに「Django」があります。
R
Rは、オープンソースで利用できる、統計やデータの解析を得意とするプログラミング言語です。統計やデータの解析が得意という点ではPythonと同様ですが、比較的に統計解析のプログラムを短く書くことが可能です。
ハイブリッドアプリの特徴
ハイブリッドアプリとは、WEBアプリとネイティブアプリの両方の要素を持ち合わせているアプリケーションのことです。
アプリの見た目・外側はネイティブアプリと同じ作りですが、中身はWEBアプリとなっています。
例えば、「食べログ」や「クックパッド」などがハイブリッドアプリの代表格です。
ネイティブアプリと同様にアプリを端末にインストールしますが、コンテンツはWEBアプリと同様WEBから都度参照する、というのがハイブリッドアプリの大まかな仕組みです。
ハイブリッドアプリのメリット
- カメラなど端末の機能をフルに使える
- 低工数で開発可能
- OSアップデートの影響をあまり受けない
- リアルタイムな対話が可能
- LTV向上
ハイブリッドアプリ最大のメリットは、クロスプラットフォームと言って、1つのアプリを開発するだけでiOS、Android両方に対応したアプリを作成できることです。
ネイティブアプリであれば、iOSとAndroidの両方のアプリを開発するために、別々の知識や開発環境が必要になりますが、ハイブリッドアプリは基本的にWEBアプリ開発の技術があれば開発可能です。
そのため、低コストでのアプリ開発が可能となります。
ハイブリッドアプリのデメリット
- ストア審査や手数料
- ストアからインストールしてもらう必要があるのでユーザーに手間がかかる
- 集客単価が高い
- リッチな表現が難しい
ハイブリッドアプリは、ネイティブアプリと同様にアプリストアを介する必要があります。
そのため、ネイティブアプリと同様にストア審査や課金手数料と言ったデメリットがあります。
WEB検索で集客ができないため、集客単価が高くなる点も同様です。
また、ネイティブほどのリッチな表現が難しいという点もあります。
WEBアプリから始めて軌道に乗ったらネイティブアプリ化がおすすめ
新規事業をスモールスタートで立ち上げる際には、やはりWEBアプリがおすすめです。
フレームワークが利用できるため低コスト低工数で開発が可能ですし、機能改修がスムーズで、集客コストも低いというのが大きな理由です。
一方、WEBアプリでは端末固有の機能を利用したり、リッチな表現を用いたり、リアルタイム性が求められることは難しかったりと、デメリットも存在します。
新規事業が軌道に乗り認知を獲得できたら、機能を充実させLTV向上を図るという点でネイティブアプリ化していく、という方向性が良いでしょう。
もしユーザー同士のリアルタイムでの対話が必要など、そもそも事業内容的にWEBアプリに向いていない場合は、初めからネイティブアプリの開発がおすすめです。
端末の機能や性能をフルに活用しなければならない場合も、初めからネイティブアプリを開発した方が良いでしょう。
採用したいプログラミング言語を使用できる人員がいない時は外注
開発したいシステムやアプリによって、適した開発言語があります。時には社内エンジニアが対応できない、社内にエンジニアがいないということもあると思います。
そんな時は、外注に委託するという選択も良いかと思います。
またこちらの記事に記載した内容以外でわからない内容もあるかと思いますが、ご遠慮なく聞いていただければと思います。またこちらもなるべく理解していただけるようご説明します。
アプリ開発を外注した場合の費用感
システム・アプリ開発にかかる費用で大きく占めるのが人件費です。
外注の場合、開発したいシステムやアプリに対して開発費用を支払う受託開発とエンジニア1人に対して月毎で支払う業務委託がありますが、今回はご参考までに業務委託での費用相場をお伝えします。
開発会社によっては、経験の浅いジュニアメンバーで1人月50万ほどの場合もありますが、一般的に考えますと1人月100万円前後と考えておいてよいかと思います。
ただ業務委託の場合、月額の費用が安くても、開発にかかるスケジュールが長くなればその分全体のコストも大きくなりますので、その点も注意が必要です。
また、フリーランスに依頼するか、開発会社に依頼する場合もその企業の規模によっても費用は変わってきます。
アプリの運用費用も考えましょう
アプリ開発のプロジェクトを立ち上げる際は、アプリをリリースした後の運用費用についても検討しておくとよいと思います。
月額のサーバー費用、障害時対応などの保守費用や継続的なメンテナンスコストです。
具体的な費用についてはアプリの規模や保守の内容にもよります。
また、リリースしてからユーザーからのレビューやサービスの方向性により、機能追加などもある場合はさらにコストが必要です。
アプリ開発の計画につきましては、初期開発から運用フェーズまで長期での計画を進めるとよいかと思います。
まとめ
今回は、プラットフォームごとの開発言語・おすすめ言語について解説しました。
特徴やメリット・デメリットは理解できましたか?
失敗しないアプリ開発の参考になれば幸いです。
プラットフォームについてはこちらの記事でもう少し詳しく解説していますで、よろしければご覧ください。