「オープンソース」を使ってみよう (第14回 Android開発 入門編)

No Comments
このエントリーをはてなブックマークに追加

——————————-
九州GTUG 松岡 謙治
——————————-

アプリ開発というと高価な開発環境が必要なイメージがありますが、Androidの
場合はオープンソースの開発環境であるEclipseを用意することで開発ができま
す。

今回はWindows環境にAndroid開発環境を構築し、簡単なプログラムを作った後、
そのプログラムがどのように動くかについて簡単に説明します。なお、Android
の開発環境については、WindowsだけでなくMacやLinuxでも一部のパスが異なる
程度で殆ど変わらない手法で構築可能ですので、是非チャレンジしてみてくださ
い。

■JDKのインストール
AndroidアプリはJava言語を使用して開発を行う。そのためJavaのコンパイ
ラなどを含むJDKを使用する。

※編集部注:
Mac OS Xの場合、JDKおよびJava(JRE)は標準でインストールされている。
Mac OS X Lionの場合は、ターミナルでjava-versionと打つと、Javaパッケージ
がダウンロードされるのでこれを使う。

プラットフォームにあったJDKをダウンロードしてインストールする。
http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html




■Eclipseのインストール
Eclipseを使用することでJava言語による開発を簡単に行うことが出来るように
なる。

利用環境にあったEclipse Classicをダウンロードする。
http://www.eclipse.org/downloads/

ダウンロードしたファイルを任意の場所に展開する。
WindowsVista以降でProgram Filesに解凍する場合は解凍したフォルダに対して
ユーザーに更新権限を与える必要がある。

今回はc:\eclipseに展開するものとする。
c:\eclipse\eclipse.exeを実行する。

初回起動時に「発行元を確認できませんでした。このソフトウェアを実行しますか?」
と表示される場合は「このファイルを開く前に常に警告する」のチェックをはずし、
実行を押す。

eclipse.exeはショートカットを作っておくと便利。

補足:Eclipseなどを日本語化するべきか
Eclipseはそのままでは日本語に対応しておらず英語で表示されてしまう。
Pleiadesを使うことで日本語化することもできるので英語が苦手な人にとっては
ありがたい。しかし、Androidの場合進化が早く最近はドキュメントの翻訳が追
いついていないという問題がある。そのような場合、日本語環境では情報が見つ
けづらいことがある。今回は日本語化は行わず、英語のままインストールを進める。



■Android SDKのダウンロード
AndroidのエミュレータやEclipseにAndroid開発の機能を追加するため
AndroidSDKをインストールする。

Helpの「Install New Software」を選び
Addボタンを押してNameに「Android」
Locationに「https://dl-ssl.google.com/android/eclipse/」と入れてOKボタンを押す。
Pending… となっている部分がDeveloper ToolsとなったらDeveloper Toolsにチェック
を入れてNextを押す。

Install Detailsが出てきたらNextを押す。

Review Licensesが出てきたらライセンスを確認し
I accept the terms of the license agreementsにチェックを入れてFinishボタンを押す。
途中確認画面が出てきたらOKをクリックしてRestart Nowボタンを押すとEclipseが
再起動する。

Welcome to Android Developmentが表示されたら
チェックを2つとも入れてNextボタンを押す。

Contribute Usage Statistics?が表示されたら
Googleに使用状況を報告する場合はYes、報告しない場合はNoを選択して
Finishボタンを押す。Choose Packages to Installが出てきたらライセンスを
確認しAccept Allにチェックを入れてInstallボタンを押すADB Restartが表示
されたらYesをクリック

これでAndroid2.1と最新のプラットフォームがダウンロードされる。
それ以外のバージョンをダウンロードする場合はEclipseのOpen the SDK Managerを
選ぶ。

インストール可能なバージョンの一覧が表示されるので、インストールしたい
バージョンにチェックを入れInstall packagesを選ぶ。すべてのバージョンに
チェックを入れるとかなりの時間が必要になるので注意しよう。



■仮想端末の作成
仮想端末を作ることでPC上でAndroidアプリがどのように動くかをテストすること
が出来る。AndroidSDKによってインストールされたプラットフォームの仮想端末
をPC上に作ることができる。

Android Marketなどに公開する場合は複数の環境の端末を作ってテストを行うと
問題を未然に発見することができる。仮想端末を作るにはEclipseよりOpen the
Android Virtual Device Managerを選ぶ

Android Virtual Device Managerが起動したらNewを選ぶ

Nameには「任意の名前」を
Targetには「実行したいプラットフォーム」を
SD Cardは「SDカードを使うアプリを作る場合」に使う。
指定したファイルがSDカード内に入っているかのように動作する。
SnapshotをEnabledにすることで次回以降の起動を高速化できる。
Skinでは解像度を指定する。あらかじめセットされたものから選ぶか値を指定する。

