Windows でネイティブ Android 開発を開始する

このガイドでは、Windows を使用してネイティブ Android アプリケーションを作成する方法について説明します。 クロスプラットフォーム ソリューションが必要な場合は、いくつかのオプションの簡単な概要について「Windows での Android 開発の概要」を参照してください。

ネイティブ Android アプリを作成するための最も簡単な方法は Java または Kotlin のどちらかで Android Studio を使用することですが、特定の目的がある場合は、Android 開発に C または C++ を使用することもできます。 Android Studio SDK ツールは、コード、データ、リソース ファイルをアーカイブ Android パッケージである .apk ファイルにコンパイルします。 1 つの APK ファイルに Android アプリのすべてのコンテンツが含まれており、これは Android 搭載デバイスがアプリをインストールするために使用するファイルです。

Android Studio のインストール

Android Studio は、Google の Android オペレーティング システムのための公式の統合開発環境です。 Windows 用の最新バージョンの Android Studio をダウンロードします

  • .exe ファイル (推奨) をダウンロードした場合は、それをダブルクリックして起動します。
  • .zip ファイルをダウンロードした場合は、ZIP をアンパックし、android-studio フォルダーを Program Files フォルダーにコピーしてから、android-studio > bin フォルダーを開き、studio64.exe (64 ビット マシンの場合) または studio.exe (32 ビット マシンの場合) を起動します。

Android Studio のセットアップ ウィザードに従い、そこで推奨されるすべての SDK パッケージをインストールします。 新しいツールやその他の API が使用可能になると、Android Studio からポップアップで通知されます。または、[ヘルプ]>[更新の確認] の順に選択して、更新プログラムがないかどうかを確認します。

新しいプロジェクトを作成する

[ファイル]>[新規]>[新しいプロジェクト] の順に選択します。

[プロジェクトの選択] ウィンドウで、次のテンプレートのいずれかを選択できます。

  • 基本的なアクティビティ: アプリ バー、フローティング アクション ボタン、2 つのレイアウト ファイル (アクティビティ用に 1 つと、テキスト コンテンツを分離するために 1 つ) を備えた単純なアプリを作成します。

  • 空のアクティビティ: 空のアクティビティと、サンプルのテキスト コンテンツを含む 1 つのレイアウト ファイルを作成します。

  • 下部ナビゲーション アクティビティ: アクティビティ用の標準の下部ナビゲーション バーを作成します。 これに関する詳細については、Google によるマテリアル デザイン ガイドラインの下部ナビゲーション コンポーネントのセクションを参照してください。

  • テンプレートは一般に、新しいアプリ モジュールや既存のアプリ モジュールにアクティビティを追加するために使用されます。 たとえば、アプリのユーザーのログイン画面を作成するには、ログイン アクティビティ テンプレートを使用してアクティビティを追加します。 アクティビティの選択や、テンプレートからコードを追加する方法の詳細については、Google による『Android 開発者ガイド』を参照してください。

注意

Android オペレーティング システムはコンポーネントの概念に基づいており、アクティビティインテントという用語を使用して操作を定義します。 アクティビティは、ユーザーが実行できる、焦点を絞った 1 つのタスクを表します。 アクティビティは、View クラスに基づいて、クラスを使用してユーザー インターフェイスを構築するためのウィンドウを提供します。 Android オペレーティング システムのアクティビティには、onCreate()onStart()onResume()onPause()onStop()onDestroy() の 6 つのコールバックによって定義されるライフサイクルがあります。 アクティビティ コンポーネントは、インテント オブジェクトを使用して互いに対話します。 インテントは、開始するアクティビティを定義するか、または実行するアクションの種類を記述します (そして、システムが適切なアクティビティを自動的に選択します。これは、別のアプリケーションのものである場合もあります)。 アクティビティ、アクティビティ ライフサイクル、インテントの詳細については、Google による『Android 開発者ガイド』を参照してください。

Java または Kotlin

Java は 1991 年に言語になりました。その当時の Sun Microsystems によって開発されましたが、現在は Oracle によって所有されています。 今や、世界で最大のサポート コミュニティの 1 つを持つ、最も普及している強力なプログラミング言語の 1 つになっています。 Java はクラス ベースで、かつオブジェクト指向であり、実装の依存関係ができるだけ少なくなるように設計されています。 構文は C や C++ に似ていますが、低レベルの機能はそのいずれよりも少なくなっています。

