書籍概要

Android Studioではじめる 簡単Androidアプリ開発

著者
発売日
更新日

概要

本書は,新しいAndroidアプリケーション開発用ソフトウェア“Android Studio”を使った入門書です。
セットアップ方法からエミュレータや実機での実行手順を説明し,さらに「天気予報」「シューティングゲーム」「迷路ゲーム」の作り方を,実際に動かせるプログラムを改良しながら作っていきます。
なお,「Android Studio Beta v0.8.14」をベースに解説しています。

こんな方におすすめ

  • Androidアプリをはじめて作りたい方
  • とにかくAndroidアプリを作って,実際に動作させてみたい方

サンプル

目次

Chapter 1 Androidアプリ開発のはじめの一歩

  • 1-1 Androidとは何かを理解する
  • 1-2 開発環境の「Android Studio」を理解する

Chapter 2 Android Studioをインストールしよう

  • 2-1 Java開発キットをインストールする
  • 2-2 Android Studioをインストールする
  • 2-3 Android Studioを起動する

Chapter 3 Android Studioをセッティングしよう

  • 3-1 開発に必要なパッケージをダウンロードする
  • 3-2 プロジェクトを作成する
  • 3-3 エミュレーターを準備する
  • 3-4 プロジェクトを実行する
  • 3-5 実機でアプリを実行する

Chapter 4 新しいプロジェクトを作成しよう

  • 4-1 アプリケーション名とapplicationIdを設定する
  • 4-2 対応バージョンと対象のデバイスを設定する
  • 4-3 生成するテンプレートを選択する
  • 4-4 生成されたプロジェクトを表示する
  • 4-5 プロジェクトを実行する

Chapter 5 “Hello Android!”でアプリ開発の流れを理解しよう

  • 5-1 プロジェクトを作成する
  • 5-2 表示内容を変更する
  • 5-3 画面にボタンを追加する
  • 5-4 ボタンを押したときのイベントを処理する
  • 【Column】import宣言の追加
  • 5-5 画像を表示する/変更する
  • 5-6 シークバーを追加する

Chapter 6 Web APIで情報を取得する天気予報アプリを作ろう

  • 6-1 プロジェクトを作成する
  • 6-2 天気情報APIにアクセスする
  • 6-3 スレッドからネットワークにアクセスする
  • 6-4 スレッドからUIを変更する
  • 【Column】メインスレッドとHandler
  • 【Column】エラーが起きたときは?
  • 6-5 AsyncTaskを使った非同期処理を実装する
  • 6-6 JSONをObjectに変換する
  • 6-7 天気情報を表示する
  • 【Column】デザインエディターが表示された場合
  • 6-8 レイアウトの見栄えを調整する
  • 6-9 「読み込み中」を表示する
  • 6-10 複数の天気情報を表示する
  • 【Column】Androidアプリの構成
  • 【Column】コードアシストを使いこなす
  • 【Column】ViewとLayout

Chapter 7 障害物や穴を飛び越えるアクションゲームを作ろう

  • 7-1;プロジェクトを作成する
  • 7-2 画像(自機)を表示する
  • 7-3 地面を表示する
  • 7-4 自機の表示をクラスに分割する
  • 7-5 自機を落下させる
  • 7-6 落下した自機を地面に着地させる
  • 7-7 タッチに反応してジャンプする
  • 【Column】ジャンプと落下
  • 7-8 ステージを移動する
  • 7-9 SurfaceViewに置き換える
  • 7-10 地面を続けて表示する
  • 7-11 ゲームオーバーを設定する
  • 7-12 当たり判定を調整する
  • 7-13 穴を追加する
  • 7-14 ジャンプ中の自機の表示を変更する
  • 7-15 ジャンプパワーゲージを表示する
  • 7-16 処理などを改善する
  • 【Column】Activityのライフサイクル

Chapter 8 スコアによって難易度が変わるシューティングゲームを作ろう

  • 8-1 プロジェクトを作成する
  • 8-2 画像を表示する
  • 8-3 敵のミサイルを追加する
  • 8-4 SurfaceViewに置き換える
  • 8-5 弾を発射する
  • 8-6 当たり判定を追加する
  • 8-7 スコアの表示を追加する
  • 8-8 ゲームオーバーを追加する
  • 8-9 バイブレーションさせる
  • 8-10 都市を導入する
  • 8-11 ゲームの難易度を上げる
  • 8-12 処理などを改善する
  • 【Column】API Level

Chapter 9 端末の傾きで玉を移動する迷路ゲームを作ろう

  • 9-1 プロジェクトを作成する
  • 9-2 ボールを表示する
  • 9-3 加速度センサーから情報を取得する
  • 9-4 センサーの情報を安定させる
  • 【Column】センサーとローパスフィルター
  • 9-5 センサーに連動させてボールを動かす
  • 9-6 背景にマップを表示する
  • 9-7 迷路の生成処理を実装する
  • 【Column】迷路生成アルゴリズム
  • 9-8 ボールと壁の当たり判定を導入する
  • 9-9 当たり判定の処理を効率化する
  • 9-10 ボールの大きさを調整する
  • 9-11 スタートとゴールを設定する
  • 9-12 ゴールを判定する
  • 9-13 ゴール時に次のステージを表示する
  • 9-14 穴の概念を導入する
  • 9-15 処理などを改善する

サポート

ダウンロード

本書のサンプルソースがダウンロードできます。 次のファイルをダウンロードして解凍してください。