この際、あまり解像度の大きなものを選ぶとパフォーマンスが悪化したり画面に入らなくなるので注意したい。
Create AVDを選択すると仮想環境が完成する。

補足
Android4.0以降の仮想端末を作る場合はHardwareの
GPU emulationをnoと選択することでパフォーマンスを
大幅に改善できる。

















Android Virtual Device Managerで仮想端末を選び、Startを選択し、Launch Optionsで
Launchを選択すると仮想端末が起動する。Snapshotが取られていない初回は起動に数分
かかるので起動までしばらく待つ必要がある。

これで開発環境の作成は完成。



■HelloWorld(アプリ)の作成
早速作ったばかりの開発環境でアプリを作り開発の流れを体験してみよう。

EclipseのFile-New-Projectを選ぶ
Android-Android Projectを選ぶ

Project NameにHello Worldと入力しNextをクリックする。
Select Build Targetが表示されるのでAndroid 2.1にチェックを入れNextをクリックする。

Package Nameにjp.demo.helloworldと入力しFinishこれでHelloWorldが作成される。
HelloWorldを実行するにはRun Asをクリック

Android Applicationを選びOKをクリック。
自動的にエミュレータが起動しHelloWorldが実行される。
自動生成されたソースコードにより画面にHello World,HelloWorldActivity!と
表示される。



■ファイルの説明
プロジェクトを作成しただけで勝手にHello Worldが表示されてしまったため、
これではどのように処理が動いているのか分からない。
自動生成されたソースコードがどのようにHello World,HelloWorldActivity!を
表示しているのかを調べてAndroidプログラムの全体像を掴む。

プロジェクトを作成すると自動的に6つのフォルダといくつかのファイルが生成
される。その中でも開発時に重要になるのがsrcフォルダとresフォルダ、そして
AndroidManifest.xmlの3つ

AndroidManifest.xmlにはどのようなリソースにアクセスするか、どのように
して起動するか、どのような画面があるかなど作成するアプリにおける外部
に公開する情報が記載され、アプリケーションの玄関口となる。

<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”jp.demo.helloworld”
android:versionCode=”1″
android:versionName=”1.0″ >
<uses-sdk android:minSdkVersion=”7″ />
<application
android:icon=”@drawable/ic_launcher”
android:label=”@string/app_name” >
<activity
android:name=”.HelloWorldActivity”
android:label=”@string/app_name” >
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
</application>
</manifest>



Androidにおいては画面はActivityという単位で管理され、intentにより情報が
やりとりされる。Application要素の中にActivity要素がありその中にintent-
filterが記載されている。

<activity
android:name=”.HelloWorldActivity”
android:label=”@string/app_name” >
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>

これにより、プログラム一覧からアプリが呼ばれた場合、.HelloWorldActivity
が実行される。
HelloWorldActivityの処理実体はsrcフォルダ内のHelloWorldActivity.javaに記
載されている。

package jp.demo.helloworld;
import android.app.Activity;
import android.os.Bundle;
public class HelloWorldActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}

Activityが呼び出されるタイミングでonCreateが実行され、R.layout.mainの
ビューをセットしている。RはAndroidにより自動生成されるクラスでgen
フォルダ内に作られるが、中身は静的なint定数でリソースを管理している。

この内容はAndroidSDKにより自動で作成される部分のため変更しないこと。
リソースはresフォルダに格納される。
R.layout.mainのリソースはres\layout\main.xmlとなる。

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:orientation=”vertical” >
<TextView
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”@string/hello” />
</LinearLayout>

一つのLinearLayoutの中にTextViewが1つ置かれ、そのテキストは
@string/helloとなっている。
@string/helloの内容はres\values\strings.xmlの中に記載されている。。

<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<string name=”hello”>Hello World, HelloWorldActivity!</string>
<string name=”app_name”>HelloWorld</string>
</resources>

これにより@string/helloはHello World, HelloWorldActivity!であることが分
かる。この文字を変えるとプログラムに表示される文字も変わる。



■まとめ
● AndroidManifest.xmlに記載されたintent-filterによりHelloWorldActivityが起動される。
● HelloWorldActivityはmain.xmlの内容を画面に表示する。
● main.xmlにはTextViewフィールドがありstrings.xml内にあるhelloの内容を表示する。
● strings.xmlのhelloの内容はHello World, HelloWorldActivity!となっており、
 これによりランチャーでアプリを選択すると画面にHello World, HelloWorldActivity!と 表示される。

このようにAndroidにおいてはAndroidManifest.xmlによりActivityが呼び出され、
内部のファイルが連携して動くという特徴がある。これらをうまく使い分けること
によりレイアウトと実体を切り分け多種多様な環境でそれぞれに応じた形でアプリ
を動かすことが出来る。

Comments are closed.