Kotlin は最初、2011 年に JetBrains によって新しいオープンソース言語として発表され、2017 年以降は Java の代わりに Android Studio に含まれています。 Google は 2019 年 5 月、Kotlin を Android アプリ開発者向けのその優先言語として発表したため、新しい言語であるにもかかわらず、同様に強力なサポート コミュニティを持ち、最も急速に成長するプログラミング言語の 1 つとして識別されています。 Kotlin はクロスプラットフォームであり、静的に型指定され、Java と完全に相互運用できるように設計されています。

Java は、より広範囲のアプリケーションのためにより広く使用され、チェックされた例外、クラスではないプリミティブ型、静的メンバー、非プライベート フィールド、ワイルドカード型、三項演算子などの、Kotlin では提供されないいくつかの機能を提供します。 Kotlin は、特に Android 用に設計され、Android によって推奨されています。 また、型システムによって制御される null 参照、raw 型はなし、不変の配列、適切な関数型 (Java の SAM 変換とは異なります)、ワイルドカードなしの使用サイトの差異、スマート キャストなどの、Java では提供されないいくつかの機能も提供します。 Java との比較の詳細については、Kotlin のドキュメントを参照してください。

最小 API レベル

アプリケーションの最小 API レベルを決定する必要があります。 これにより、アプリケーションでサポートされる Android のバージョンが決定されます。 低い API レベルは古いため、一般には、より多くのデバイスをサポートしますが、高い API レベルは新しいため、より多くの機能を提供します。

Android Studio Minimum API selection screen

[選択に関するヘルプ] リンクを選択すると、デバイス サポートの分布と、プラットフォーム バージョンのリリースに関連付けられた主な機能を示す比較グラフが開かれます。

Android Studio Minimum API comparison screen

Instant アプリのサポートと Androidx 成果物

プロジェクト作成オプションで、[Instant アプリをサポートする] というチェックボックスと、[Androidx 成果物を使用する] という別のチェックボックスに気付くかもしれません。 推奨される既定値として、"Instant アプリのサポート" はオフで、Androidx はオンになっています。

Google Play Instant アプリは、アプリまたはゲームを、最初にインストールすることなく試す方法を提供します。 これらの Instant アプリは、Play ストア、Google 検索、ソーシャル ネットワークのほか、リンクを共有するすべての場所にわたって表示できます。 [Instant アプリをサポートする] ボックスをオンにすると、Google Play Instant 開発 SDK をプロジェクトに含めるよう Android Studio に求めることになります。 Google Play Instant アプリの詳細については、『Android 開発者ガイド』を参照してください。

AndroidX 成果物は、Android サポート ライブラリの新しいバージョンを表し、Android の各リリースにわたる下位互換性を提供します。 AndroidX は、使用可能なすべてのパッケージに androidx の文字列で始まる一貫した名前空間を提供します。

注意

AndroidX は既定のライブラリになっています。 このボックスをオフにして、以前のサポート ライブラリを使用するには、最新の Android Q SDK を削除する必要があります。 手順については、StackOverflow の [Androidx 成果物を使用する] をオフにする方法に関するページを参照してください。ただし最初に、以前のサポート ライブラリ パッケージが対応する androidx.* パッケージにマップされていることに注意してください。 すべての古いクラスやビルド成果物の新しいものへの完全なマッピングについては、「AndroidX への移行」を参照してください。

プロジェクト ファイル

Android Studio の [プロジェクト] ウィンドウには次のファイルが含まれています (ドロップダウン メニューから Android ビューが選択されていることを確認してください)。

app > java > com.example.myfirstapp > MainActivity

アプリのメイン アクティビティとエントリ ポイント。 アプリをビルドして実行すると、システムはこのアクティビティのインスタンスを起動し、そのレイアウトを読み込みます。

app > res > layout > activity_main.xml

アクティビティのユーザー インターフェイス (UI) のレイアウトを定義する XML ファイル。 これには、"Hello World" というテキストを含む TextView 要素が含まれています。

app > manifests > AndroidManifest.xml

アプリとその各コンポーネントの基本的な特性を記述したマニフェスト ファイル。

Gradle Scripts > build.gradle

