思うところがあって Android アプリ開発を始めてみました。先ずはお約束の Hello, world です。
Apple の iPhone や iPad が、中古でもそこそこ値段がするのに対して、Android 端末は比較的安くで入手できます*1。また、機種変更などで Android 端末が手元に余ったりします。とりあえず Android 端末で動かしてみて、面白そうだと判ってから iOS のデベロッパ登録しても遅くないと思いますし。
開発環境の準備
インストール手順や設定方法は、ウェブ検索で画像付きの詳しい解説が多く見つかるので、ここでは覚書き程度で。
- Android SDK
-
必須。Android アプリ開発に必要な Toolkit 群。最近は、Android Studio なる開発用統合環境と一緒になったモノがある様子。ウェブ上の入門情報だと、Android SDK を単品インストールする前提で説明しているものが多いので、それに合わせた方が判りやすいかもしれない。
インストーラ形式と ZIP アーカイブ形式の両方があるけれど、インストールした実行ファイルに Path 環境変数を通してくれるか否かくらいの違いしかない様子。自分は ZIP アーカイブ形式を自前で配置した派。
- JDK; Java SE Development Kit
-
必須。開発言語は Java なんですな! なので、Java の Development Kit が必要です。Runtime Environment ではないので注意。
- eclipse
-
必須。統合開発環境(IDE)として eclipse が必要です。もしかしたら、お好みのテキスト エディタで全部のソースコードを書いて、コマンド ラインからツールを起動して賄えるかもしれませんが。eclipse 日本語化プラグインも忘れず導入しておきます。
- デバッグ用 Android 端末
-
あれば嬉しい。ソフトウェア エミュレータでデバッグできますが、やっぱり実機で動かしてみたいですやん。Android OS のバージョンの違いで、利用できるライブラリ(?)が異なるので注意。手元の開発用実機は、Android 2.3.3 というかなり古い機種。
- Android 開発の入門書
-
あれば嬉しいかも。基本的に、調べものはオンライン マニュアルで事足りますが、リファレンスが全部英語だったり、とっかかりとして手元に日本語の情報があると精神的にずいぶんと楽なので、何冊かあっても良いかもしれません。
- Java 入門書
-
無くてもよい。Java の文法自体は、C/C++ 言語から多くを引き継いでいるので、私は特に持っていません。iOS 開発で使用する Objective-C だったら一冊くらい欲しいかったかも。
参考リンク
Hello, world
package com.example.helloworld;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
// http://developer.android.com/reference/android/app/Activity.html
public class MainActivity extends ActionBarActivity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

- 画面に何か表示するだけなら、アクティビティを 1 枚作って、レイアウト編集画面から
TextView
コントロールを張りつけておけばよく、ウィザードが初期生成してくれたコード以上に自前で何かを書く必要は全くなし。
- レイアウト編集画面で View を作って、Java で Controller を記述。
onCreate
はアクティビティが生成されるタイミングで呼ばれる。他にも onStart
や onStop
などなど。アクティビティの Lifecycle が独特なので、まだよく判っていない。
- 12 行目で画面を生成している。レイアウト編集画面でグラフィカルに配置した画面部品の情報は、プロジェクトの
\layout\activity_main.xml
に書かれていて、それ(R.layout.activity_main)を読み込んで*2、画面に表示する(setContentView
)という動作をしている。イディオム的な感じ。
- C 言語でいうところの
main
にあたる、アプリケーションの開始一発目に表示されるアクティビティは、AndroidManifest.xml で指定されている。
- AndroidManifest.xml には、アプリケーション名やアイコンの指定、利用する機能の権限などが書かれている。
- 「画面のボタンが押されたら」という処理は、
setOnClickListener
で個々のボタンに Listener を登録する方法や、アクティビティで OnClickListener
インタフェース継承する方法がある。
- MFC で Windows アプリ開発したのと同じ、Event Driven なコードを書けばよい。
- アプリケーションの終了処理は原則、自前で書かない。不要になったアプリを終了してメモリを解放するのは Android OS が良しなにやってくれる。
- 9 行目にある
@Override
というのは Java 独自仕様? Annotation(脚注)のための疑似クラス宣言?
参考リンク