「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
私はソフテックに入社してから3年間Windowsアプリケーションとマイコンアプリケーションの開発に携わっていますが、Androidについては未経験でした。最近Androidアプリケーションの開発を担当させていただいたので、今回はAndroidアプリケーション開発についてご紹介させていただきます。
本章では、Android画面に「Hello world!」と表示するシンプルなアプリ開発手順を事例として、Android開発の概要を説明いたします。
今回はWindows環境にAndroid開発環境を構築する手順を紹介いたします。AndroidアプリケーションをJavaで開発することになるので、下記(1)〜(3)の開発環境を利用しました。全てインターネットにおいて無償で提供されているので、簡単に構築できると思います。
次に、プロジェクトの新規作成の手順を説明いたします。
Eclipseにおいて、メニュー「ファイル」→「新規」→「プロジェクト」をクリックし、新規プロジェクト画面を開きます。図1のように「Android Application Project」を選択し、「次へ」ボタンし、Androidのプロジェクトを新規に作成します。主な設定は以下の通りです。
ここのアクティビティーとは、アプリケーションの画面に相当します。
図1. 新規プロジェクト作成画面
引き続き、「Hello world!」と表示する画面を作成する手順になりますが、画面はプロジェクトの新規作成時に自動的に作られます。特に自分でプログラミングする必要はないのですが、この部分の設定を簡単に説明いたします。
図2. アプリケーションの設定画面
図2のように、新規プロジェクトを作成すると、必要最低限のファイルが多く生成されています。その中の「AndroidManifest.xml」をクリックし、開いた画面でアプリケーションタブを選びます。赤い枠で示したのはアプリ起動時最初の表示画面を設定する場所です。今回は2−2で設定したアクティビティー(画面)「MainActivity」が自動的に登録されています。
図3. MainActivity画面のXMLファイル内容
また、画面の内容は「プロジェクト名\res\layout\activity_main.xml」ファイルを編集します。AndroidアプリのUser Interface(UI)はレイアウトXMLに記述します。XMLに関連するJava APIの大部分はAndroidでもサポートされています。図3において、赤い枠で示したのは「Hello world!」と表示するテキストボックスを記述したコードです。
図4. Androidデバイス選択画面
図5. Android仮想デバイスの編集画面
実端末と仮想端末の設定方法をそれぞれ説明いたします。
Android SDKには、PCで実行可能なエミュレータが含まれています。Bluetooth、電話などの一部機能を除き、ほぼ全ての機能が実端末を使用しなくても開発やテストを進めることが可能です。使い方として、Android仮想デバイス(AVD, Android Virtual Device)と呼ばれる仮想の端末環境を作成し、その仮想端末を使ってエミュレータを起動してアプリを動かすことができます。図5のように、AVDマネジャーで仮想端末の画面サイズやメモリなどいろいろ設定できます。
一方、PCと実端末を接続して実行する場合、端末で下記の設定が必要です。
改めて、図4の画面にて仮想デバイスを選び、プログラムを実行します。
図6. エミュレータとアプリケーションの画面
しばらく待つと、仮想デバイスが起動します。図6で示したように、Android起動画面が表示されてから、アプリケーションが起動し、「Hello world!」と表示されます。
もっともシンプルな例ですが、以上で開発が一通り完了しました。
PCと端末を接続し、Android SDK経由でapkファイル(開発環境でビルドされたアプリパッケージ)を端末にインストールする方法を以下に説明いたします。
そのほか、Android Marketでアプリを公開してダウンロードする方法があります。
この場合、アプリに対してデジタル署名が必要です。具体的に、apkファイルを生成するとき、Eclipseで「Androidツール」→「Export Signed Application Package」を選択し、keystoreを新規に作成してからアプリパッケージをエクスポートすることで署名できます。
この度、BluetoothやUDPの通信機能を用いてあるAndroidアプリケーションの開発を担当させていただきました。そのとき、苦労したことを以下に紹介いたします。
2−2でも説明しましたように、AndroidでActivityとはアプリケーションの画面に相当します。この画面を表すActivityにViewと呼ばれるコンポーネントを配置していく構造になっています。Viewの属性をXMLファイルで定義します。アプリのコードが別管理になるので、修正時にわかりやすいというメリットがあります。
難点としてActivityは3つの状態(開始・実行・終了)に対して、7つのコールバックメソッド(Create・Restart・Start・Resume・Pause・Stop・Destroy)も持っています。図7で示したように、画面開発の基礎となるこのライフサイクルを理解することに苦労しました。
図7. Activityのライフサイクル
パーミッションとは、Androidアプリがどのような機能を使用するのかを定義するもので、ユーザの許可のもとに通信やGPSの利用、ストレージへのアクセスなどの権限が与えられます。しかし、開発環境においては、パーミッションを要求せずにアプリを実行しても警告などエラーが何も表示されないので、ただアプリが動作しないように見えます。意外にもOS時刻の取得など許可不要と思われる機能でもパーミッションが必要なので、常に意識したほうがよいと思います。
エミュレータが正常に起動せず、「Failed to allocate memory:8」と表示される問題がありました。ネット上で調査した結果を参考に、AVDのメモリサイズを512Mに設定することで解決しました。
また、エミュレータが非常に遅かったのですが、AVDの設定でGPUの使用をチェックすることによって大幅に改善されました。ただ、それでも高速な処理に間に合わないことがあるので、その場合は実端末を利用すれば良いと思います。
今回は、Androidアプリケーションの開発を簡単にご紹介させていただきました。
これからAndroid開発を始める方々にご参考になれば幸いと思います。
(M.S.)
関連ページへのリンク
関連するソフテックだより