logo header
logo header
logo header
logo header
  • 2017.03.24
  • 開発

Androidアプリ開発奮闘記1 - アクティビティとstrings.xml

Android word cloud

はじめに

弊社には、社内教育の一環としてエンジニアのスキル向上を目的とした研修制度があり、「インフラ」「フロントエンド」「バックエンド」「アプリ」の4つのグループに分かれて少人数制の勉強会が行われています。私は今回、スキルの幅を広げるためにスマートフォンアプリの開発グループに参加することにしました。

そこでせっかくの学習内容を記録として残したいと思い、この記事を書くことしましたが、「アプリ開発奮闘記」として10回前後の連載記事になる予定です。また、開発するアプリは、北海道をテーマにした小説アプリのようなものを目指していますが、実はまだ漠然としたイメージしか描いておりません。そのため、どのようなものが完成するのか、または中途半端なものになってしまったり、あるいは挫折して中断することも考えられます...。

実際の開発プロジェクトでは「挫折して中断」などというケースはまずありえないかと思いますが、今回は自習ベースでスキル取得を目的としているため、楽しみながらアプリ開発に挑戦したいと思います。

以上、前置きが長くなってしまいましたが、開発環境については先日リリースされたAndroid Studio 2.3を使用します。

Android Studio

Andorid Studioは次の公式からダウンロードできます。

Android Studio

https://developer.android.com/studio/index.html

 

インストール手順については割愛させていただきますが、途中、JDKに関するエラーが発生した場合は、下記のサイトが参考になるかと思います。

Android Studio のインストール

https://developer.android.com/studio/install.html?hl=ja

 

インストールが完了し、Android Stusioを起動後、アプリ名などを入力して先に進めていくと、Add an Activity to Mobile という画面になり、テンプレートが選択できます。

Google maps Activityなど興味深いものがいくつかありますが、今回はEmpty Activityを選択します。

プロジェクトの新規作成が完了すると、メニューバーやツールバー、エディタが表示された画面が起動してきますが、まず左側のファイル構成部分に注目します。

 

ここではまずアプリの中核となる4つのファイルを取り上げ、上図のように赤枠で囲み、注釈を付けてみました。この4ファイルのうち3ファイルはXMLファイルですが、まず唯一のJavaファイルであるMainActivity.javaの中を確認してみます。

MainActivity.java

6行目では、初期化や終了など画面制御に関する基本的な処理を行うActivityクラスを継承しています。

8行目の@Overrideアノテーションは、このメソッド内でスーパークラスの同名メソッドを上書きすることを明示する宣言です。こうすることにより、メソッド名、引数にミスがあった場合にはコンパイラーが通知してくれるようになります。

9行目のonCreateメソッドは、アプリ起動時に自動で呼び出されるメソッドで、C言語やJavaにおけるmainメソッドに該当します。

10行目では、onCreateメソッドに対してオーバーライドが行われています。

11行目では、setContentViewメソッドにより、画面に表示するビューを設定しています。

アクティビティ  ライフサイクル

先ほどonCreateメソッドについて「アプリ起動時に自動で呼び出される」と解説しましたが、わかりやすく言えば「画面の初期化」のことを指します。この初期化処理と、そのあとに続く処理をAndroidアプリでは「アクティビティ」と呼び、次のようなライフサイクルになります。

 

この図に出てくる各メソッドは「ライフサイクルメソッド」と呼ばれますが、次の表にまとめてみました。

 

メソッド名 解説
onCreate このメソッドにより生成処理が起動し、アプリケーションで必要となるユーザーインタフェースの読込み、システムリソースの割当てが実行されます。
onStart アプリケーションが起動し、画面に表示され、開始状態となります。
onResume アプリケーションをフォアグランドに遷移させ、ユーザーからの操作を待つ状態になります。
onPause アプリケーションをバックグラウンドへと遷移させ、他のアプリケーションがフォアグランドに遷移します。
onStop アプリケーションの画面が非表示となり、スリープモードへ遷移します。
onDestroy アプリケーションのプロセスが停止し、リソースが解放されます。

このように、アクティビティはスタック方式の管理により「フォアグランド ⇄ バックグラウンド」と状態変化させ、最後は onDestroyメッソドによって破棄されます。この一連の流れを「アクティビティ ライフサイクル」と呼びます。

Hello World!を変更する

ここまでは特にソースコードを追記または変更したりなどしておりませんが、実はこの時点でプロジェクトを実行すると、Android仮想デバイス(AVD)が起動し、アプリを実行すれば画面に「Hello World!」と表示されます。

これについては、下記のactivity_main.xml内の12行目にandroid:text="Hello World!"の記述がすでに存在するため、アプリを起動すると最初から表示される仕組みとなっています。

それではせっかくなのでこの「Hello World!」を別の文字列に変更して表示させてみたいと思います。

 

activity_main.xml

変更方法としては、12行目を直接android:text="ようこそ北海道へ!"と変更してもよいのですが、このような方法は「ハードコーディング」と呼ばれており、複数個所にこの文字列を使用した場合、あとから変更の必要が生じた時に大変手間がかかります。

そのため、strings.xmlを編集する方法で試してみます。

 

strings.xml

3行目、resource要素内にstring要素を新規で追加し、属性をwelcomeとして、表示させたい文字列を追加してみました。

そして先ほど確認したactive_main.xmlを変更します。

 

activity_main.xml 変更後

12行目、「Hello World!」と指定していた部分を@string/welcomeと変更しました。

それではアプリケーションを実行してみます。Runボタンをクリックすると、実行対象のデバイスを選択するダイアログが表示され、数10秒後にAndroid仮想デバイス(AVD、Android Virtual Device)が起動します。

 

無事、表示させたい文字列に置き換わったことが確認できました。

シンプル過ぎる画面ですが、一応成功です。

まとめ

今回初めてAndroid Studioを触ってみましたが、開発環境の設定が簡単で、AVDの起動も速い印象を受けました。 数々の機能を使いこなすにはそれなりに努力が必要ですが、趣味等で作成したいアプリが明確な場合、楽しんで勉強しながら開発できるかと思います。 「アプリ開発に興味があるけど、なんだか難しそうで無理...」と感じている方々にとって、開発に挑戦する後押しになることができるよう願いながら、本連載を書いていく予定です。

ともに世界をアップグレードできる、そんな日を夢見て。
Upgrade the World!