モバイル デバイス用のソフトウェアの構築
モバイル アプリ開発の定義は、モバイル アプリの作成とリリースに関連するあらゆるプロセスや、アプリのコーディングや開発への特定の参照など広範な範囲にわたる可能性があります。この記事では、モバイル アプリ開発の両方の定義について説明し、特に、ソフトウェア自体の構築方法について決定を行うユーザーや担当するユーザー向けのモバイル アプリ開発の定義に焦点を当てます。
モバイル・アプリケーション開発を定義するためには、まずモバイルの定義から始めなければならりません。この場合、モバイルとは、スマートフォン、タブレット、ノート PC、スマート ウォッチ、電子書籍リーダー、携帯ゲーム機などの携帯電子機器などを指します。アプリケーションとは、これらのデバイスにネイティブなソフトウェアだけでなく、それらのデバイスがサポートする一般的なオペレーティング システム、プラットフォーム、言語も意味します。学習をすすめていくにつれて、モバイル アプリ開発に取り組むさまざまな方法と、多くの決定事項があります。
モバイル アプリケーション開発プロセス
モバイル アプリを作成してリリースするプロセスは、多くの場合、一連の手順またはフェーズで理解されます。モバイル アプリ開発プロセスのこれらのフェーズには、ビジネス、マーケティング、設計、エンジニアリングなど、組織内の多様な人々と規範が含まれます。モバイル アプリ開発プロセスのフェーズは次のとおりです:
- 戦略
- 計画
- 設計
- 開発
- テスト
- リリース
モバイル アプリの作成にはどのくらいの時間がかかりますか?
組織は、モバイル アプリケーションの開発が必要な—場合に、3 か月から 9 か月—以上の期間を費やします。アプリのスコープと機能はすべて、モバイル アプリ開発プロセスのタイムラインに影響します。
戦略
モバイル アプリケーション開発プロセスは、モバイル アプリが問題や機会へのアプローチに対する適切な解決策である理由を理解し、構築する内容とその方法を決定することから始まります。戦略フェーズでは、組織はアプリの目的と成功の測定を確立し、市場と競合を分析し、顧客のニーズを調査し、アプリが提供するユーザーとユース ケースを決定します。戦略フェーズでは、組織は、どのモバイル アプリ開発プラットフォームが目標と要件に最も適しているかの検討を開始する場合もあります。このフェーズでは、組織もアプリのリリースに関するマーケティングの検討を開始します。
計画
計画フェーズでは、組織はモバイル アプリ開発プロセスの 4 つの重要な詳細 (チーム、ツール、テクノロジ、タイムライン) に同意します。この時点では、ビルドする必要があるモバイル アプリの種類、アプリをビルドするユーザー、使用するプラットフォームを把握しています。このフェーズでは、組織は製品ロードマップを作成し、どの機能をどの順序でいつ、どのような順序で構築するかを決定し、マイルストーンを設定し、目的のリリース日を満たせるようにするプロジェクト計画を設計します。利用可能なリソースと専門知識を理解し、プロセス用に選択したテクノロジを実装する方法を理解することは、その日付を決定し、リリースを達成するために不可欠です。
設計
モバイル アプリの外観、特徴、機能は、設計フェーズ中に形を整え始めます。モバイル アプリ開発プロセスのこのフェーズでは、チームはユーザー エクスペリエンスをグラフ化し、さまざまな忠実度でユーザー インターフェイスとアプリの状態を作成します。最初は、概念実証を提供したり、早期に顧客からのフィードバックを収集したりするために、忠実度の低いモックアップから始めることができます。開発者やエンジニアは、このフェーズで UX と UI の決定に関するプロトタイプ作成やコンサルティングを行い、組織が使用することを選択したプラットフォームの要件と技術仕様をチームが認識し続けることができます。このように、組織は完全に忠実な画面に移行するときに、真に構築できるアプリを設計しました。
開発
このコンテキストでの開発という言葉は、モバイル アプリの作成とリリースに関連する完全な ソフトウェア開発ライフサイクル を指すことがあります。ただし、より一般的な開発とは、モバイル アプリ開発のこのソフトウェア開発フェーズを意味します。このフェーズは、この記事の後半で詳しく定義します。この時点では、このフェーズは、チームが技術アーキテクチャと技術スタック (フロントエンド、バックエンド、API を含む) を確立し、開発マイルストーンを設定し、アプリの開発ライフサイクルを決定し、アプリをコーディングする手順として最もよく説明されています。
テスト
テストは、モバイル アプリケーション開発プロセスの重要なフェーズです。テストを行わないと、組織はアプリがセキュリティで保護され、ユーザーが必要と思うように動作し、展開する場所で機能することを確信できません。このフェーズでは、チームが品質保証を提供し、テスト ケースを作成して、アプリを実行するすべてのデバイスでアプリの使いやすさ、パフォーマンス、安定性、セキュリティを評価します。多くの場合、組織はアプリをストレステストして、アプリケーションのアーキテクチャが突然の厳しい需要に合わせてスケーリングできることを確認します。
リリース
モバイル アプリケーション開発プロセスの最後のフェーズはリリースです。アプリが展開されると、組織はアプリを使用しているお客様にサポートを提供し、継続的な監視とメンテナンスを行って、アプリが確実に利用可能で、必要に応じて実行されるようにします。アプリの導入を促進するためのマーケティング キャンペーンと動きは、多くの場合、このフェーズと一致します。組織がアプリに対して、開発ライフサイクルで処理できる変更の範囲を超える機能強化や変更を行うことにした場合、モバイル アプリ開発プロセスを新たに開始することを決定する場合があります。
モバイル アプリ開発プロセスでのソフトウェア開発
開発フェーズの最初のタスクは、モバイル アプリの技術アーキテクチャを確立することです。多くの場合、フロントエンド、バックエンド、API を含む技術スタックと混同されますが、技術アーキテクチャは、モバイル アプリケーションの開発を管理するルールとパターンです。
技術アーキテクチャ
技術アーキテクチャは、多くの場合、次の 3 つのレイヤーで構成されます:
プレゼンテーション レイヤー
これは、顧客が見てやり取りするアプリのレイヤーです。プレゼンテーション レイヤーには、ユーザー インターフェイスと、ユーザー エクスペリエンスを構成するアプリのすべての要素が含まれます。
ビジネス レイヤー
ワークフロー、データ交換、および操作を制御するロジックは、ビジネス レイヤーに存在します。セキュリティ、キャッシュ、ログ記録、例外処理などのモバイル アプリの主要な側面は、このレイヤーで処理されます。
データ レイヤー
データ レイヤーは、アプリケーション自体の要件に対応し、データ ユーティリティ、データ アクセス コンポーネント、ヘルパーまたはサービス エージェントを提供します。また、データを検証して維持し、データ トランザクションをサポートするレイヤーでもあります。
テクノロジ スタック
同様に、テクノロジ スタック (技術スタック) も、前述の 3 つの部分で構成されます。ただし、これらの部分は、作成のガイドラインではなく、アプリのビルドとサポートに使用される特定の選択肢を表します。
フロントエンド
プレゼンテーション レイヤーと密接に対応し、モバイル アプリのフロントエンドのコーディングに使用されるツールと言語は、アプリの展開先となるデバイスに大きく依存します。多くのオプションがあり、ほとんどのモバイル デバイスにはネイティブな特定の言語があります。
バックエンド
バックエンドは、サーバー上に存在し、モバイル アプリの機能をサポートするデータベースやその他の類似オブジェクトを含むアプリの一部です。 モバイル バックエンド テクノロジ の選択に関しては、チームはデバイスにあまり注意を向けず、多くの場合、 事前構築済みのバックエンド ソリューションを見つけることができます。
API
アプリは、バックエンドとフロントエンドの間で API を介して通信します。これにより、アプリは他のアプリやサービスと統合して対話することもできます。
ただし、チームが技術スタックを選択したり、技術アーキテクチャを確立したりする前に、まず、構築するモバイル アプリの種類を決定する必要があります。
モバイル アプリの種類
モバイル デバイス用アプリの開発に関しては、組織にはさまざまな種類のモバイル アプリから選択できます。この場合、モバイル アプリの種類は、アプリがユーザーに許可することではなく、アプリのビルド方法を指します。
ネイティブ アプリ
Android や iOS など、特定のデバイスまたはプラットフォームに固有のアプリは、ネイティブ アプリと呼ばれます。これらのアプリは、デバイスのオペレーティング システム上で直接実行され、プラットフォームが提供する言語とフレームワークを使用し、オペレーティング システムに固有のストアまたはマーケットプレースを通じて展開されます。通常、ネイティブ アプリは、実行するデバイスのすべての機能とハードウェアにフル アクセスできます。
クロスプラットフォーム アプリ
チームは、選択した言語とフレームワークでアプリをコーディングし、 Xamarin などのプラットフォームを使用してアプリを実行することを意図している各オペレーティング システムのコードをコンパイルできます。クロスプラットフォーム アプリは、これらと呼ばれるように、チームがさまざまなデバイスで実行し、コードの大部分を再利用できるようにします。ただし、コードをブリッジするには、1 つのプラットフォームに対する開発よりも多くの作業が必要です。
プログレッシブ Web アプリ
Web アプリケーションと同様に、プログレッシブ Web アプリケーションはモバイル ブラウザーで実行され、通常は JavaScript、CSS、HTML5 を使用して構築されます。Web アプリをプログレッシブにする理由は、高度なブラウザー機能を使用してプッシュ通知、より優れたタッチ ジェスチャ、ハードウェア操作を提供する機能です。プログレッシブ Web アプリの構築に役立つ SDK はありませんが、マーケットプレースを経由せずに展開できます。
ハイブリッド アプリ
ネイティブ アプリとプログレッシブ Web アプリの組み合わせであるハイブリッド アプリは、基本的に Web アプリケーションを実行するネイティブにコーディングされたコンテナーです。この組み合わせにより、アプリはデバイスの機能とハードウェアにより多くのアクセスが可能になり、1 つのコードベースを維持しながら、より多くの種類のデバイスで実行できます。すべての利点について、ハイブリッド アプリは通常、他の種類のモバイル アプリのパフォーマンスを実現しません。
ビルドするモバイル アプリの種類
組織がビルドすることを選択したモバイル アプリの種類は、チームが利用できるツール、プラットフォーム、フレームワーク、言語、アプリの配布、保守するコードベースの数、アプリが実行されるデバイス、アプリでできることに大きな影響を与えています。
作成するモバイル アプリの種類を決定する際は、ユーザーが誰になり、アプリから何が必要かを検討すると便利です。たとえば、主に 1 種類のデバイスまたはオペレーティング システムを使用する場合は、ネイティブ アプリが最適な場合があります。ハードウェア センサーや GPS に依存しないアプリは、プログレッシブ Web アプリやハイブリッド アプリとして適している場合がありますが、ユーザーが適切な接続を持っていない場合には適していない可能性があります。ユーザーがビジネスまたは組織のメンバーである場合は、別のモバイル戦略を検討することをおすすめします。もちろん、これはすべて、組織内またはパートナーを通じて利用できる専門知識にかかっています。
このグラフでは、開発する必要があるアプリの種類を検討するのに役立つ、さまざまな種類のモバイル アプリ間の相違点と類似点の概要を示します。
モバイル アプリの種類の比較
ネイティブ アプリ | クロスプラットフォーム アプリ | プログレッシブ Web アプリ | ハイブリッド アプリ | |
---|---|---|---|---|
コードベースの数 | プラットフォームごとに 1 つ | プラットフォームごとに 1 つ (ただしコンパイル済み) | 合計 1 つ | 1 つはアプリ用、もう 1 つはコンテナー用です |
言語とフレームワーク | ネイティブのみ | チームの選択 | Web のみ | Web とネイティブ |
SDK と API へのアクセス | はい | はい | いいえ | 制限あり |
パフォーマンス | 最高 | 高 | 最低 | 低 |
デバイス ハードウェアへのアクセス | 完了 | ほとんど | ほとんどなし | 一部 |
ユーザー入力に対する応答性 | 正常 | 正常 | 悪い | 良くない |
インタラクティビティ | 高 | 高 | 最低 | 低 |
デバイス リソースの使用 | 高 | 高 | 低い | 中 |
接続が必要 | いいえ | いいえ | はい | はい |
ビルドと保守のコスト | 最高 | 高 | 最低 | より低い |
アプリが格納されている場所 | デバイス | デバイス | サーバー | デバイスとサーバー |
展開方法 | Marketplace | Marketplace | ブラウザー | Marketplace |
外部の承認が必要 | はい | はい | いいえ | はい |
モバイル アプリケーション開発プラットフォームとソフトウェア
ビルドするモバイル アプリの種類を決定したら (または、どの種類を検討しているかなど)、モバイル アプリ開発プラットフォームを評価します。これらは、開発、ビルド、テスト、デバッグ、管理に使用するアプリ開発プラットフォームであり、場合によっては、ライフサイクル全体でモバイル アプリを展開する場合もあります。ほとんどのアプリ開発ソフトウェアには、インターフェイスを構築するためのフロントエンド ツール、データを処理するバックエンド ツール、API ツール、テスト ツール、コラボレーションとコード分析のためのツールが含まれています。
ほとんどのモバイル アプリケーション プラットフォームは、開発者がモバイル アプリケーションを構築するために必要なすべてのものを提供することを目的としています。これにより、開発者はさまざまなモバイル開発ソフトウェア間の移動や、コードの整合性、非互換性、データ損失などのそれらの間で発生する問題に対処する問題を回避できます。モバイル アプリ開発プラットフォームでは、組織がモバイル アプリを作成するために必要なコスト、時間、リソース、専門知識も削減されます。一部の組織では独自のプラットフォームを構築することを選択していますが、さらに多くの組織では、利用可能な多くのアプリ開発の代替手段の 1 つを選択します。
組織向けの最適なモバイル アプリ開発の代替手段は、作成するモバイル アプリの種類、コーディングできる言語、サービスを提供するデバイスによって異なります。モバイル アプリ開発の代替手段には、次のようなものがあります:
- 開発者が .NET と C# を使用して Android アプリと iOS アプリを構築できるようにする Xamarin などのクロスプラットフォーム ツール。
- Android、iOS、Windows モバイル アプリ用に 1 つの共有コードベースを使用する Visual Studio Tools for Xamarin。
- Power Apps などのローコードまたはコードなしのツール。ローコードは、技術的なトレーニングや専門知識がなくても、プロフェッショナル レベルのアプリを簡単に構築できる方法です。 詳細については、こちらをご覧ください。
モバイル アプリ開発リソース
モバイル開発者向け Azure のドキュメントを確認する
Azure 上でモバイル アプリを開発するために必要な情報を確認します。プッシュ通知、認証、分析、SDK について説明します。
今すぐモバイル アプリを作成してみてください
Android アプリの継続的インテグレーションと配信パイプラインを設定します。任意の Git リポジトリに接続し、チームを数分で稼働させることができます。
モバイル アプリ開発に関してよく寄せられる質問
-
モバイル アプリ開発の定義は、モバイル アプリの作成とリリースに関連するあらゆるプロセスや、アプリのコーディングや開発への特定の参照など広範な範囲にわたる可能性があります。
詳細情報 -
モバイル アプリ開発プロセスのフェーズは、戦略、計画、設計、開発、テスト、リリースです。
詳細情報 -
作成するモバイル アプリの種類を決定する際は、ユーザーが誰になり、アプリから何が必要かを検討すると便利です。
詳細情報 -
組織向けの最適なモバイル アプリ開発の代替手段は、作成するモバイル アプリの種類、コーディングできる言語、サービスを提供するデバイスによって異なります。
詳細情報 -
組織は、モバイル アプリケーションの開発が必要な—場合に、3 か月から 9 か月—以上の期間を費やします。
詳細情報 -
モバイル アプリの完全な開発には数か月かかる場合がありますが、モバイル アプリの開発を今すぐ開始するための Microsoft の 5 つのヒントを紹介します。
モバイル アプリを作成するための 5 つのヒントを学習する -
DevOps は、"開発"という言葉と"運用"という言葉を組み合わせ、人々、プロセス、テクノロジの和集合として定義され、顧客に継続的に価値を提供します。DevOps のカルチャ、ツール、プラクティスは、開発、IT 運用、品質エンジニアリング、セキュリティなどのサイロ化された役割を支援し、より信頼性の高い、より信頼性の高いモバイル アプリを作成するために調整および共同作業を行うのに役立ちます。DevOps は、開発チームが顧客のニーズに迅速に対応し、開発するアプリに対する信頼度を高め、チームのビジネス目標をより迅速に達成するのに役立ちます。
DevOps についての詳細情報 -
通常、開発者は、展開、管理、アップグレードの容易さ、標準インターフェイスと API を使用するかどうか、監視/管理システムと統合されたイベント管理用の正式なシステムがあるかどうか、十分に文書化された変更管理プロセスがあるかどうか、ハイブリッド機能がサポートされているかどうかなど、クラウド プロバイダーの技術的な機能とプロセスに重点を置きます。
クラウド プロバイダーの選択に関する詳細情報