スマホアプリ開発の流れは、概ね以下のものがあります。
企画 ➤ 設計 ➤ 開発 ➤ テスト ➤ 公開 ➤ プロモーション ➤ メンテナンス
企画 (要望整理、要件定義)
「誰に、何を、いつまでに(提供するか)」を決めます。
要望整理・要件定義(注:クライアント様のほしいイメージを、開発側が具体的にアプリの機能に落とし込むこと)を行い、明確にプロジェクトメンバーに共有できる形にします。
また、いつまでに提供・公開するかのスケジュールも決定します。
企画段階の重要なポイントは三つあります。
1⃣まずは、アプリを使ってほしいユーザーの具体的な人物像、すなわち「ペルソナ」を決めます。
2⃣次はペルソナの悩み/要求を分析し、具体的にリストアップします。
3⃣そのうえで、アプリにどんな機能/コンテンツがあればペルソナの悩み/要求を解決できるかを明確にします。
上記はいわゆる「UX」(注:ユーザー体験)を明確にするための作業で、理想的なユーザーがどんな人物か、その人物が快適にアプリを使うための課題を網羅的に抽出するという非常に重要なプロセスです。弊社チームがこれまでのアプリ開発で蓄積してきた経験や見地を活かして、この段階からクライアント様チームの一員として、ブレインストーミングなどを重ねながら検討します。
設計 (仕様書作成、詳細設計)
企画でまとめられた要求定義を実際にどうやって実現するかを決めていきます。
サポートするプラットフォームやOS、バージョン、開発言語、ライブラリ、サーバー環境といった技術選定に加え、ユーザーの操作に対してどういう結果を見せるか、というアプリの振る舞いを詳細に決めていきます。
設計の工程は大きく二つに分けられます。詳しくはこちら(注:「アプリ開発について、もっと知りたい!」へ飛びます)
開発
「設計」で決定した仕様をもとに、アプリとして実装していきます。
環境構築、バージョン管理、プログラミング、デプロイ手順の決定など、さまざまな細かい工程があり、アプリそのものの制作・実装作業だけでなく、チームで開発するため、チーム内のコミュニケーションやプログラミング等のルール作りの作業も含まれます。
テスト
開発で出来上がった部分が実際に正常に動作しているかをテストします。
テストにはさまざまな種類や手法があります。
システム開発としても一般的な「ウォーターフォール型開発」では、単体テスト、結合テスト、システムテスト(総合テスト)、受け入れテスト(UAT)といったものが有名です。
公開
開発・テストを経て完成したアプリをユーザーに配布します。
現在のスマホアプリの場合、次の2つのプラットフォームのストアを経由して公開することが主流です。
Apple提供のiOSアプリ向けAppStoreと、Google提供のAndroidアプリ向けGoogle Playストアです。
アプリ名や説明文、紹介用の動画やスクリーンショット、プライバシーポリシーなど、アプリに関する情報を、それぞれのストア用に用意して設定する必要があります。
また、ストアでアプリを公開するには、各プラットフォームが規定するガイドラインを守り、審査をクリアしなければなりません。
プロモーション
アプリの公開前後には、アプリを知ってもらう宣伝活動が必要になります。
ただ公開しただけではユーザーはなかなかアプリをダウンロードしてくれません。自社サービスからの誘導やメディア、SNS、広告媒体を通じて、プロモーションしていく必要があります。
メンテナンス
アプリを公開したあとは、メンテナンスをしていく必要があります。
多くのユーザーに使ってもらいながら、使いやすさに関する改善点や不具合への修正点を見つけ、修正していきます。
また、iOS、Androidともに、毎年のようにOSのアップデートと新規デバイスのリリースがあり、それに伴いスマホアプリもアップデートする必要がある場合があります。
スマホアプリの開発環境、開発言語
iOSアプリの開発言語
iOSアプリの開発言語で最もメジャーなものはSwiftですが、他の言語でも開発できます。
Swift:MacやiOS向けアプリを開発するための開発言語です。主にXcodeで使用します。Apple社が2014年に発表したオープンソースのプログラム言語で、それまで使われていた「Objective-C」の難しさを解決するために生まれました。
Objective-C:Swift以前に使われていたMacやiOS向けアプリの開発言語。現在でも使用できますが、新規アプリであればSwiftを選ぶべきでしょう。
iOSアプリの開発環境
iOSアプリの開発に必要なものは、パソコン、開発ツール、Apple Developer Program登録したApple IDです。
なかでも、Mac と Xcode を使った開発が主流です。どちらもiOSを提供しているAppleが提供していますが、開発自体はWindows PCやその他の開発ツールでも可能です。
Xcode以外で有名な開発ツールとしては、Flutterがあります。FlutterはiOSアプリとAndroidアプリを同時に開発できる、Google提供の開発環境です。
※ Microsoftが提供している開発ツールのXamarinは、2024年5月1日でサポートの終了を発表しています。
Androidアプリの開発言語
現在、Androidアプリ開発で使われる言語で多いのは、JavaとKotlinです。
Java:
スマートフォンが誕生する前からシステムやWebなどさまざまなシーンで使われているプログラミング言語です。後述するKotlinが登場するまで、JavaがAndroidアプリ開発言語の主流でした。近年、Kotlinでの開発が多くなっていますが、Javaにはいままでの資産としてライブラリが豊富に存在しているので、現在もなお、Androidアプリ開発では重要な言語となっています。
Kotlin:2011年頃に誕生した比較的新しいプログラミング言語です。Javaとの互換性があるので、Javaの豊富なライブラリを利用でき、また初心者でも使いやすい言語として人気となっています。
Androidアプリの開発環境
Androidアプリの開発で必要なものは、パソコンとAndroid Studio です。
Androidの開発環境であるAndroid Studioは、Windows OSでもMac OSでも動作します。
Android Studio以外の開発環境でも開発できますが、現在はAndroid Studioでの開発が一般的になっています。
Webアプリ開発とネイティブアプリ開発の違い
Webアプリとして作るのか、ネイティブアプリとして作るべきか?
スマホアプリ開発でしばしば検討の項目として上がるのが、Webアプリとして作るのか、ネイティブアプリとして作るのか、ということです。
昨今、端末やOSの進化により、Webアプリでもネイティブアプリと遜色ない作りにできるようになってきました。
しかし、それぞれ得意な領域と不得意な領域が存在しているのは事実です。
Webアプリはその名の通り、インターネット回線を通じてWebに接続して使うアプリです。その実態はWebページであり、インタラクティブにアプリの振る舞いをするようにチューニングされたものです。
一方、ネイティブアプリとは、特定のOSに特化した、端末にインストールして使用するアプリのことです。主にiOSとAndroidの2つのプラットフォームがあり、それぞれ専用のストアからダウンロードして使用します。
ネイティブアプリ開発の場合、iOSアプリとAndroidアプリのクロスプラットフォーム開発を効率化したい
スマホアプリ開発において、ほとんどの場合、iOSとAndroidという異なる複数の環境での提供をどうするかで悩むことになります。それぞれの環境ごとに使う開発ツールやプログラミング言語が違うので、予算や開発リソースに関しての問題が発生しがちです。
上記の課題を解決するツールとして、両OSを同時開発できるマルチプラットフォーム対応の開発環境が存在します。有名なものは、ReactNative、Flutter、Unityなどがあります。
両OSの同時開発で使用する開発言語については、Javascript、Dart、C#、Pythonなどを用いますが、プロジェクトの特性に応じて個々の使いかたが多彩です。
iOSアプリとAndroidアプリ、Webアプリのクロスプラットフォーム開発で使用する開発言語
マルチプラットフォーム開発で使われるプログラミング言語は、その開発ツールがどの言語をサポートしているかで決まります。
Javascript:Webでインタラクティブな動きをつけるために使われている言語として有名です。スマホアプリ開発では、Facebook が開発したReact Nativeを使って、Javascriptでクロスプラットフォーム対応のスマホアプリ開発ができます。
Dart:ウェブアプリやモバイルアプリ開発のためにGoogleが開発したプログラム言語です。iOSアプリ開発としては、FlutterでiOS向けとAndroid向けアプリを同時開発する際に使用します。
C#:Mircosoftが開発した言語です。汎用性が高く、システム開発やゲームのコンシューマ機などでもよく使われていますが、スマホアプリ開発としては、ゲーム開発環境のUnity上で使用されることで有名です。
Python:AIやビッグデータの処理などで近年人気のプログラミング言語であるPythonでも、オープンソースライブラリの「Kivy」を使って、iOSとAndroid向けアプリを開発できます。
アプリの見積方法、アプリ開発だいたいいくらぐらいかかるの?
サブスク開発という費用効果の高い新しい開発手法
月額チャージ制で開発の柔軟性を担保しながら、開発コストの予算オーバーを防ぎます。
弊社のアプリ開発は、毎月の開発工数が固定で、工数内であれば、仕様の変更など、柔軟に対応しております。そのため常にプロジェクトにとって最適な開発ができ、無駄な開発工数が発生しないメリットがあります。また開発途中で追加的な内容がある場合も、都度開発内容の整理をし、優先度の高い開発から行うことによって開発予算を守ります。
きわめて合理的、効率的に開発しているため、48万円/月~の料金体制を実現できています。
国内、海外縦断の開発チームから、適材適所に人材をアサインします。
企画・仕様書作成など上流工程においては、日本国内にUX/UIを体得したデザイン、開発、それにセキュリティなど、それぞれの分野に強みを持つ開発企業/人材とアライアンス関係を締結しており、プロジェクトに応じて最適な人材をアサインできます。弊社開発体制について
アプリ開発の下流工程は、弊社ベトナム開発拠点を持ち、アプリ開発から保守まで、経験10年以上の優秀なエンジニア人材が安定して勤務しております。日本国内とは英語のコミュニケーションはもちろん、日本語能力の高いバイリンガルPMがおり、日本語でのコミュニケーションも日常的に行っています。
少額案件から高額案件まで、また様々な分野の開発案件に対応できます。
前述のサブスク開発アライアンス体制の恩恵により、弊社はスモールビジネスのアプリ開発から、上場企業様の大型開発案件まで、多くの開発実績があります。開発分野も、教育、生活サービス、金融など多岐にわたります。開発事例
国内、海外縦断の開発チームから、適材適所に人材をアサインします。
企画・仕様書作成など上流工程においては、日本国内にUX/UIを体得したデザイン、開発、それにセキュリティなど、それぞれの分野に強みを持つ開発企業/人材とアライアンス関係を締結しており、プロジェクトに応じて最適な人材をアサインできます。弊社開発体制について
アプリ開発の下流工程は、弊社ベトナム開発拠点を持ち、アプリ開発から保守まで、経験10年以上の優秀なエンジニア人材が安定して勤務しております。日本国内とは英語のコミュニケーションはもちろん、日本語能力の高いバイリンガルPMがおり、日本語でのコミュニケーションも日常的に行っています。
アプリ開発について、もっと知りたい!
スマホアプリ開発の設計について
企画でまとめられた要求定義を実際にどうやって実現するかを決めていきます。
サポートするプラットフォームやOS、バージョン、開発言語、ライブラリ、サーバー環境といった技術選定に加え、ユーザーの操作に対してどういう結果を見せるか、というアプリの振る舞いを詳細に決めていきます。
設計の工程は大きく二つに分けられます。
基本設計
外部設計とも呼ばれます。いわゆるデザイン制作もここに含まれます。
このフェーズでは、「何」を作るかを決めます。機能、画面レイアウト、画面遷移、UIなどを決定します。目に見える部分のアプリの振る舞いを定義していきます。
詳細設計
内部設計とも呼ばれます。
「基本設計」では「何」をつくるか決めますが、このフェーズでは「どのように」作るかを決めます。
基本設計のみでは複数の実装方法を考えられる状態でも、詳細設計では、実装現場のエンジニアが迷うことなく制作できるレベルまで仕様を取り決めます。
iOSアプリとAndroidアプリの同時開発について
スマホアプリ開発において、ほとんどの場合、iOSとAndroidという異なる複数の環境での提供をどうするかで悩むことになります。それぞれの環境ごとに使う開発ツールやプログラミング言語が違うので、予算や開発リソースに関しての問題が発生しがちです。
上記の課題を解決するツールとして、両OSを同時開発できるマルチプラットフォーム対応の開発環境が存在します。有名なものは、ReactNative、Flutter、Unityなどがあります。
両OSの同時開発で使用する開発言語については、Javascript、Dart、C#、Pythonなどを用いますが、プロジェクトの特性に応じて個々の使いかたが多彩です。
iOSアプリとAndroidアプリの同時開発で使用する開発言語
マルチプラットフォーム開発で使われるプログラミング言語は、その開発ツールがどの言語をサポートしているかで決まります。
Javascript:Webでインタラクティブな動きをつけるために使われている言語として有名です。スマホアプリ開発では、Facebook が開発したReact Nativeを使って、Javascriptでクロスプラットフォーム対応のスマホアプリ開発ができます。
Dart:ウェブアプリやモバイルアプリ開発のためにGoogleが開発したプログラム言語です。iOSアプリ開発としては、FlutterでiOS向けとAndroid向けアプリを同時開発する際に使用します。
C#:Mircosoftが開発した言語です。汎用性が高く、システム開発やゲームのコンシューマ機などでもよく使われていますが、スマホアプリ開発としては、ゲーム開発環境のUnity上で使用されることで有名です。
Python:AIやビッグデータの処理などで近年人気のプログラミング言語であるPythonでも、オープンソースライブラリの「Kivy」を使って、iOSとAndroid向けアプリを開発できます。
Webアプリとネイティブアプリの違いについて
Webアプリとネイティブアプリの違いは大きく4つあります。
・使用環境
・動作スピード
・デバイス機能
・自由度
使用環境
Webアプリは、ブラウザでURLにアクセスすればすぐに使用できます。ネイティブアプリはストアからインストールする作業が必要になります。使い始めるにはWebアプリの方が簡単です。
一方で、ネイティブアプリは一度インストールしてしまえば、次回からはホーム画面からすぐに起動できます。Webアプリの場合もホーム画面にブックマークをおくことはできますが、ユーザーが能動的に行う必要があるので一手間かかってしまいます。
動作スピード
Webアプリはあくまでブラウザ上で動くので、ブラウザの処理スピードの限界がすなわちWebアプリの処理スピードの限界となります。大抵の場合、問題になることはありませんが、ネイティブアプリの方が処理スピードは早いので、より重い処理を任せることができます。
デバイス機能
ネイティブアプリでは、カメラやマイク、センサーといった端末の機能をフルに使えます。Webアプリから使える機能もたくさんありますが、アプリ内の処理ロジックとシームレスに連携するのはネイティブアプリの方が得意です。
また、これまでプッシュ通知を使える否かがWebアプリかネイティブアプリかの採用を分ける大きなポイントのひとつでしたが、すでにAndroidでは実装されているWebプッシュ通知と呼ばれるブラウザへのプッシュ通知がiOSでも搭載予定となり、今後はプッシュ通知がどちらを採用するかの判断材料ではなくなるかもしれません。
他には、ネイティブアプリではアプリ内課金の仕組みが整っており、買切型、購読型どちらの場合でも有料サービスを実装しやすいのも特徴です。
iOSもAndroidも、1度ストアのユーザーアカウントに決済方法の設定をすれば、全アプリ共通で使用できるので、アプリごとに面倒な決済方法の設定をする必要がありません。
Webアプリでは、それぞれのアプリごとに独立した決済システムを実装することになるので、ユーザーはアプリごとに決済方法の設定をしなければなりません。
一方で、iOSもAndroidも、ストアでの課金にはプラットフォーム側に手数料を支払わなければならないというデメリットもあります。
自由度
Webアプリとネイティブアプリの違いの最後は、その自由度です。Webアプリは基本的に法律の範囲内であれば、インターネット上でできることを自由に公開、更新、変更ができます。
一方、iOSアプリやAndroidアプリは、プラットフォームのガイドラインも守る必要があります。また公開、更新ともに審査をクリアする必要があります。
企画内容、ターゲットユーザー、実装方法、宣伝方法など、いろいろなフェーズでたくさんの決まり事があるのでWebアプリに比べると自由度が低いです。
Webアプリ開発で使用する開発言語
フロントエンド開発ではブラウザに表示する見た目の部分を開発します。言語は、HTML、 CSS、 Javascriptなどが使われます。最近の開発現場ではReact.js, Vue.jsなど活用し、動的に表示する内容を変える開発が一般的になってきています。
バックエンド開発では、ブラウザに表示する内容を送り出すサーバーの開発を行います。言語としては、PHP, node.js, go, Python, Rubyなどが使われます。
ハイブリッドアプリについて
Webアプリとネイティブアプリの良いとこ取りをしようというのがハイブリッドアプリです。
Webアプリの更新性を活かしつつ、ネイティブアプリの機能を使いたい場合に採用します。
おおざっぱに仕組みを説明すると、ネイティブアプリの中にWebブラウザ機能を搭載し、コンテンツの一部をWebアプリで提供するという方法です。
●ハイブリッドアプリの利点
頻繁に更新する部分はブラウザ機能で表示することで、スピーディに改善していくことができます。
また、Webでもアプリでもサービスを提供したいという場合にも採用します。Webアプリを制作し、それをネイティブアプリでも表示させることで、1ソースで対応することができるからです。いわゆる「側ネイティブ(ガワネイティブ)」と呼ばれるアプリです。
●ハイブリッドアプリの欠点
Webアプリとネイティブアプリを連携させる部分で技術的に問題が起きやすいです。どうしても本来の実装方法からはイレギュラーな方法になりやすく、工夫が必要になる場面も多いです。
また、単純にWebアプリをネイティブアプリとしてラッピングしただけのネイティブアプリは、プラットフォームの審査をクリアできないリスクがあります。
ハイブリッドアプリをつくるツールとして有名なのは、Cordova(PhoneGap、Monaca)というフレームワークです。WebブラウザをベースにHTMLとJavascriptでアプリを実装することができます。
良くいただく質問
なぜサブスク開発のアプリ開発は、多くの開発会社より少ない費用でできるのか?
アプリの内容が開発途中で変わった場合の対応は?費用が追加されるか?
アプリリリース後のサポートも、しっかりしてくれるのか?