本稿では、スマホアプリ開発の基本と応用について、詳しく解説します。
スマホアプリ開発プロジェクトの成功とは何か、開発者が取るべき選択肢と戦略を、ソフトウェア開発の初心者にもわかりやすく説明します。
スマホアプリ開発の基礎!種類と特徴
スマホのオペレーティングシステムには、AppleのiOSとGoogleのAndroidがあるのはご承知かと思います。
また、アプリの種類にも「ネイティブアプリ」と「ウェブアプリ」があります。
- ネイティブアプリ:App StoreやGoogle Playからダウンロードして、スマホに直接インストールして使うアプリ
- ウェブアプリ:スマホのウェブブラウザ上で動作するものであり、ウェブの技術であるHTML5で記述されている
スマホアプリ開発では、アプリの性質によって「ネイティブアプリ」「ウェブアプリ」のどちらを採用するかを決めます。アプリの性質と種類の選択については、後ほど詳しく述べます。
プラットフォームの選定:iOS vs Android
スマホプラットフォームとしてiOS vs Androidのどちらを選ぶか、または両方に対応するかは、様々な要素によって判断し決められます。
市場シェア(日本) | 市場シェア(世界) | 開発コスト | 保守性や互換性の維持 | |
iOS | 67% | 27% | iOS>Android | iOS<Android |
Android | 33% | 72% |
市場シェア
日本ではiOS=67[%]/Android=33[%]、世界全体ではiOS=27[%]/Android=72[%]と逆転現象が起きています。
iOS/Androidを使うユーザー層
iOSを使う人は若者が多く、逆にシニア層はAndroidを使う人が多いです。
開発コスト
iOSは他のApple製品であるMacやApple Watchとの連携に優れています。Androidはローエンドからハイエンドまで、ハードウェアの選択肢が広く、折りたたみスマホなど多様性に長所があります。
開発コストはiOSのほうがAndroidより若干高くなりますが、保守性や互換性の維持など、Androidのほうがコスト面で考慮することが増えます。当然、iOS/Android両対応となると、開発コストも増えます。
アプリの種類:ネイティブアプリ、ハイブリッドアプリ、ウェブアプリ
アプリの種類には「ネイティブアプリ」と「ウェブアプリ」があると前述しましたが、実際にはその中間的な存在である「ハイブリッドアプリ」もあります。
三者の特徴を下表にまとめます。
アプリの種類 | ネイティブアプリ | ウェブアプリ | ハイブリッドアプリ |
---|---|---|---|
説明 | ダウンロードし、スマホにインストールするアプリ | スマホのウェブブラウザ上で動作するアプリ | スマホOSの機能であるWebView上で動作するアプリ |
開発 | SwiftやKotlin、Javaなどのプログラミング言語 | HTML5 | HTML5 |
メリット | ・起動・動作が速い ・カメラ・マイクなどのスマホハードウェアを利用可能 |
・インストール不要で利用可能 ・開発コストを削減可能 |
iOS/Andriod両対応が比較的簡単 |
デメリット | iOS/Androidそれぞれに対応させるため、コストがかかる | ・動作が遅い ・スマホのハードウェアの機能の利用が不可 |
ネイティブアプリより動作が遅い |
用途 | 地図アプリ、ゲームアプリ、カメラアプリなど一般的なアプリ全般 | レシピサイト、ポータルサイト、ECアプリなど | ネイティブアプリにウェブの仕組みを組み込みやすくする |
プロジェクトの規模と目的
ソフトウェア開発の規模の大小は、その組織の規模の大小や、取りうる開発環境によって変わってきます。
プロジェクト規模は、スマホアプリがターゲットとしているビジネスの目的によっても変わってきます。
単一機能のツールのようなアプリは、個人や少数メンバーの組織で開発することが可能です。
一方、機能を満載した複雑なアプリ、ゲームアプリなどは数十人単位の人員投入が必要です。
開発手法
開発手法は、スマホアプリに限りませんが、「アジャイル開発」と「ウォーターフォール型開発」に大別されます。
スマホアプリの開発と相性が良いのは、細かくリリースを繰り返すアジャイル開発です。
しかし、大規模なアプリ開発では、しっかり仕様を固めることができる旧来のウォーターフォール型開発も向いています。
スマホアプリ開発の費用と予算設定
スマホアプリ開発にいくら費用がかかるかは、組織のコスト構造も関係してくるので一概にいくら、とは言えません。
内製せずに外注化する場合は「相場」というものが存在しているので、初期費用の予算設定はこれを参考にします。
スマホアプリの場合は、絶え間ないアップデートを繰り返しリリースすることが多いため、開発チームが保守体制に移行することは少なく、ランニングコストが継続的に多くかかることを想定しておく必要があります。
予算面では、ROI(Return On Investment、投資対効果)のことを考慮する必要があります。
ROI[%]は、
ROI=利益÷投資額×100
で表され、数値が高いほど投資効率が良い、ということになります。
初期費用とランニングコスト
それでは、費用について詳しく見ていきましょう。
まず、開発のための初期費用がかかります。
- エンジニアの人件費
- デザイン費
- リリース後の保守・改善費
- サーバ構築費
費用 | 相場 |
エンジニアの人件費 | 初級SE:60万~100万円 中級SE:80万~120万円 上級SE:120万~160万円 プログラマー:40万~100万円/人 |
デザイン費 | UI/UXデザイン:150~600万円 イラスト・アイコン制作:70~150万円 ブランディング:50~300万円 モーションデザイン:100~400万円 |
リリース後の保守・改善費 | 保守費:数十万円~/月 改善費(全体的な変更):数百万円~/年 |
サーバ構築費 | レンタルサーバーの場合:無料~数十万円/月 |
初期費用は、アプリの企画・要件定義から設計、コーディング、テストなど、初回リリースまでの期間にかかる費用となります。
アプリの規模によって大きく変わってきますが、大半はエンジニアの人件費です。エンジニアの場合も、月いくらという「相場」が定まっています。
また、スマホアプリの場合は、UI/UXに凝る必要があるため、デザイン会社にデザインを依頼する場合もあり、これも初期費用に加わります。
スマホアプリは、アップデート間隔が比較的長いインフラ系のソフトウェアとは異なり、一度リリースした後も短期間で小刻みにバグフィックスや機能アップデートなどを繰り返す必要があります。
このため、リリース後の保守・改善のためのエンジニアの人件費も必要です。
また、サーバーを必要とするアプリの場合、サーバー構築の初期費用がかかり、サーバーの維持費がランニングコストに加わります。
ROI(投資対効果)の考慮
ROI[%]の計算方法は、前述のとおり
ROI=利益÷投資額×100
となります。もう少し細かく分解すると、
利益=(売上-原価-投資額)ですから、
ROI=(売上-原価-投資額)÷投資額×100
になります。
利益=1000[万円]で、投資額=1000[万円]の場合、ROI=100[%]となります。
ROIが100[%]を割ってしまう場合は、そのビジネスは投資を利益で回収できていないと言えます。
課金要素が高いゲームアプリをヒットさせた場合、例えば、利益=1[億円]で投資額=2000[万円]だとすると、ROI=500[%]となり、成功例といえるでしょう。
ROIはその組織の事業規模に依らず、事業の成功/不成功を測る指標となります。利益を出す、投資額を抑える、の両輪でROI指標を良くしていきます。
利益の見込みによって、投資額の増減を決める手段となります。
アプリ開発費用削減のテクニック
アプリ開発における費用削減は、その費用の大半が人件費ですから、安易な方法としては、
- 人員を削減する
- 単価の安い外注先を探す
ということになります。
ただし、これらの施策は製品の品質に直接響いてくるため、野放図に人件費を削減すればよい、というわけではありません。
ただし、コスト削減の意識は組織に徹底させ、継続的にコスト削減に取り組む努力が必要です。
また、効率的な開発を行う改善活動も必要です。
アプリ開発の効率を阻害するものは、後戻り工数の発生です。
後戻り工数を削減するためには、
- 正確な現状分析(課題の抽出)
- 的確な打ち手の検討と優先順位付け
- 打ち手の効果の素早い検証
が必要です。
また、往々にしてメンバー間のコミュニケーションロスが後戻り工数の発生源となります。
風通しのよい職場環境を作るのも大切な努力です。
規模の大きい組織だと、開発環境や開発ツールが旧態依然としている場合も少なくありません。
ソフトウェア開発の世界は日進月歩ですから、常にアンテナを高く張り、新しいツールや環境を取り込む姿勢を持つことが必要です。
Jitera社では、ソフトウェア業界の進歩を常にキャッチアップし、コスト削減に有効な組織作りを行っています。
既存システムとの連携やアジャイル開発に対応可能で、豊富な実績があるのが強みです。
スマホアプリを開発するならJitera社にご相談ください。
スマホアプリ開発の品質を担保するためのポイント
言うまでもなく、品質保証はソフトウェアの命です。品質保証の肝は、前工程に重点を置くことです。企画立案・要件定義などの前工程がしっかりしていないと、全体的な品質の低下を招きます。
スマホアプリでは、ソフトウェアの信頼性・品質の一要素として、UI/UXデザインの善し悪しが絡んできます。スマホはユーザーが長時間操作するため、優れたUI/UXを追求し、満足度を上げる必要があります。
「品質はプロセスで作り込む」という言葉がありますが、品質保証の最後の砦としてのテストフェーズの重要性は欠かせません。ソフトウェア開発は「人」が行うものですから、品質の面でも「人材」が優れている開発会社を選ぶ必要があります。
企画立案の重要性
そもそも何のためにスマホアプリを開発するのか、最初の取っ掛かりである企画立案フェーズがしっかりしていないと、プロジェクトがあやふやなものになってしまいます。
プロジェクトの目的と目標を定めて、どの層のユーザーをターゲットにするのかを明確に定義する必要があります。
これは、アプリの性格付けを行う重要な工程となります。
プログラマーの性として「とにかく早くコーディングに取りかかりたい」という欲求に駆られることが多いですが、この最初の企画立案工程をおろそかにはできません。
コーダー/プログラマーには関係ない話、ということにはなりません。
要件定義の重要性
次の工程は要件定義です。企画立案段階ではぼんやりしているソフトウェアの全体像ですが、要件定義の段階を経て、詳細を明確にしていきます。
製品の機能を分析して、製品に求められる要件を明らかにしていき、それを実現するための性能が確保できるかどうかを検討していきます。
しっかりした要件定義ができると、開発メンバー内での目標共有が確実になり、ブレが発生しなくなります。
アプリ開発のミスやバグ、といった欠点は、往々にしてメンバー間のコミュニケーションギャップが遠因となります。共通的な認識の基盤である要件定義がきちんと整っていれば、そのようなミスを減らすことができます。
厳格な要件定義を成功させることは、品質保証の要となります。
UI/UXデザインの重要性
スマホアプリでは、UI/UXデザインを追求することも大切です。
スマホアプリは、個々のユーザーが長時間操作するものであるため、わかりやすく統一された操作性のUI、使っていて楽しいユーザー体験を提供するUXの比重が高くなります。AppleのiPhoneが良い例です。
このあたりは、インフラ系のソフトウェアとは性格を異にする部分でもあります。
優れたプログラマー/システムエンジニアが必ずしも優れたデザイナーではないため、UI/UXに知見のあるデザイナーを起用して任せる、という施策も当然あり得ます。
あるいは、プログラマー/システムエンジニアがデザインについて学んでいく必要性も高くなります。
信頼性は高くともUI/UXが劣悪なスマホアプリなどは考えられないほど、UI/UXのデザインの重要性は高くなっています。
テストフェーズと品質保証
開発フェーズを経て、プロジェクトは品質保証最後の砦、テストフェーズへと進んで行きます。
テストは大別して4つに分類できます。
- ソフトウェアの最小単位ごとに行う単体テスト(ユニットテスト)
- 複数のモジュールを組み合わせて、機能を満足するかどうかをチェックする結合テスト
- システムが機能や性能を満たしているかどうかを検証するシステムテスト
- ソフトウェアの発注側が、ユーザーの使用環境を想定して、要件を満足しているかどうかを判断する受入テスト
です。
ソフトウェアのテストフェーズで必要なのがテストケースです。
テストするパラメータの条件やテストの手順、テストの期待する結果などを記したドキュメントがその実体です。
「すべての状態をテストするテストケースを作る」というのは、現実的ではありませんから、「このテストケースでどの程度の状態を網羅できているか」を判断することが大切になってきます。
レビューとフィードバックの活用
スマホアプリをリリース後、ユーザーから使用感などのレビューが寄せられます。
ただし、ユーザーにはサイレント・マジョリティーも多く、使い勝手に不満はあるけれども、不満を表明しない、ということはおおいにあり得ます。
開発側としては、能動的にユーザーレビューを収集する仕組みを作る必要があります。
レビューに寄せられた結果を分析することにより、スマホアプリの機能的な改善点や、再現性のないバグの存在が判明します。
それらをアプリ開発側にフィードバックすることにより、次回のアップデートの方針が定まります。
スマホアプリの場合、多くは一回作っておしまい、ではなく、絶え間ないアップデートを繰り返し、機能追加やバグフィックスを行う必要があります(後からのアップデートが比較的やりやすいという事情もあります)。
アップデートを行わないと、ユーザーのニーズを満たせなくなり、結果として競合アプリよりクオリティが低くなり、価値の低いアプリとなってしまいます。
どのくらいの頻度でアップデートを行うのか、費用との兼ね合いになりますが、方針を定める必要があります。
開発会社選びの重要性
ソフトウェア開発は人間の知的生産ですから、どのような人間のいる開発会社を選ぶかが、プロジェクト成功の鍵となります。
外側からはなかなかわかりづらいですが、組織の専門性の高さ、人材が持つ技術力の高さ、対外的なコミュニケーション能力の高さなどを開発会社選定の条件としましょう。
人員の多さや、見た目の単価の安さだけを判断基準にしてパートナーを選ぶべきではありません。
おおよそは、その会社の出している結果・実績によって判断がつきます。
ソフトウェア開発の業界にいれば、あの会社は良い、あの会社は良くないといった風評は、自然と耳に入ってきます。
良い会社と良いパートナーシップを結ぶことによって、プロジェクトを成功させることができます。
成功へのステップ:アプリ開発の要件定義からリリースまで
本章では、スマホアプリ開発の各工程について、改めて要点をまとめて整理していきます。
- 要件定義では、プロジェクトの機能や性能といった要件を明確にし、ドキュメント化します。
- 基本設計では、要件定義の内容を機能ごとに分割して、機能を決めていきます。また、プロジェクトの目的を実現するインターフェースを設計します
- 詳細設計では、プログラムごとに具体的な実現方法を決めます
- 開発では、実際にコーディングを行います
- テストでは、要件定義を実現できているか、確認します
- リリースでは、ユーザーへの公開と次期アップデートの方針検討を行います
1.要件定義
上流工程である要件定義は、プロジェクトの目的、方向性、機能、性能、制約条件を明確にして、正確にドキュメント化し、プロジェクトを成功へ導くことを目的としています。
要件定義は、システムエンジニアだけが知っていればよい、というものではなく、顧客からテスターまで含めたステークホルダー全員が内容を共有し、目的と最終成果物をひとつにするものです。
要件定義を正しく行うことによって、次工程の基本設計・詳細設計がスムーズに進むようにしなければなりません。
2.基本設計
基本設計は、前工程の要件定義で明確になったプロジェクトの目的などを、どのように実現してゆくのか、決めてゆく工程です。
システムの構造・データモデルを決定し、モジュールのインターフェースを設計します。
ソフトウェアの基礎構造を作る工程ですから、本工程の善し悪しがプロジェクトの品質を左右し、プロジェクト完遂にかかるコストを決定します。
詳細設計以降の工程を行うのに必須のフェーズであるため、細心の注意を払って設計を行う必要があります。
3.詳細設計
詳細設計は、基本設計で決めた内容を、具体的にどのように実現するのかを詳しくブレークダウンし、プログラム単位での設計に落とし込む工程です。
詳細設計では、プログラム内部のロジックや仕組みを、適宜図示を交えながらドキュメント化していきます。
アウトプットとして詳細設計書が作られて、次工程の開発フェーズでの指針となります。
詳細設計を綿密に行うことで、開発フェーズにおいて質の高いコードを書くことができるようになります。
4.開発
開発フェーズでは、詳細設計されたプログラムを、実際にプログラムコードを書いて実装していきます。
開発はチームで行うものなので、プログラマー各自が組織で決められたコーディングルールを遵守し、独りよがりでない、コードを書くことが求められます。
また、一人でコーディングしていると見落としがちなミスや欠陥を洗い出すために、他者によるコードレビューを適宜行い、コードの属人性を排除して品質を向上させます。
開発フェーズでは、個人のプログラミングの力量の差によって生産性が大きく変わってきます。
スケジュールの遅れが致命的なものにならないように、定期的な進捗管理を行う必要があります。
5.テスト
実装されたコードが要件定義通りに作られているかどうか、バグが無いかどうかを確認するのがテストフェーズです。
単体テスト(ユニットテスト)/結合テスト/システムテスト/受入テスト、と扱うモジュールの規模に合わせて様々なテストを行います。
テスト内容はテストケースとして手順化し、テストの網羅性を確認しながら徹底的な検証を行います。
繰り返しになりますが、テストがソフトウェア開発の品質を担保する最後の砦となります。
手を抜かずにやり切る必要があります。
6.リリース
テストフェーズで正常性が確認できたプロダクトを、エンドユーザーに提供し実際に使ってもらうのがリリースフェーズです。
ユーザーへの利便性を考慮したリリースノートを作成し、実際にアプリを使ってもらうためにアプリを適切な位置に配置(デプロイメント)する計画を立案します。
スマホアプリは初回のリリースでサイクルが終了するわけではなく、ユーザーの反応を収集しフィードバックすることによってアップデートとバグフィックスを繰り返していきます。
そうすることによってアプリの完成度を上げていき、ユーザー満足度を向上させます。
スマホアプリ開発のまとめ
本稿では、スマホアプリ開発の全体像、市場シェア・プラットフォームの選定・アプリの種類などを概観しました。
市場を分析することにより、ターゲットとなるユーザーを絞る必要性を記しました。
また、要件定義からリリースまでの各工程において考慮すべき点、特に費用の削減と品質の担保の仕方を中心に論じました。
品質保証の面では上流工程に重きを置くこと、各プロセスをきちんと踏む重要性を述べました。
スマホアプリ開発では、ややもすると後回しにされがちな品質保証は、実際には他社との差別化のために第一に優先すべき事項となります。
結局、スマホアプリ開発を成功に導くのは「人」と「技術」、つまり「良い人」「良い技術」を持つ「良い開発会社」を選ぶことに尽きます。
スマホアプリ開発をご検討の際には、高い技術力と豊富な経験を有するJitera社へのお問い合わせをぜひ考慮ください。
Jitera社では、開発自動化プラットフォームを構築して、お客様のアプリ開発を支援しています。