Androidアプリの開発環境は?開発言語は?必要なスキルは何?プログラミングする前に取り敢えず知っておく事

2023-07-29Androidアプリ開発入門

開発するにあたって用意する物

Androidアプリを開発するにあたってどんなものなの?って人向けに知っておいた方が良い情報をまとめておきます。

プログラミングするのに用意するものは3つです。最低PCがあれば開発できます。

  1. PC(必須)
  2. Androidスマホ(あると良い)
  3. USBケーブル(あると良い)
  4. ドメイン(あると良い)

PCはWindows、Mac、Linux、Chrome OSどれでも大丈夫です。プログラミングするのに使う統合開発ソフトやらなんやらインストールするのに何GBか容量使うのである程度は空き容量確保しましょう。こちらの推奨環境は後の章で書いてます。これからPCを買う人で将来はiphoneアプリも開発したいと言う人はMacが良いかもしれません。iphone開発はMacでないと出来ないです。

スマホはもし公開する予定があるなら実機テストするのに最低1台はあった方が良いかもしれません。もしAndroidスマホを使ってるなら新たに買う必要はありません。途中で挫折しない覚悟が出来た後で、必要だと思ったら買えば良いのです。因みにテスト用の実機は携帯回線は必要無いんで中古とかでOKです。取り敢えずなくてもエミュレーター(PC上で擬似的にスマホと同じ動作をさせるアプリケーション)を使えばテスト出来るので当分はエミュレーターを使うと良いと思います。

PCとスマホを接続するにはUSBケーブルが必要です。タイプCのUSBが多いと思います。凄い短いやつなら100均でも売ってますよ。

アプリを公開する予定がある人はドメインが必要です、アプリのパッケージ名にドメインを記入する所があります。こちらはブログなどの無料で取得出来るサービスなどで作ると良いと思います。パッケージ名は命名規則が有り、ハイフンは使用出来ません。また単語の最初に数字は使用できないなどの規則があるので注意してください。公開しないのであれば必要ないので後から入手すれば良いです。

Androidアプリ開発言語の選択が超悩ましい

アプリを開発するための言語が複数あって初めて言語を習得する場合はかなり悩ましいんですよね。現在(2020年で)公式で推奨している言語はKotlin(コトリン)とJava(ジャヴァ)になっていてKotlinの方を1番に推してる状況です。因みにiphoneは全く違う言語なのでAndroidで開発したアプリをそのままiphoneアプリ開発に流用は出来ません。

AndroidJava、kotlin
iphoneSwift、Objective-C

プログラミング難易度比較

色々あるプログラミング言語の中でJavaとkotlinの習得レベルは高い方です。その中でもKotlinはJavaよりも簡潔にコードを書くことができます。他言語と難易度を比較してみました。難易度は私の偏見によるものですので参考までに。

言語難易度言語タイプ汎用性
C、C++5 高【コンパイラ言語】手続き型
C++はオブジェクト指向
高(PC系、自動車、ロボット、家電など)
Java5 高【コンパイラ言語】手続き型
オブジェクト指向
高(Webアプリ、PCアプリ、家電など)
Kotlin4.9 高【コンパイラ言語】
オブジェクト指向
中(Webアプリ、Androidアプリ)
php3 中【スクリプト言語】
手続き型
オブジェクト指向
低(Webページ)
JavaScript3 中【スクリプト言語】
オブジェクト指向
中(Webページ、Webアプリ、スマホアプリなど)
HTML1 低【マークアップ言語】低(Webページ)

kotlinの特徴

Kotlinは2011年に誕生し、2017年にAndroidアプリの標準言語として採用されました。Javaよりも簡潔にコードを書くことが出来て安全に構築できる言語です。主な特徴は下記になります。

  • Javaよりもコードを簡潔に書けるので作業工数が減らせる。
  • コードが簡潔に書けるようになってるのでエラーが少なく安全に構築できる。
  • Android studioではJavaで書いたコードをkotlinに変換する機能がある。
  • Androidアプリ、Webアプリを作成出来る。
  • 習得難易度は高い
  • 比較的新しい言語なのでJavaと比べると情報が少ないかもしれない。

Javaの特徴

プログラミングを知らない人でも名前位は聞いたことがあるんではないでしょうか。1995年に誕生し、今なお根強い人気のプログラミング言語です。Androidアプリが誕生した頃から標準言語として採用されています。主な特徴は下記になります。

  • WebアプリやAndroidアプリ、家電などにも組み込まれていて汎用性が高い。
  • Javaを習得すると他の言語を勉強する時に比較的楽になる。
  • 習得難易度は高い
  • 昔からある人気の言語なので情報が多い。

結局どっち?

私個人の考えになりますが、これから始める、Androidでしか開発しないと言うならKotlinです。プログラミングの基本的な部分をJavaから勉強してその後アプリ開発はKotlinを勉強していくというのも有りだと思います。もし将来的に他の言語もやりたいと考えてるならJavaから始めると良いです。例えばKotlinを勉強してからJavaを勉強するとちょっと苦労するかもしれません。逆にJavaからKotlinは比較的楽?に習得できます。これはKotlinが簡素化されてる部分があり、構文もちょっと変わってるという理由です。まぁどちらから始めても互換性があるので途中からやっぱりこっちっていうのも大丈夫なので好きな方から始めたら良いと思います。

Androidアプリの開発をする上で必要なスキル