ダウンロード(バージョン1.1対応)
gihyo-sample-1_1.zip(約7.7MB,2015年2月24日更新)

Android Studio 1.1が,2015年2月18日にリリースされました。
これからAndroid Studio 1.1をお使いの方は,こちらをダウンロードください。

ダウンロード(バージョン1.0対応)
gihyo-sample-1_0-2.zip(約11.5MB,2014年12月22日更新)

Android Studio 1.0が,2014年12月9日にリリースされました。
これからAndroid Studio 1.0をお使いの方は,こちらをダウンロードください。
なお,Android Studio 1.0からActivity名,Layout名には「My」から「Main」が付加されるように変更となりました。本書の該当部分も読み替えてください。
以前のバージョン(0.8.14 beta)をお使いの方は,下記の「gihyo-sample-0_8_14-2.zip」をダウンロードください。

ダウンロード(0.8.14 beta)
gihyo-sample-0_8_14-2.zip(約11.3MB,2014年12月22日更新)

各Chapterで追加する画像素材を,各Chapterのimagesフォルダに入れるようにしました。

なお,解凍してできたフォルダ群は,本書の各Chapterに対応しています。

  • Chp5_HelloAndroid
  • Chp6_WeatherForecasts
  • Chp7_Action
  • Chp8_Shooting
  • Chp9_Labyrinth

補足情報

Android Studioのインストールについて

「Android Studio」は,本書の刊行時点(2014年11月)では,ベータ版であり,短期間でのバージョンアップを繰り返しています。 そのため,本書「Chapter 2:Android Studioをインストールしよう」の記述どおりにインストールを進めても,関連ファイルが探しづらい場合や完了できない場合などがあります。 次のサイトに本書著者の有山圭二氏により,最新バージョンでのインストール方法がまとめられておりますので,ご参照ください。

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2015年5月13日更新)

P.77 リスト6-2の下から13行目

new InputStreamReader(response.getEntity().getContent())
new InputStreamReader(response.getEntity().getContent()));

P.78 「取得した天気情報を表示する」項の1行目とリスト6-3のキャプション

my_activity.xml
activity_my.xml

P.99 リスト6-14の15行目

ImageLoaderTaskのクラス宣言部の書き換えに関する記述が抜け落ちていました。

- public class ImageLoaderTask {
+ public class ImageLoaderTask extends AsyncTask {

※「-」が削除する行,「+」は追加する行

P.105 リスト6-17の作業以前

WeatherForecast.javaのTemperatureクラスにtoStringメソッドを追加する記述が抜け落ちていました。

     public class Temperature {

+        @Override
+        public String toString() {
+            StringBuffer sb = new StringBuffer();
+
+            // 最低気温 / 最高気温
+            if (min.celsius != null) {
+                sb.append(min.celsius);
+            } else {
+                sb.append(" - ");
+            }
+            sb.append("℃ / ");
+
+            if (max.celsius != null) {
+                sb.append(max.celsius);
+            } else {
+                sb.append(" - ");
+            }
+            sb.append("℃");
+
+            return sb.toString();
+        }

     }

※「+」は追加する行

P.105 リスト6-17の36-37行目

for (WeatherApi.WeatherForecast.Forecast forecast : data.forecastList ) {
for (WeatherForecast.Forecast forecast : data.forecastList ) {

P.109 「6-9 「取り込み中」を表示する」節の5行目とリスト6-20のキャプション

my_activity.xml
activity_my.xml

P.110 リスト6-21

onCreateメソッドの@Overrideの直前には「//省略」が入り,onCreateメソッドは,GetWeatherForecastTaskクラスと同じインデントになります。

P.114 リスト6-27の3~19行目

先頭の「+」は不要です

P.150 リスト7-12の下から15行目

private void jumpDroid(float power) {
private void jumpDroid() {

P.159 下から1行目

GameOver.java
GameView.java

P.186 リスト8-7の7行目

定数MISSILE_LAUNCH_WEIGHTの記述が追加となっていますが,リスト8-2で追加しているので,ここでの追加は必要ありません。

P.188 リスト8-8の21行目

drawGame(canvas);
drawObject(canvas);

P.189 リスト8-8の下から1~18行目

変数widthとheightの行に変更(削除と追加)が指定されていますが,リスト8-2で変更しているの,ここでの追加は必要ありません。ここでは次の箇所を変更します。

     @Override
-    protected void onDraw(Canvas canvas) {
+    private void drawObject(Canvas canvas) {
-        super.onDraw(canvas);

         int width = canvas.getWidth();
         int height = canvas.getHeight();

+        canvas.drawColor(Color.WHITE);

         // 省略

         droid.draw(canvas);

-        invalidate();
     }
 }

※「-」が削除する行,「+」は追加する行

P.194 リスト8-11

BaseObjectクラスのisAvailableメソッド内への追加に関する記述が抜け落ちていました。

 public boolean isAvailable(int width, int height) {
         if (yPosition < 0 || xPosition < 0 || yPosition > height || xPosition > width) {
             return false;
         }

+        if (status == STATUS_DESTROYED) {
+            return false;
+        }

         return true;
 }

※「+」は追加する行

P.211 バージョンとAPI Levelの対照表

Android Wear 4.4.1W
Android Wear 4.4W

P.255 リスト9-27

LabyrinthView.javaに変数とsetSeedメソッドを追加する記述が抜け落ちていました。

+    private int seed;

+    public void setSeed(int seed) {
+        this.seed = seed;
+    }

※「+」は追加する行

商品一覧