- 更新日 2024.10.17
- カテゴリー アプリ開発
モバイルアプリ開発とは?開発の種類と流れ・おすすめの言語・フレームワーク・開発会社も紹介【2024年最新版】
「モバイルアプリを開発したいけれど、何から始めたらいい?」
「モバイルアプリ開発におすすめの言語とフレームワークを知りたい」
「PCアプリ開発との違いや注意点はある?」
自社でモバイルアプリを作ってビジネスをしたい、モバイルアプリを使って業務を効率化したい。そのためにモバイルアプリ開発にチャレンジしようとしている企業は多いですよね。
しかし開発の全体像が分からず、何から手を付けたらいいか分からない企業もいるでしょう。開発言語も多岐に渡るため、どれを選べばいいか悩む開発担当者も少なくありません。そこでこの記事では、以下の内容について解説します。
・モバイルアプリ開発の種類と手順
・おすすめの言語とフレームワーク
・開発時の注意点
・外注する場合のおすすめの開発会社
この記事を読めば、スムーズにモバイルアプリを開発するヒントが見つかるので、ぜひ最後までお読みください。
※モバイルアプリの開発を検討している方はシステム幹事にお問い合わせください。予算や目的などをヒアリングした上で、最適な開発会社を選定します。相談料・紹介料はかかりません。
アプリ開発に役立つ記事もご覧ください モバイルアプリ開発におすすめ!アプリ開発かんたんマニュアル
モバイルアプリ開発とは何か?
モバイルアプリとは、スマートフォンやiPadなどのタブレット端末で動作するアプリのことです。モバイル端末の普及によりゲームや旅行サイトなど多様なアプリが次々に登場しています。また、これまでの業務をPC上からモバイルアプリに移行する企業も増えています。
モバイルアプリ開発の種類は主に次の2つです。
1.ネイティブアプリ開発
2.クロスプラットフォーム開発
それぞれに特徴があるので順番にみていきましょう。
ネイティブアプリ開発 |
クロスプラットフォーム開発 |
|
概要 |
モバイル端末に インストールして使うアプリ |
AndroidやiPhoneなど異なる OSの両方で使えるアプリ |
メリット |
・動作が速い ・オフラインでも利用できる ・プッシュ通知を付けられる |
・異なるOSでも利用できる ・開発工数を抑えられる ・エンジニアを確保しやすい |
デメリット |
・リリースに審査が必要 ・開発・運用コストが高い |
・リリースに審査が必要 ・OSバージョンアップへの対応が遅れる |
ネイティブアプリ開発
ネイティブアプリ開発とはGooglePlayやAppStoreなどのストア経由からインストールするアプリを開発することです。上の画像のようにスマートフォンの画面上に並ぶ様々なアプリです。
一方で、SafariやGoogle Chromeなど、インターネット経由でサービスにアクセスして使うものは「Webアプリ」と呼びます。この場合、ストア経由でアプリをインストールする必要がありません。
メリット
・動作が速い
・オフラインでも利用できる
・プッシュ通知機能を付けられる
通常のWebアプリであればサーバーを経由して動作するため、通信によるタイムラグが生じます。一方、ネイティブアプリは既にインストール済みのアプリを使うため、動作が速いのがポイント。ネット環境を必要としないゲームアプリであれば、オフラインでもユーザーに楽しんでもらえます。
またネイティブアプリにはプッシュ機能(ブラウザを起動していなくても情報を通知できる機能)があるため、最新のサービスや変更点を一早くユーザに届けられます。
デメリット
・リリースするためには審査が必要
・開発・運用コストが高くなりがち
外部向けにアプリをリリースする場合、ストアの審査に合格しなければいけません。審査基準もストアによって異なり、申請してから合格発表まで数週間かかるケースも珍しくありません。もし不合格になったら、審査の基準を満たすためにアプリを作り直す必要があります。
画像引用:Google Developers
またネイティブアプリはOSに合わせて開発言語を選ばなければいけません。例えばiOSであればObjective-CやSwift、AndroidであればJavaやKotlinなどが挙げられます。
そのため、言語ごとにエンジニアを選ぶ必要がある、開発環境を用意しなければいけない、といった開発コストが膨らみやすい点がデメリットです。
クロスプラットフォーム開発
クロスプラットフォーム開発とは、異なるOS上でも同じ仕様で動作するアプリを開発する手法のこと。近年では、AndroidやiOS、BlackBerry、WindowsMobileなど多様なOSが登場しているため、どのユーザーでも利用できるアプリの開発が進められています。
メリット
・開発工数を抑えられる
・エンジニアを確保しやすい
リリースするOSにかかわらず、コードの大部分を共通化できます。急な仕様変更やバグの修正の際、ネイティブアプリはOS毎に修正が必要ですが、クロスプラットフォーム開発であれば1種類のコードで済みます。そのため、開発工数を抑えられる点が魅力。
またクロスプラットフォームでは、複数のプログラミング言語を一元管理できるため、ネイティブアプリのように各OSに精通する必要がありません。そのため、特定の言語に依存しないエンジニアの採用が可能。
このように、工数の削減とエンジニアが確保しやすさの面で、クロスプラットフォームが人気を集めています。
デメリット
・一部のOSだけエラーが発生するリスクがある
・OSのバージョンアップへの対応が遅れる
複数のOSでアプリをテストする際に、一方のOSだけ不具合が発生することがあります。例えば、iOSは通知が表示されるけれど、Androidでは受け取れないといったようなトラブルです。例えばクロスプラットフォーム(記述言語がJava)で開発したアプリをiOSの端末で動かそうとしたとき、ファイル参照がうまくいかなくてアプリがおかしな動作をすることがあります。
その場合、不具合を起こしているプログラムだけOSに対応した言語で修正する、もしくは端末の機種を変える必要があります。
またネイティブアプリであれば、OSの新しいバージョン(iOS15.5など)が正式にリリースされる前にテスト版で動作を確認できますが、クロスプラットフォーム開発だとバージョンアップが始まってからアプリを修正しなければいけません。
モバイルアプリ開発の流れ
モバイルアプリの開発手順は、一つに定まっているわけではありません。
企画から実装、導入まで厳格に手順が決まっている「ウォーターフォールモデル」と、企画から設計、実装を高速で回し、クライアントにフィードバックをもらいながら改善する「アジャイル開発」などがあります。
現在ではアジャイル開発が主流ですが、ここではアプリ開発の流れを把握しやすい「ウォーターフォールモデル」に沿って手順を解説します。
企画
はじめに、どんなアプリを開発したいのかアイデアを出しましょう。
・手作業の在庫集計をモバイルアプリに移行したい
・PCバージョンのみだったECサイトをモバイルアプリに対応させたい
・新たにゲームアプリをリリースしたい
アプリ開発の目的・ゴールを明らかにし、それを実現するためアプリに必要な機能をイメージします。具体的には「要求定義書」といわれる、開発者のアイデアを書き出した文書にまとめます。
記載する内容は次のようなもの。
・開発の背景
・自社の課題
・アプリの全体像
・使用するOS
・アプリ化の範囲
・開発計画
アプリの全体像とは、ユーザーがアプリを操作した時のデータの流れやサーバー側の処理などをビジュアル化したものです。
画像引用:セコムトラストシステムズ株式会社
アプリ化の範囲とは、既存の業務(もしくは新規のサービス)をどこまでアプリで実現するかを指します。具体的な記載内容を下記にまとめたので、参考にしてみてください。災害発生時に社員の安否を確認するアプリを例にしています。
アプリ化の範囲(社員安否確認アプリ)
対応OSの選定 |
Andorid、iOSなど |
|
拡張性 |
端末の最大接続数など |
|
実現したい機能 |
モバイル端末側 |
・位置情報の取得(アプリ) ・付加情報の追記(コメントなど) ・自動送信機能(被災状況など) |
サーバー側 |
・従業員の管理機能(氏名・部署など) ・安否情報の一覧化 ・連絡・指示の一斉送信 |
なお開発会社に外注する際には、提案依頼書(RFP)を提出しましょう。RFPとは要求定義を実現するために、開発会社からアプリの中身を提案してもらう依頼書のこと。複数社の提案を比較できたり、開発会社とのやり取りを減らせたりといったメリットがあります。
RFPに盛り込むべき項目を以下にまとめたので、活用してみて下さい。
RFPに載せる項目
項目 |
内容 |
アプリの概要 |
・アプリ開発の背景と目的 ・解決したい課題 ・既存システムとの関連 ・会社・組織の概要 ・アプリの利用者 ・アプリ開発の予算 |
依頼する内容 |
・アプリの構成・性能・品質 ・運用条件 ・納期スケジュール ・納品条件 ・定例条件 ・開発体制 ・プロジェクトの管理方法 ・開発言語、 ・開発手法 ・現行システムからの移行方法、 ・見積もり |
提案手続き |
・RFPに対する窓口 ・提供資料 ・選定方法 |
開発の条件 |
・開発期間 ・作業場所 ・開発に使う機器(PCやモバイル端末) ・資料 |
契約事項 |
・支払い条件 ・保証年数 ・機密事項 ・著作権 |
関連記事:RFPとは?システム開発の質を高める提案依頼書の作り方を解説!【サンプルあり】
要件定義
要件定義とは、企画で固めたアイデアをモバイルアプリでどう実現するのか、技術的な視点から考える作業のことです。
具体的には以下のことを決めます。
・実装すべき機能
・要求される技術
・フレームワーク
・使うOS(Android、iOSなど)
・サーバー・モバイル端末のスペック
・導入・移行計画
・運用・保守の方法(自社で管理、もしくは外注)
自社のエンジニアに開発を任せるか開発会社に外注するかにかかわらず、要件定義は入念に行う必要があります。要件定義が疎かだと「想像以上に開発が長くなる」「開発したアプリが売れない」といったトラブルが発生するからです。
例えば、要件定義でサーバーのスペックを決めないと、接続できる端末数が想定より少ないというケースは考えられます。そうなると、規模の大きい業務アプリは機能しなくなります。ゲームであれば、アクセス過多でプレイできなくなるといったトラブルも発生しかねません。
このようなトラブルを防ぐためにも、要件定義で認識を擦り合わせることが大切。
※システム開発の要件定義について詳しく知りたい方は、以下の記事もご参考ください。下記記事のタイトルは「システム開発」とありますが、モバイルアプリ開発にも共通している内容です。
関連記事:システム開発の要件定義とは?受託開発における重要性や進め方を解説!
設計
要件定義が固まったら、アプリの設計に着手します。設計は主に次の2ステップを踏みます。
・基本設計
・詳細設計
基本設計
基本設計とは要件定義で固めたアイデアを基に、実装する機能を明らかにする作業のこと。主に「ユーザーが操作する部分」を設計していく工程に当たります。
基本設計で行う具体的な作業は以下の通り。
・必要な機能の洗い出し
・扱うデータの整理(個人情報、位置情報、時間情報など)
・アプリ画面のレイアウト(ボタンの配色・配置、背景画面のデザインなど)
モバイルアプリ開発において、基本設計は特に重要。なぜなら、操作性が悪いとユーザの満足度が下がるからです。
例えば業務アプリの場合、ボタンが小さいとデータの誤入力・誤送信のリスクが増えます。画面の遷移が多すぎると、何をどこまで処理したかユーザーが把握できなくなるかもしれません。そうなると「このアプリは使いにくい」と評価され、運用が定着しなくなります。
また開発を外注する場合、基本設計は工程に携われる最後のチャンス。次に説明する詳細設計は、開発会社の作業がメインになるフェーズだからです。
基本設計は理想的なモバイルアプリを実現するために重要なフェーズなので、開発担当者は積極的に関わりましょう。
関連記事:システム開発の基本設計とは?その位置付け・重要性・発注者としての関わり方を解説!
詳細設計
詳細設計とは、基本設計をもとにアプリの仕様を決めるフェーズのこと。具体的には、アプリの機能を細分化し、各モジュール(プログラムの最小単位)毎に、どのように実装していくのかを割り振ります。
開発会社に外注する場合は細かいところまで知る必要はありません。しかし、社内のエンジニアに依頼する場合、詳細設計が不明瞭だと正確に実装できなくなります。エンジニアの実装効率を高めるためにも、指示書になる「詳細設計書」はエンジニアに書いてもらいましょう。
詳細設計書で記載すべき内容は以下の通り。
・クラス図:システムを構成するクラスの関係を示す静的な資料
・モジュール構成図:機能ごとに必要な処理をモジュールごとに示す
・アクティビティ図:ユーザー操作・システム処理の流れを示す
・シーケンス図:データのやり取りを時間軸で表す
・IPO(処理機能記述):入力・処理・出力の流れを表現
・開発方針・ルール:フレームワーク、開発言語の指定、記述ルールの明記
・テスト設計:単体・結合テストの計画書・仕様書・設計書など
詳細設計について詳しく知りたい方は、以下の記事も参考にしてください。
関連記事:システム開発の詳細設計とは?プロジェクトの位置付け・役割をわかりやすく解説!
実装
詳細設計が固まったら、いよいよアプリのプログラミングです。
通常の実装フローは「詳細設計で細分化したモジュール」→「モジュール間を結合した機能」→「機能を結合したアプリ」の順番になります。詳細設計と同じく、開発会社に依頼する場合は、作業の細かい内容まで知っておく必要はありません。
しかし社内エンジニアに依頼する、もしくは開発担当者が実際にプログラミングする場合は、以下に留意する必要があります。
・開発言語の特性:実行速度、汎用性、信頼性など
・エンジニア:言語を習得しているエンジニアの人数、言語の習得の難易度など
・生産性:開発環境やフレームワークの有無
開発言語の特性などは、おすすめのプログラミング言語、フレームワークで詳しく解説します。
テスト
実装が終わったら、設計通りに動作するかテストします。テストは、主に以下の3ステップに分けて実施するのが一般的です。
・単体テスト
・結合テスト
・総合テスト
単体テスト
単体テストとはモジュールごとに行うテストで詳細設計通りに動作するか確認します。簡単なアプリであれば、実装段階で実施する場合もあります。
結合テスト
結合テストとは単体テストが完了したプログラム同士を組み合わせた機能テストのことで、基本設計通りに動作するか検証します。結合テストでは先入観を排除するために、専任のテスターを用意するケースが多いです。
総合テスト
結合テストが終わったら「総合テスト」といわれる、全ての機能が要件定義通りに動作しているかアプリ全体のテストをします。
総合テストは本番に近い環境で実施しましょう。例えばゲームアプリであればβ版(正式リリース前のアプリ)を公開してテストプレイヤーに遊んでもらう、業務アプリであれば一部の部署に試験的に導入して現場の声を聴くといったプロセスを踏む必要があります。
またモバイルアプリのテストで最も大切なポイントは、エミュレーターと実機を使い分けてテストすること。エミュレーターとは、モバイル端末をPC内でシミュレートするマシンのことです。
画像引用:TOPBEST ALTERNATIVE
端末がなくても画面構成や解像度を確認できる、テスト工費を節約できるといったメリットがあります。しかしモバイル端末特有の機能(カメラ、イヤホン、Bluetoothなど)が使えない、操作感を確認できないといったデメリットがあるため、結局はエミュレーターと実機を使い分けてのテストが無難といえます。
どのタイミングで実機テストに切り換えるか、明確な手順は決まっていません。一般的にはエミュレーターで単体テストを行い、結合テストと総合テストは実機を使います。ただし、ゲームのように端末の微妙な操作感が重要なアプリは、最初から実機を使うケースも珍しくありません。
このように開発アプリの用途に合わせて、テストではエミュレーターと実機を使い分ける必要があります。
リリース告知・ストア申請
社内で使う業務アプリであれば完成したアプリを端末にインストールして利用できますが、ゲームのような外部向けのアプリの場合は、ストア申請とリリース告知が必要です。
ストア申請とは、アプリを出すマーケットプレイスにリリースの許可を得る手続きのこと。
例えばAndroidであればGoogle Play、iOSであればAppStoreの審査に合格しなければ、アプリはリリースできません。Google Playは1回の登録に25$(約3,250円)の登録料が必要。App Storeでリリースする際には毎年99$(約12,870円)必要になります。
一例としてGoogle PlayとAppStoreの申請の流れを以下に示します。
手順 |
Google Play |
AppStore |
ステップ1 |
Googleデベロッパーアカウントを作成 |
Apple IDを作成し Apple Developer Programへ登録 |
ステップ2 |
デジタル署名したアプリケーションの パッケージファイルを用意 |
プロビジョニングプロファイル (Apple承認の開発者であることを 証明するファイル)を準備 |
ステップ3 |
GooglePlayにアプリケーションを登録 |
iTunes Connectに情報や プラットフォームや言語などを登録 |
ステップ4 |
承認を経て公開・リリース |
承認を経て公開・リリース |
審査には数日ほどかかるケースもあり、不合格の場合はアプリを修正しなければいけません。アプリの告知・宣伝をする際には、アプリの審査待ちや修正の期間も踏まえて、プロモーション計画を立てましょう。
運用・保守
アプリをリリースしたら開発は終了、というわけではありません。リリース後もユーザーの満足度を落とさないために、運用・保守をする必要があります。
「運用」とは、リリースされたアプリを継続的に安定して稼働させるため、管理・監視を行うこと。「保守」は不具合が発生した際にアプリを復旧・修正することです。
特に外部向けのアプリだと、ユーザーの満足度を高めるために質の高い運用が求められます。例えばソーシャルゲームの場合、ステージやキャラクターの追加、サウンドエフェクトの変更など、常に変化がないとプレイヤーが飽きてしまいます。またシステム障害で長期間アプリが使えなくなれば、市場での評価が落ちるでしょう。
またモバイルアプリのOSは頻繁にアップデートがあるために、それに合わせてアプリをバージョンアップする必要があります。
もし、開発会社に外注している場合は、どこまで運用保守をサポートしてくれるのか事前に確認しましょう。
モバイルアプリ開発におすすめの言語5選
モバイルアプリには様々なプログラミング言語が開発されています。どの言語も同じように見えるため、どれを利用すればいいか分からない人もいますよね。
ここでは数あるプログラミング言語の中からおすすめの言語を5つ紹介します。各言語にメリットデメリットがあるので、開発目的や予算、工期に合わせて選んでください。
Java
特徴 |
オブジェクト指向型 大規模アプリ開発向き |
メリット |
環境に依存せず動作する 実行速度が速い 情報が充実している |
デメリット |
設計に工数がかかる 習得が難しい |
Javaは、1996年にサンマイクロシステムズが開発した言語です。Googleの開発言語に指定されており、Androidアプリの大半がJavaで実装されています。オブジェクト指向といわれるモノとモノの関係に視点を当てた概念を採用しており、インフラや大企業の業務アプリなど大規模なシステム開発で重宝されています。
メリット
・環境に依存せず動作する
・実行速度が速い
・情報が充実している
Javaは、JVMといわれる仮想マシンが入っているPCであれば、OSに関わらず同じコードでプログラミングが可能。そしてJavaには「ガーベージコレクション」という未使用のメモリ領域を自動開放する機能がついています。そのため余分なプログラムのメモリ管理が不要なため、実行速度が速い点がメリットです。
またJavaは20年以上の歴史を有しているため、様々なアプリ開発のノウハウが出回っているのも魅力。もし開発中に対処できないエラーが発生しても、エラーコードを検索にかければ高確率で対処法が見つかります。関連書籍も充実しているため、Javaのアプリ開発の知見を深めやすいのもメリットです。
デメリット
・設計に工数がかかる
・習得が難しい
前述の通りJavaはオブジェクト指向を採用しているため、実装フェーズでオブジェクトを作る手間がかかります。大規模なシステムであればオブジェクト同士の関係性を具体的にすることで開発効率が上がりますが、簡単なゲームアプリや小規模なアプリ構築には不向きです。
またオブジェクト指向の概念自体が難しく、プログラミングになれていない人にとって、Javaはハードルが高いかもしれません。そのため、Javaでモバイルアプリを開発する際、開発会社や担当のエンジニアにJavaの知見がどのくらいあるのか確認しておきましょう。
Objective-C
特徴 |
C言語をベース Appleの公式開発言語 |
メリット |
ライブラリが豊富 Windowsでも使用できる |
デメリット |
コーディングが難しい バグが起こりやすい |
Ojective-Cは1983年にソフトウェア専門家のブランド=コックスが開発した言語で,
C言語がベースになっています。2008年にAppleが公式開発言語として発表し、数多くのiOSアプリ開発に使われています。
メリット
・ライブラリが豊富
・Windowsでも使用できる
Objective-Cは誕生以来40年以上の歴史があるため、ライブラリが充実しています。ライブラリとは、よく使うプログラムをひとまとめにしたアイテムのこと。ライブラリがたくさんあれば、一からプログラムを組む必要がなくなります。テスト段階ではライブラリの処理確認を省略できるため、開発の生産性を高められます。
またObjective-CはWindowsでも開発できる点が魅力。
Microsoftがリリースしたオープンソースプロジェクトの「Windows Bridge for iOS」により、Windows10上でObejctive-Cを動かせるようになりました。そのため、Windowsが主流の会社がモバイルアプリを開発するうえで、Objective-Cは利便性が高いです。
デメリット
・コーディングが難しい
・バグが起こりやすい
Objective-CはC言語の文法とオブジェクト指向の概念が組み合わさっているため、コードが複雑になりがちです。大企業の業務アプリなど大規模なシステムを開発すれば、コードの複雑さゆえにエラーやバグも起こりやすくなります。
Objective-Cでモバイルアプリを開発する際にはJavaと同様、知見と開発実績が豊富なエンジニアや開発会社を選ぶことをおすすめします。
Swift
特徴 |
Appleの周辺機器に対応 |
メリット |
コードがシンプル 不具合が発生しにくい リアルタイムで動作確認が可能 |
デメリット |
汎用性に乏しい コンパイルに時間がかかる |
Swiftは、2014年にApple社が開発したiOS向けのプログラミング言語です。Macやi-Pad等のモバイル端末だけでなくApple Watchなど、Appleの周辺機器のプログラミングも可能。Apple向けのアプリを開発したい人に根強い人気があります。
メリット
・コードがシンプル
・不具合が発生しにくい
・リアルタイムで動作確認が可能
Swiftは文末を示すセミコロンが不要、変数の型をしなくていいといったメリットがあり、とても書きやすい言語として人気です。実際以下のように文字列を表示するコード一つとっても、記述がシンプルであることが分かります。
Swift |
C |
Print(System Kanji) |
#include <stdio.h> int main(void) {printf("System Kanji\n");} |
またSwiftでは不具合が起こりそうなコードをあらかじめ知らせてくれたり、コードを書きながら動作チェックができたりするのもポイント。
そのため、一度実行してからエラーに修正をしなければいけない、実装が一通り終わってからでないとバグがみつかりにくい。といったトラブルを避けやすくなります。
デメリット
・汎用性に乏しい
・コンパイルに時間がかかる
先述の通りSwiftはApple向けの言語のため、Androidアプリの開発ができません。
またSwiftはコーディングの段階で型のチェックをしなくていい分、コンパイルの際に時間を取られるケースも少なくありません。処理に時間がかかっているコードを調査して修正することもできますが、調査自体が負担になることも考えられます。
*コンパイル:プログラムコードをPC上で実行可能な機械語に変換すること
kotlin
特徴 |
Javaの改良版 Androidの公式開発言語 |
メリット |
Javaと比べてシンプル Javaと互換性がある |
デメリット |
日本語の参考資料が少ない 開発事例が少ない |
kotlinは2011年にJavaの改良版として開発されたプログラミング言語で、2017年にAndroidの公式開発言語に指定されました。Kotlinで開発されている主なアプリとして、LINEやAbema、Yahoo!ニュースアプリ等が挙げられます。
メリット
・Javaと比べてシンプル
・Javaと互換性がある
kotlinはJavaをよりシンプルかつ安全にするために開発された言語なので、記述量が少なくて済む点がメリットです。例えばJavaでは文末を示すセミコロンが必要ですが、kotlinでは不要です。またNull値の参照を防止する機能もついているため、Javaで起こりがちなNullエラーの修正をしなくていい点も魅力。
*Null:データベースや変数などにデータが格納されていない状態のこと
またJavaとkotlinの間では相互にコードを呼び出せるため、既存のJavaシステムをkotlinで修正・追記できるのも大きな特徴です。
デメリット
・日本語の参考資料が少ない
・開発事例が少ない
kotilinはJavaと比べて歴史が浅いため、日本語の資料が少ないです。エラーの原因を調べても英語の文献が多いため、語学に自信がないとスムーズな開発は難しいかもしれません。
また日本国内での開発事例が多くないため、kotlinの開発経験が豊富なエンジニアも限られています。加えて、Androidアプリにも習熟したKotlinのエンジニアとなるとさらに希少。そのため採用単価が高くなる傾向にあるので、外注予算が限られている企業にはデメリットといえます。
C#
特徴 |
Microsoffが開発 仮想マシンで動作 |
メリット |
Unityとの相性が良い 簡単に開発環境を構築できる |
デメリット |
コーディングの自由度が低い コンパイルするまでエラーが分からない |
C#は、2000年にMicrosoftが開発したオブジェクト指向のプログラミング言語です。CやC++などC系の言語との互換性はなく、Javaと同じく仮想マシンを必要とします。
メリット
・Unityとの相性が良い
・簡単に開発環境を構築できる
C#はゲームエンジンのUnityで利用されており、Pokemon GOやshadowversなどの人気ソーシャルゲームもUnityで開発されました。またC#では、Microsoftが提供しているVisual Studioという開発環境を利用できます。Visual Studioは開発に必要なパッケージをインストールするだけでOK。自社でアプリを作りたいけれど準備に手間をかけたくない企業に、C#はおすすめです。
デメリット
・コーディングの自由度が低い
・コンパイルするまでエラーが分からない
C#は記述ルールが厳しいため、プログラマーにとっては実装にストレスを感じるケースもあります。ただし、自由度が低い分チーム内でコードの管理がしやすいため、C#に抵抗がないエンジニアをメンバーに加えるといいでしょう。
またC#は「静的型付け言語」と呼ばれる、プログラムのコンパイルが必要な言語です。そのため、コンパイルが終わるまでエラーが見つけられない点がデメリット。プログラムのエラーをリアルタイムで把握したい場合は、PHPやPythonなどの動的型付け言語を利用するといいでしょう。
動的型付け言語:変数の型を指定しなくていい言語で、コンパイルが不要。
モバイルアプリ開発に便利なフレームワーク5選
フレームワークとは枠組みという意味で、モバイルアプリなどのWebサービス開発では、多様な機能がパッケージになったものを指します。一からプログラミングする手間が省けるため、モバイルアプリ開発では欠かせないツールになっています。
ただし、今では多様なフレームワークが開発されているため、どれを使えばいいか分からない人も多いでしょう。ここではモバイルアプリ開発に適したフレームワークを5つ紹介します。
React Native
開発会社 |
Meta |
主なアプリの例 |
Discord Ubereats stand.fm |
メリット |
JavaScriptのみでアプリ開発が可能 モバイルアプリ用のライブラリが充実 ホットリロード機能がある |
デメリット |
頻繁に大規模なアップデートを実施 エラーの原因を特定しにくい |
React Nativeは、facebookを運営しているMetaが開発したクロスプラットフォーム開発用のフレームワーク。React Nativeで開発された主なアプリとして、InstagramやDiscord、Ubereats、stand.fmなどが挙げられます。
メリット
・JavaScriptのみでアプリ開発が可能
・モバイルアプリ用のライブラリが充実
・ホットリロード機能がある
ReactNativeは、JavaScriptのコードをiOSやAndroidで動くコードに自動変換してくれます。加えて、カレンダーや位置情報などモバイルアプリ用のライブラリも充実しているため、アプリの機能を拡張しやすい点も魅力です。
また「ホットリロード」と呼ばれる、プログラムの修正をリアルタイムでUIに反映する機能も装備。ソースコードを保存した後に再び実行結果を確認する必要がないため、他のJavaやCのように、微調整のたびにコンパイルする手間が省けます。
デメリット
・頻繁に大規模なアップデートを実施
・エラーの原因を特定しにくい
ReactNativeは頻繁に大規模なアップデートをしています。先述の通り、ネイティブアプリのように自動でアップデートに対応してくれるわけではないため、アップデートの度にアプリの動作確認やコード修正をする必要があります。
またエラーが発生した際にJavaScriptのコードに問題があるのか、ReactNativeのレイヤーで不具合が起こっているのか切り分けなければいけません。そのため、インフラや社内システムなどダウンタイムが長引くと影響が大きいシステムへの導入には不向きといえます。
Flutter
開発会社 |
|
主なアプリの例 |
旅行アプリ「じゃらん」 IT求人メディア「Green」 故障診断アプリ「Kubota Dignostics」 |
メリット |
UIを設計しやすい 仕様変更に強い |
デメリット |
OS独自の機能を開発できない 開発できるエンジニアが少ない |
Flutterは、Googleが開発・提供しているクロスプラットフォーム開発用フレームワークで、2018年にリリースされました。2021年に開発されたFlutter2は、AndroidやiOSに加え、WindowsやmacOSにも対応しています。
Flutterで開発された有名なアプリとして、旅行サービスの「じゃらん」やIT求人メディアの「Green」故障診断アプリの「Kubota Dignostics」などが挙げられます。
メリット
・UIを設計しやすい
・仕様変更に強い
Flutterでは、マテリアルデザインに沿ってUIを設計できます。マテリアルデザインとはGoogleが提唱しているデザインシステムのこと。直感的に操作できることを理想に掲げているため、Flutterにも操作性に優れたUIを設計できるライブラリが充実しています。
また、先述の通りFlutterは多様なOS上で動くアプリを同じコードで修正できます。そのため、仕様変更の際に迅速に対応できるのも大きなメリットです。
デメリット
・OS独自の機能を開発できない
・開発できるエンジニアが少ない
開発するアプリによっては、FlutterでOS独自の機能を利用できなくなるケースがあります。その場合は個々のOSに対応した言語でコーディングしなければいけません。
またFlutterは、海外で人気が高まっているフレームワークですが、日本では扱えるエンジニアは少ないのもデメリット。Flutterの対応言語がDartといわれるGoogleが開発した独自言語で、日本ではあまり浸透していません。そのためエンジニアを確保しにくいのがデメリット。
しかし、Flutterの利用者人口が増えているため、エンジニア不足のデメリットは解消されつつあります。
関連記事:Flutter(フラッター)とは?アプリ開発に取り入れるメリットを解説
Xamarin
開発会社 |
Xamarin |
主なアプリの例 |
NHK紅白歌合戦公式アプリ Nintendo Switch Online |
メリット |
OSのアップデートに迅速に対応 精度の高い開発テストが可能 |
デメリット |
オーバーヘッドが大きい 日本語の文献が少ない |
Xamarinは、2011年にMicrosoftのグループ会社であるXamarinが開発・提供しているフレームワーク。日本で開発されたXamarinアプリの例として、NHK紅白歌合戦公式アプリやNintendo Switch Online等が挙げられます。
大きな特徴は、C#でiOSやAndroid、macOS、LInuxなど様々なOSで動作するアプリを開発できること。Xamarinは、Visual Studio(Microsftが提供している統合開発環境)で提供されていますが、mac版の開発環境も利用できます。
メリット
・OSのアップデートに迅速に対応
・精度の高い開発テストが可能
Xamarinは、iOSやAndroidのアップデートに合わせて、フレームワークを更新しています。加えてOS毎のネイティブUIとAPI(プログラムやWebサービス間をつなぐインターフェース)も利用できるため、ネイティブアプリに近いアプリを開発できます。
またXamarinには「Xamarin Test Cloud」という、クラウド経由で端末をつないでUIテストができる機能を装備。同時に2,000台以上の接続が可能で「TestRecorder」も併用すれば、UIの操作履歴も記録できます。
Androidのようにメーカーによって端末の機能が微妙に違うと、機種固有の不具合に直面することも珍しくありません。大量の実機を用いてテストできるのは開発者にとって有り難いといえます。
デメリット
・オーバーヘッドが大きい
・日本語の文献が少ない
オーバーヘッドとは、プログラム実行の際に発生する中間処理と負荷のこと。Xamarinはオーバーヘッドの影響が大きい傾向にあります。そのため端末のバッテリー消耗が速く、アプリの動きが鈍くなることがあります。
またXamarinは歴史が浅いため、他の言語やフレームワークと比べると日本語のサイトや資料が多くありません。
エラーコードを検索にかけても英語のサイトしかヒットしないことも多いため、Xamarinを使いこなすためには英語の読解力も求められます。
Ionic
開発会社 |
Drifty社 |
主なアプリの例 |
アパレルメーカー「Diesel」のショッピングアプリ 動画配信サービス検索アプリ「Just Watch」 |
メリット |
UIコンポーネントが豊富 ネイティブ機能に最適化 |
デメリット |
オーバーヘッドが大きい 日本語の文献が少ない |
Ionicは、Drifty社が2013年に開発したモバイルアプリ特化のフレームワーク。HTMLやCSSなどのWeb技術をモバイルアプリ用に転換している点が大きな特徴です。JavaScriptで記述でき、フレームワークはオープンソース(無料で配布されているプログラムコード)です。
メリット
・UIコンポーネントが豊富
・ネイティブ機能に最適化
IonicはWebの技術を応用したフレームワークですが、モバイルアプリ用のUIコンポーネントが豊富です。コンポーネントとは、アプリ上で使える機能やデザインをパッケージにしたもの。主なUIコンポーネントを以下に挙げました。
UIコンポーネント |
概要 |
アクションシート |
アプリを操作する時にユーザーに次の行動を提示 (例:アプリを終了、シェア、削除など) |
チェックボックス |
複数のオプションから必要なオプションを選択できる |
アラート |
アプリを使う際にユーザーに警告する (例:本当にこのアプリを終了しますか) |
インフィニットスクロール |
スクロールを続けて新しいデータを読み込める |
プログレス・インディケーター |
ダウンロードやアンインストールなどアプリの動作進捗を知らせる |
またIonicはネイティブアプリの機能を使えるのも魅力。Ionicのプラグイン(アプリを拡張するソフトウェア)を活用すれば、Webページのモバイルアプリ化だけでなく、カメラの利用や位置情報の取得も可能。このように、Ionicは、既存のWebアプリをネイティブのモバイルアプリ用にカスタマイズするうえで、便利なフレームワークです。
デメリット
・大規模なバージョンアップが多い
・実行速度が遅い
Ionicでは、頻繁に大規模なアップデートが行われています。そのため、旧バージョンで開発したアプリをアップデートしなければならず、その際にデータの引継ぎがうまくいかずに一から作り直しという事例もあります。
またIonicは、Webアプリと同じ技術でモバイルアプリを開発できますが、ネイティブアプリと比べると実行速度が遅い点がデメリット。特にテストを行う際に、利用するエミュレータによっては応答しないケースもあります。
Unity
開発会社 |
Unity |
主なアプリの例 |
Pokemon GO みんなのゴルフ ドラゴンクエストウォーク |
メリット |
アセットストアが充実 ノンプログラミングで開発可能 |
デメリット |
編集画面が英語 起動に時間がかかる |
Unityとはアメリカソフトウェア大手の「Unity Technologies」が提供しているゲーム開発用のフレームワーク。日本でもモバイル用のゲームアプリ開発で利用されることが増えました。
代表的なゲームアプリとして「Pokemon GO」や「みんなのゴルフ」などが挙げられます。主な開発言語はC#とJavaScript、Booで、対応OSもAndroidやiOS、Windows Phoneなど幅広い点も魅力です。
メリット
・アセットストアが充実
・ノンプログラミングで開発可能
Unityではアセットストアといわれる、他の利用者が作ったプログラムを利用できるサービスが充実しています。
例えばキャラクターの動きやゲームステージの背景、効果音など様々なカテゴリーのプログラムを用意。プログラムは一度購入すれば何度でも使え、自由にコードを修正できるため、ハイクオリティなゲームを効率よく開発できます。
アセットストアでニーズに合ったプログラムを見つけられたら、自分でコーディングする必要もありません。
デメリット
・編集画面が英語
・起動に時間がかかる
Untiyで実際にゲームを作る編集画面は英語で表記されています。使われる単語は限られているため高度な英語力は必要ありませんが、英語が苦手な人は慣れるまでに時間がかかるかもしれません。
ただしUnity Hub3といわれるバージョン管理ツールから一部日本語版が出ていますので、利用してみてください。
またUnityでは、大量の画像を各OSに合わせて処理しなければいけないため、起動に時間がかかります。少しでもスムーズに起動させるために、OS毎にフォルダを用意する、あらかじめプラットフォームを指定してから起動する、といった手続きをしましょう。
モバイルアプリ開発の注意点5つ
ここではモバイルアプリ開発の注意点を5つ紹介します。PC上で動くアプリとは違う点を意識しなければいけないので、じっくり読んでください。
どのOSに対応させるか決める
モバイルアプリを開発する際にはどのOSに対応させるか決めましょう。
例えばゲームアプリの場合、幅広いユーザーを獲得する必要があるため、OSを選ばないクロスプラットフォーム開発がいいかもしれません。
市場のシェアが大きく、かつバージョンアップに素早く対応できるアプリを開発したいのであれば、AndroidやiOSなどメジャーなOSに特化するのが有効といえます。
このようにOSのシェアとユーザーニーズを総合的に考えて、モバイルアプリを開発する必要があります。
モバイル端末の特性を考慮する
モバイルアプリを開発する際には、端末の特性も考慮しましょう。
例えばPCブラウザーと同じUIにすると「画像が画面からはみ出す」「文字が小さくて見えない」「ボタンをクリックしにくい」といったケースが考えられます。
またソーシャルアプリを開発する場合、スマホで撮った写真や動画をアップロードできる機能がなければ、ユーザの満足度は下がるでしょう。
このように、モバイル端末の特性を踏まえてアプリを開発する必要があります。
セキュリティ対策を入念に行う
モバイルアプリでは、個人情報や会社の機密情報などセンシティブな情報を扱うことも少なくありません。
サイバー攻撃などでクレジットカードや住所などの情報が漏れたら、会社の信用を失います。会社の機密情報が社外に漏れたら、ライバル会社との競争で後れを取るリスクがでてきます。
アプリを開発した後は、以下のようなセキュリティ対策をしましょう。
・ウイルスソフトで脆弱性を洗い出す
・社内の管理ルールを決める
・セキュリティソフトをインストールする
・必要に応じて認証機能をつける
関連記事:サイバー攻撃とは?攻撃者の目的・近年の動向・攻撃の種類・手口・対策を解説!
ランニングコストも考えて予算を組む
外部向けのモバイルアプリを開発する際には、リリース後の運用コストも考えて予算を組みましょう。先述の通り、アプリをリリースする際にはGoogle PlayやApp Storeといったマーケットプレイスに登録料を払う必要があります。
例えばGoogle Playは1回の登録に25$(約3,250円)の登録料が必要。App Storeでリリースする際には毎年99$(約12,870円)必要になります。
もし将来、複数のアプリを数年単位で運用する場合、ランニングコストだけで数万円~十数万円かかります。
外部向けのモバイルアプリを開発する際には、運用コストも回収できるか検討しましょう。
著作権に配慮する
著作権の侵害も、モバイルアプリ開発にありがちなトラブルです。
人気アニメの画像や著名イラストレーターの作品を無断で使えば、訴訟沙汰になりかねません。また自社で撮影した写真や動画に第三者が写り込んでいれば、肖像権の侵害に当たります。
アプリで使う画像を選ぶ際には、フリー素材を使うか、もしくはオリジナルのイラストを採用したほうが無難といえるでしょう。
※ここまで読んでモバイルアプリを自社で開発するのは難しいと感じた方はシステム幹事にお問い合わせください。予算や目的などをヒアリングした上で、最適な開発会社を選定します。相談料・紹介料など一切かかりません。
モバイルアプリ開発におすすめの会社3選
ここまで読んでモバイルアプリを自社で開発するのは難しいと感じた人もいるかもしれません。
その場合は開発会社に依頼することをおすすめします。自作するよりも高度なアプリを開発できるだけでなく、運用・保守のサポートも受けられるからです。
ここでは、モバイルアプリ開発におすすめの開発会社を3社紹介します。
モンスター・ラボ
画像引用:株式会社モンスター・ラボ
「株式会社モンスター・ラボ」は東京都渋谷区に本社を置くアプリ開発会社。農業や銀行、印刷業など幅広い業界に対応しており、2,200件以上の開発実績があります。
企画から設計、開発までワンストップでサポート。どのようなアプリを開発したらいいか固まってない企業向けに、市場調査とライバル企業のリサーチも行っています。そのため、モバイルアプリ開発が初めての企業でも安心して依頼できます。
そして「モンスター・ラボ」の大きなメリットは、アプリの内製化もサポートしてくれること。アプリ開発のノウハウを基礎から教えてくれるため、自社でモバイルアプリ開発の知見を貯めたい企業にとって、モンスター・ラボは魅力的なパートナーといえるでしょう。
開発会社 |
モンスター・ラボ |
本社所在地 |
東京都渋谷区広尾1-1-39 恵比寿プライムスクエアタワー 4 |
特徴 |
導入実績2,200件以上 |
主な導入事例 |
株式会社クボタ「故障診断アプリ」 福利厚生サービスアプリ「イネサス」 発注プラットフォーム「Tapwiser」 フードデリバリーサービス「Careem NOW」 |
対応OS |
iOS、Android |
フェンリル
画像引用:フェンリル株式会社
「フェンリル株式会社」は大阪府大阪市に本社を置く開発会社です。2005年の創業以来、600を越えるアプリを開発。ショッピングアプリや業務アプリ、災害支援アプリなど多彩なモバイルアプリを開発しており、有名企業の納品実績も豊富です。
大きな特徴は、アプリリリースのノウハウが豊富なこと。多数のリリース事例をもとに、ストアの公開手順や必要な情報、ストアに記載するリリースノートの内容、申請時のリジェクト回避についてもサポートしてくれます。
そのため「せっかく開発したアプリをリリースできなかった」といったリスクを避けられる点が魅力です。
さらに同社は、アプリ開発後のサポートも充実。機能の追加開発やデザインの修正、市場戦略など、柔軟に対応しています。
開発会社 |
フェンリル |
本社所在地 |
大阪府大阪市北区大深町3-1 グランフロント大阪 タワーB 14F |
特徴 |
ストア申請のノウハウが豊富 |
主な導入事例 |
・株式会社ダイキン「Daikin Support Life」 ・NHK「ニュース・防災」 ・カードローンアプリ「my ac」 |
対応OS |
iOS、Androidなど |
bravesoft
画像引用:bravesoft株式会社
「bravesoft株式会社」は東京都港区に本社を置く開発会社です。同社が開発した、リアルタイムで投票やコメントによるQ&Aができる「Live!アンケート」は7,000社以上への導入実績があります。
他にも、白馬村のスキー場ガイドアプリや、英和辞書アプリ「俺の英和」、東京ゲームショウ公式アプリなど、多様なアプリを開発しています。
同社の大きな特徴は、アプリの海外展開をサポートしていること。海外における競合リサーチや、多言語対応、リリースサポート、企業連携を一括して行っています。
同社には中国、ベトナムなどアジア圏のエンジニアが在籍しているため、海外にあるグループ会社と提携すれば現地で営業もできます。
「海外でヒットするアプリを開発したい」「既存のアプリを海外仕様にしたい」という企業にとって、bravesoftは良きパートナーになってくれるでしょう。
開発会社名 |
bravesoft |
本社所在地 |
〒108-0014 東京都港区芝4-13-2 田町フロントビル6F |
特徴 |
海外向けのアプリ開発に強み |
主な導入事例 |
イベントプラットフォーム「eventos」 白馬村観光局の公式アプリ「HAKUBA VALLEY」 効果が見えるプッシュ通知ASP「Appvisor Push」 アンケートシステム「Live!アンケート」 |
対応OS |
iOS、Android |
※ここまで読んでも自社に合いそうな開発会社が見つからなかった方はシステム幹事にお問い合わせください。予算や目的などをヒアリングした上で、最適な開発会社を選定します。相談料・紹介料など一切かかりません。
モバイルアプリ開発の要点まとめ
モバイルアプリ開発の種類と具体的な流れ、おすすめの言語やフレームワーク、注意点等について紹介しました。
・開発手法は主に、ネイティブアプリ開発とクロスプラットフォーム開発の2種類
・kotlinやSwiftなどモバイルアプリ開発に適した言語が登場
・カメラや位置情報などモバイル端末特有の機能も考慮すること
・外部向けにリリースする際には運用コストも予算に組み込む
・テストをする際にはエミュレータだけでなく実機テストも忘れないこと
モバイルアプリは個人の趣味レベルでも開発可能なほど、幅広くノウハウが共有されています。
しかし、既存のシステムをモバイル端末と連携させたり、複雑な業務アプリを開発したりする場合だと外注の方が効率的なケースもあります。
外注先は、自社の導入目的や予算に合わせて選ぶことが重要です。どの開発会社を頼ればいいか迷う方は、システム幹事にご相談ください。予算や目的から最適なツールや会社をご紹介します。相談料などは一切かかりません。
コンサルタントのご紹介
岩田
専任のコンサルタントが、
お客様の予算と目的を丁寧にヒアリング。
最適な会社をピックアップ・ご紹介させていただきます!
初心者の方でも安心してご相談いただけます。
必ず開発会社に発注する必要はありません。システム開発の相場の情報から最適な会社選びまで無料でサポートします。お気軽にご相談ください。
Q. モバイルアプリとは何ですか?
モバイルアプリとは、スマートフォンやiPadなどのタブレット端末で動作するアプリのことです。モバイル端末の普及により、ゲームや旅行サイトなど多様なモバイルアプリが登場しています。
Q. モバイルアプリ開発とは?
モバイルアプリ開発のメリットは「スマートフォンやiPadなどのタブレット端末で動作するアプリを開発すること」です。詳細は記事内で紹介していますので、ぜひご覧ください。
この記事を書いた人
喜多村道秋
専門分野: ITインフラ
新卒で大手インフラ企業に入社。約10年間、工場の設備保守や運用計画の策定に従事。2018年からSEOブロガー・ライターとして活動を開始。「相手に伝わる文章を書く」を信条に執筆しています。
このライターの記事一覧