この名前を持つファイルには、プロジェクト全体の "Project: My First App" と、アプリ モジュールごとの "Module: app" の 2 つがあります。 新しいプロジェクトには、最初に 1 つのモジュールのみが含まれます。 Gradle プラグインによってアプリがビルドされる方法を制御するには、そのモジュールの build.file を使用します。 ビルドを構成する方法の詳細については、『Android 開発者ガイド』を参照してください。

Android ゲームの開発に C または C++ を使用する

Android オペレーティング システムは、Java または Kotlin で記述されたアプリケーションをサポートするように設計されているため、システムのアーキテクチャに組み込まれているツールを利用できます。 Android UI やインテント処理などの多くのシステム機能は、Java インターフェイスを通してのみ公開されます。 関連するいくつかの課題が存在するにもかかわらず、Android Native Development Kit (NDK) を通して C または C++ コードを使用したくなる例がいくつかあります。 ゲームでは通常、OpenGL または Vulkan で記述されたカスタム レンダリング ロジックを使用し、ゲーム開発に焦点を絞った大量の C ライブラリの利点が得られるため、ゲーム開発はその 1 つの例です。 また、C または C++ を使用すると、デバイスから追加のパフォーマンスを引き出して、待ち時間の短縮を実現したり、物理シミュレーションなどの計算負荷の高いアプリケーションを実行したりするために役立つ "可能性" もあります。 ただし、NDK は、ほとんどの初心者 Android プログラマには適していません。 NDK を使用する特定の目的がない限り、Java、Kotlin、またはいずれかのクロスプラットフォーム フレームワークを使用することをお勧めします。

C/C++ サポートを使用して新しいプロジェクトを作成するには:

  • Android Studio ウィザードの [プロジェクトの選択] セクションで、[ネイティブ C++]* のプロジェクトの種類を選択します。 [次へ] を選択し、残りのフィールドを完了してから、もう一度 [次へ] を選択します。

  • ウィザードの [C++ サポートのカスタマイズ] セクションで、[C++ 標準] フィールドを使用してプロジェクトをカスタマイズできます。 ドロップダウン リストを使用して、使用する C++ の標準化を選択します。 [ツールチェーンの既定値] の選択では、既定の CMake 設定が使用されます。 [完了] を選択します。

  • Android Studio によって新しいプロジェクトが作成されると、[プロジェクト] ウィンドウに cpp フォルダーが表示されます。ここには、ネイティブ ソース ファイル、ヘッダー、CMake または ndk-build 用のビルド スクリプト、プロジェクトの一部である事前ビルド済みライブラリが含まれています。 また、src/main/cpp/ フォルダーには、文字列 "Hello from C++" を返す単純な stringFromJNI() 関数を提供するサンプルの C++ ソース ファイル native-lib.cpp もあります。 さらに、モジュールのルート ディレクトリには、ネイティブ ライブラリをビルドするために必要な CMake ビルド スクリプト CMakeLists.txt が表示されます。

C および C++ コードをプロジェクトに追加する方法の詳細については、『Android 開発者ガイド』を参照してください。 C++ 統合を使用した Android NDK サンプルを見つけるには、GitHub 上の Android NDK サンプル リポジトリを参照してください。 Android で C++ ゲームをコンパイルして実行するには、Google Play ゲーム サービス API を使用します。

設計ガイドライン

デバイス ユーザーは、アプリケーションが特定の方法で表示されたり、動作したりすることを期待しています。スワイプするか、タップするか、または音声コントロールを使用するかどうかにかかわらず、ユーザーは、アプリケーションの外観や使用方法に対して特定の期待を持ちます。 混乱やフラストレーションを軽減するには、これらの期待が一貫して存在していくようにする必要があります。 Android は、これらのプラットフォームやデバイスの期待に関するガイドを提供します。これにより、視覚およびナビゲーション パターンのための Google Material Design の基盤が、互換性、パフォーマンス、セキュリティのための品質ガイドラインと結合されます。

詳細については、Android 設計のドキュメントを参照してください。

Android 用の Fluent Design System

Microsoft では、Microsoft のモバイル アプリのポートフォリオ全体にわたってシームレスなエクスペリエンスを提供するという目標を持った設計ガイダンスも提供しています。

Android 用の Fluent Design System では、ネイティブに Android でありながら、引き続き一意に Fluent であるカスタム アプリを設計して構築します。

その他のリソース