将来的な意味も含めて開発するにあたって必要なスキルを書いておきます。

  • Androidの仕様的な考え方
  • Android APIと呼ばれる機能や動作をまとめたプログラムの知識
  • KotlinやJavaのプログラミング言語
  • XML言語(XMLとは何ぞや的な事位知っておけばOK)
  • Android Studio(Androidアプリ統合開発環境)の使い方

まずAndroidを動かす為の考え方を知らなくては行けません。その考え方に基づいてAndroid APIと呼ばれる機能や動作をまとめた処理が提供されています。

その処理をKotlinやJavaの言語を使って記述していきます。記述するにはAndroid studioというソフトを使います。これは無料で提供されていて、エディタ機能・エラーがないかチェックするデバッグ機能・PC上でスマホと同じ働きをするエミュレーター機能・プログラムファイルをアプリファイルに変換するビルド機能などなどアプリ開発をするのに必要ツールが詰まっています。

そして、記述されたファイルが集まってアプリのファイル(apk))が出来ます。その中にXMLファイルが含まれる為XML言語の知識がざっくり必要です。どんなアプリを作るかによりますが、他にも情報などを保管しておくデータベースの知識、Webの知識なども必要になるかも知れません。

Androidアプリ開発とAndroid studio概念図

Android studioは視覚的に出来る部分もあるのでとにかくいじってたまに書く、分からなくなったらドキュメント漁る。これで何とかなります。多分・・・

Androidアプリの統合開発環境・推奨スペック

前章でも少し触れた様に開発するためのツールが備わってるアプリケーションを統合開発環境もしくはIDE(Integrated Development Environment)といいます。開発環境はAndroid studioを使います。2015年まではEclipseというJavaの開発環境が主流でした。こちらは既にAndroidプラグインのサポートが終了してるので使えません。Android studioはインストールすると必要なものが全て揃ってるのでこれだけでアプリが作れてしまいます。

Android studioの主な機能

バージョン4.0時点で記載しています。Android studioの主な機能です。

  • 視覚的に作れるレイアウトエディタとコードエディタ
  • APKアナライザー(2つの異なるバージョンのアプリケーションファイルを比較して、サイズがどのように変化したかを確認出来る)
  • 高速エミュレータ(PC上で擬似的にスマホと同じ動作をさせるアプリケーション)
  • ビルドシステム(プログラムファイルをアプリケーションファイルに変換する)
  • リアルタイムプロファイラー(アプリのCPU、メモリ、ネットワークアクティビティに関するリアルタイムの統計)

Android studioの推奨スペック

2023年7月時点で記載しています。Chrome OSは省略します。

WindowsMacLinux
OSMicrosoft® Windows® 8/10/11 (64-bit)MacOS® 10.14(Mojave)以降Gnome、KDE、またはUnity DEをサポートする64ビットLinuxディストリビューション、GNU Cライブラリ(glibc)2.31 以降
CPUx86_64 CPUアーキテクチャ、第2世代のIntel Core以降、または Windows Hypervisor をサポートするAMD CPUARMベースのチップ、またはHypervisor.Frameworkをサポートする第2世代のIntel Core以降86_64 CPU アーキテクチャ、第2世代の Intel Core 以降、または AMD Virtualization(AMD-V)とSSSE3をサポートするAMDプロセッサ
メモリ(RAM)8GB以上のRAM
ハードディスク8GB以上の空きディスク容量
(IDE + Android SDK + Android Emulator)
画面解像度1280×800以上の画面解像度

特に注意する所がディスク容量です。推奨空き容量8GBとなってますが、OSやその他アプリの推奨空き容量を抜かしてこれ位って事です。空き容量これしか無かったらまずOSが動きません。IDEで500MB + Android SDKおよびエミュレーターのシステムイメージ1つで1.5GB~の容量を必要とします。エミュレーターのシステムイメージというのはスマホの端末1台分をエミュレートする設定をした時にイメージファイル(画像ではない)を作ります。エミュレーターはそのシステムイメージを読み込んで起動する訳です。

Android studioエミュレーターとシステムイメージの相関図

端末のシステムイメージ1台につき1.5GB以上使います。多いときは1つで8GBとかになってました。スマホって画面サイズやOSが違うので複数個のシステムイメージを作ると思うのでその分空き容量を考慮する必要があります。1つならWindows10で最低でも30~40GB位の空き容量は確保しておきたい所です。(適当です)これからPCを購入する人はディスク容量は多めにした方が良いです。

実は他にもアプリを作る手段がある

Facebookが開発しているReact Nativeという技術があってJavaScript言語で作成できるAndroidとiphone両方で動作するアプリが作れます。FacebookはもちろんInstagramもこちらの技術を使ってアプリが作成されています。JavaScriptは比較的習得しやすく両方のアプリに対応出来るので本当に素晴らしいですね。しかし、Androidが提供するAPI(機能や動作の処理を集めたもの)全てがサポートされるわけではないです。例えばAPIに新しい機能が追加された時、React Nativeでのリリースは遅れるかもしれません。また将来ずっと提供される保証はありません。勉強してる途中でReact Native開発は終了しました何て事もあり得るのです。それから、本やWebの情報が少ないです。他にも似たようなものでXamarinという技術があります。こちらは.NETという技術を使ってC#やJavaなどの言語を使用します。複数のOSで使うことが出来るアプリを開発する技術をクロスプラットフォームといいます。他にもあるので気になる人は調べてみてはどうでしょうか。