アプリ開発の基本と費用感

皆さんこんにちは!㈱スクラムソフトウェアの製造業DX担当.Aです。今回は月2回の当社で実施している「製造業DX勉強会」で触れた「製造業におけるDX」についてお伝えしたいと思います。
㈱スクラムソフトウェアの製造業DX担当。エンジニアとしてから製造業のシステム開発をメインに幅広く業務に従事。C言語、C++言語を使った組み込み開発やPHPやJavascriptを使ったWEB周りの開発が得意。社内の事例を他のエンジニアからヒアリングし、社外向けにシステム開発と製造業DXや工場管理についての情報発信を実施中
アプリ開発の種類〜プラットフォームと利用方法による分類
アプリと一言で言っても実は多くのアプリがあります。まずは、アプリを実装するためのプラットフォームを切り口に種類をあげてみましょう。
Androidアプリ(スマホアプリ)
アプリといえば、このAndroidアプリか、次のiOSアプリを総称したスマートフォンアプリ(スマホアプリ・ネイティブアプリとも言う)のことを指す場合が多いようです。Androidアプリは、GoogleのモバイルオペレーティングシステムであるAndroid向けに開発されるアプリケーションを指します。一般的には、Google Playストアからダウンロードしてインストールできるアプリと思ってもらえればいいでしょう。Androidアプリはスマートフォン、タブレット、スマートウォッチなど、Androidデバイスで動作します。
iOSアプリ(スマホアプリ)
iOSアプリとはiPhoneやiPadで稼動するアプリのことです。App Storeでダウンロードできるいわゆるiphonアプリのことですね。
Webアプリ
Webアプリは、GoogleChromeやマイクロソフトEdgeなどのブラウザからアクセスして使用するアプリケーションです。ユーザーはスマホやPCにソフトウェアをインストールせずに、ウェブサイト経由で利用できる点が利点といえます。一般的にはwebアプリという表現よりも、webサービスやクラウドサービスと言った表現をすることの方が多いかもしれません。
Windowsアプリ(デスクトップアプリ)
Windowsアプリは、MicrosoftのWindows OS向けに開発されたアプリケーションです。いわゆるEXEファイルでインストールするソフトウェアのことですね。
Macアプリ(デスクトップアプリ)
MacアプリはAppleのMacOSが搭載されたコンピュータで利用できるアプリになります。2のiOSアプリと同様、App Storeから入手可能です。例えばAdobe社のIllustratorやPhotoshopなどのアプリケーションはWindowsでは使い勝手が悪いこともあり、デザイン系に携わる人はMacOSを愛用しているため、デザイン・動画編集・写真加工などのアプリが特に充実している印象です。
クロスプラットフォームアプリ
本来、AndroidアプリとiOSアプリはそれぞれ、稼動するOSが異なることから別々のプログラム言語で開発する必要があります。しかし、近年、同様の言語で2つのアプリを開発できるようなプラットフォームとして、「クロスプラットフォーム」というものが開発されました。これにより、一つの言語によりAndroidアプリとiOSアプリといった、複数の異なるプラットフォームで動作できるアプリを開発できるようになりました。代表的なクロスプラットフォーム開発フレームワークにはReact Native、Flutter、Xamarinなどがあります。
各アプリに関する私見・・・
以上が、アプリの種類に関する簡単な概要です。ちなみに、僕の経験では、10〜20年くらい前までは、開発といえばWindowsアプリ(Windowsシステム)がほとんどでしたが、ここ数年、Windowsシステムの開発依頼はめっきり減っています。理由としては、特にビジネスシーンにおいてここ数年でクラウドサービスが爆発的に普及し、Windowsアプリの開発依頼の減少に反比例してWebアプリの開発依頼が増えているためだと、考えています。
また、AndroidアプリとiOSアプリについては、これまで別々のプラットフォームで開発しなければならなかったのが、クロスプラットフォームアプリの登場により、同一プラットフォーム・同一プログラミング言語で開発することができるようになりました。これは、プログラマーの立場からすると、アプリを開発する環境をいちいち変更しなくていいという点で、画期的なことですね。もし、あなたの会社でAndroidアプリとiOSアプリを同時にリリースしなければいけないといった場合は、このクロスプラットフォームアプリの利用も検討してみるといいでしょう。ちなみに、クロスプラットフォームアプリにおいては、どのフレームワークがおすすめかといった質問を受けますが、個人的には習得の簡単さ・できることの幅の広さ・アプリのパフォーマンスなどからFlutterがおすすめです!
アプリ開発の方法
以下はプラットフォーム別のアプリにおけるメリット・デメリットです。
プラットフォームの決定
- iOS:
- メリット:個人でもApp Storeを通じ、収益化が可能。Appleの審査があるため安心・安全なアプリが構築可能。
- デメリット:App Storeの審査を通らなければ、App Storeでの公開ができない。審査を通過するためにセキュリティ面や認証機能などコーディング量が増える傾向がある
- Android:
- メリット:Google playでの公開の審査は、App Storeよりも緩い。また審査を通さずに配布も可能。研究開発でも使える。
- デメリット:使えるデバイスが多い分、様々なデバイスでの開発テストが必要になる
- デスクトップ(Windows・Mac):
- メリット:ハードウェアのリソースを最大限に活用でき、高度な処理が可能
- デメリット:インストールの手間がかかる。バグなどの不具合へ対応など手軽にアップデートできない場合が多い
- Web:
- メリット:比較的開発可能なエンジニアが多い。また、ブラウザを通じて比較的簡単に利用可能。OSに依存しにくい。
- デメリット:スマホアプリやデスクトップアプリに比べてデバイスの持つ機能(カメラ・GPS・各種センサー)の利用に制限があり、高度な処理には向かない場合がある。
プログラミング言語の選択
アプリ開発においては、大きく、フロントエンドの開発とバックエンドの開発に別れます。
フロントエンド開発とは、アプリ開発においては主に、ユーザーが実際に操作するためのユーザーインターフェイスの開発を指し、ユーザーが利用するデバイスで稼動するプログラムです。対して、バックエンド開発とは、主に、サーバー内で稼動しフロントエンド側で必要となるデータをデータベースで管理したり、複雑な計算をしフロントエンド側に返却するプログラムです。一部のスマホアプリやデスクトップアプリではサーバーとの通信をせずフロントエンド開発のみで稼動するプログラムもあります。
構築したいアプリや配布の必要性など、アプリの目的が決定すると、必然的にプログラミング言語がある程度、決定します。以下は一般的なプログラミング言語の特徴です。
- Java: Androidアプリにおけるフロントエンド開発では標準的に使用されます。また、その他のアプリにおけるサーバサイドの開発にも使用されます。
- Kotlin: Androidアプリにおけるフロントエンド開発でJavaに代わる選択肢として注目されています。
- Objective-C: Objective-Cは古くからある開発言語で、Appleが初めてiOSプラットフォームを導入したときから存在しています。一部の既存のアプリやライブラリはObjective-Cで書かれており、引き続きサポートされています。Objective-CはC言語から派生しており、iOSアプリの開発者にとっては基本的なスキルです。
- Swift: iOSおよびmacOSアプリのフロントエンド開発のために使用される言語です。Appleのアプリ開発の言語はSwiftを推奨しています。
- Python: AI開発、データ分析、機械学習などで使用されます。アプリ開発においては、サーバサイドでの開発の他、Windowsアプリの開発も可能です。
- JavaScript: Webアプリ開発においてはフロントエンド開発で不可欠な言語です。
- C言語とC++:C言語とC++は、どちらも高度なコンピュータプログラムを開発するために使用されます。C言語はシンプルで効率的な言語で、オペレーティングシステムや組込みソフトウェアなどでよく利用されます。一方、C++はC言語を拡張し、オブジェクト指向プログラミングの概念を導入しています。C++はソフトウェアの再利用性を向上させ、大規模なアプリケーションやゲームの開発に適しています。どちらもプログラマーに幅広い制御と柔軟性を提供します。
- C#:Microsoftの.NETフレームワークで使用される主要なプログラム言語で、Windowsアプリをの開発に適しています。
- Flutter:Googleが開発した比較的新しい言語で、主にクロスプラットフォームの開発に利用されます。そのため、1つのコードベースでAndroidとiOSに対応できることが特徴です。
アプリ開発に関する費用感
これまで当社で経験したアプリ開発に関する費用感を簡単にまとめてみました。ご参考にしてください。
フロントエンドのみのスマホアプリの開発費用・・・
当社の場合、データベースとの連携のないフロントエンド単体で構築可能なアプリの場合、150万〜250万円くらいが多いです。AndroidとiOS2つのプラットフォームで実装する場合は費用は1.5倍くらいになります。
バックエンドを含んだスマホアプリの開発費用・・・
会員登録機能や認証機能など、サーバー内のデータベース開発も必要な標準的な機能のアプリの場合、250万円〜450万円くらいが多いですね。また、スマホのデバイスの特殊な機能(センサーやGPSなど)を使った特殊な処理が必要な場合は、難易度に応じて費用も増加していきます。ちなみに、弊社の得意な開発分野でもあります。
WEBアプリの開発費用・・・
会員登録機能や認証機能などを含んだ、標準的な機能を搭載したWEB開発の場合、200万円〜400万円くらいが多いですね。こちらも搭載する機能に応じて費用も高くなります。
デスクトップアプリの開発費用・・・
デスクトップアプリの場合、搭載する機能がまちまちなので、費用感を一概に言うのが難しです。WEBアプリとそれほど開発コストは変わりませんが、デスクトップアプリで実装したいと言う場合は、どうしても必要な機能が複雑だったり高度だったりするため、WEBアプリでは実現できないことも多く、その分、相対的に高額になる傾向があります。400万円〜と言う場合が多いですね。
その他の追加費用・・・
開発時にデザイナーが必要な場合、デザイン費用が発生します。安い場合は数十万円から、高い場合は百万円以上の場合もあります。デザイナーへの依頼はデザイン性の向上だけでなく、操作性の向上にも繋がることが多いため、信頼のおけるデザイナーへの発注はアプリの完成度に対してとても重要な要素です。
また、開発費用以外にも、サーバー費用や保守・運営費用といった、運営時に毎月必要な費用もあります。年間50万円〜100万円くらいが多いですね。
アプリ開発の実践でおすすめしたいポイント
アプリ開発において「アジャイル開発」という手法があります。これは、ユーザーからのフィードバックを積極的に取り入れ、途中で変更を受け入れながら、小さな成果物を頻繁にリリースし、ユーザーの希望に合致するアプリを迅速に提供する手法です。
当社でもこの手法を活用しユーザーと連携しながらアプリ開発をしています。ユーザーに対して、動いているものを見せることにより、早めに問題を見つけ軌道修正し、また、適宜、確認をとることで、ユーザーのイメージをシステム化していきます。
アジャイル開発を初めて聞かれた方は、「ユーザーの希望に沿わない場合、出戻りの開発が多発するのではないか?」と思われるかもしれませんが、実際にはユーザーとコミュニケーションを密にとることにより、開発終盤で大掛かりな修正が必要になるケースが減るため、アジャイル開発が原因で、開発期間が長引くというケースはほとんどありません。
逆にユーザーとの連携が強化される結果、リスクの低減やユーザーの満足度向上にも繋がります。あなたの会社でもし、アプリ開発を行う場合、参考にして下さい。
また、当社でもアプリ開発は全国対応しておりますので、もしご興味がありましたら、無料相談からご利用ください。
