【最新】Androidアプリ開発を学ぶおすすめ本 – 入門・独学勉強法

コンテンツ 非表示

Androidアプリ開発を学ぼう

Androidアプリ開発の需要はこれまで以上に進んでいます。今回は、アンドロイドの開発を興味がある、またこれから開発していきたい人向けのアンドロイド書籍をセレクトしています。

ランキングも確認する
出典:出版社HP

 

基本からしっかり身につくAndroidアプリ開発入門 Android Studio 3対応 (「黒帯エンジニア」シリーズ)

気軽に技術を身につけられる

Android/Javaを知らない方でも理解できるよう書かれており、既にプログラミング言語を理解した人にちょうど良い一冊です。大変読みやすく、発見もあり楽しんで読み進めることができます。

 

はじめに

■Androidをはじめよう
Androidはスマートフォン用のプラットフォームとしてGoogleによって開発さ れ、今や世界のスマートフォン市場の86%ほどを占めるまでに成長してきました。 その活躍の場はスマートフォンやタブレットだけにとどまらず、腕時計やテレビ、 さらには自動車へと広がってきています。このようなAndroidの躍進を支えている のは、Googleのみならず、端末ベンダーやオープンソースソフトウェアコミュニ ティ、そしてもちろん、世界中のアプリデベロッパーによって構成される、多様性のあるエコシステムと、そこから生みだされる良質なアプリたちです。

Androidをはじめとするスマートフォンの世界では、たとえ個人であっても、と ても簡単に世界中の人々に開発したアプリを届けることができます。そしてこの特 徴こそが、これまでスマートフォンが人々のライフスタイルを劇的に変化させてき た原動力でもあります。
読者のみなさまも、ぜひAndroidの世界へと足を踏み入れ、世界を変えるような アプリを作ってみてください。本書がそのきっかけとなることを願っています。

■本書の特色
本書は、プログラミングの基本は知っていても、Android向けのアプリを作った ことがなく、これからアプリ作りをはじめようとしている人や、アプリ開発をこれ から仕事としてはじめる人に向けて書いています。また、JavaでのAndroidアプリ 開発経験はあっても、Kotlinで開発したことがない人のために、Kotlinの基本的な文法についても解説しています。

Androidアプリ開発の世界はとても広大です。Googleが公開しているAndroid開発 者向けのガイドだけに絞っても、それを1冊の本でまとめあげるには、非常に多くの ページ数が必要となるでしょう。そのため、本書では特に業務でのアプリ開発でまず押さえておかなければならな いポイントに絞って解説を行っています。具体的にはAndroidアプリの開発言語で あるKotlinの基本的な文法、Androidアプリを構成する各コンポーネントとそのライ フサイクル、Androidアプリのリソースと単位系、データベースを使ったデータの 永続化、非同期処理、HTTP通信、そして通知に関する記述を厚くしています。

そしてそのうえで、開発の幅をより広げるために、位置情報や地図についても触 れています。注意すべきポイントや踏み込んだ知識についても、各所に散りばめました。本書を読み進めることで、業務の中である程度の開発が行えるようになれることを考えて執筆しました。Androidの世界は広がり続けています。Androidデベロッパーの需要は、これからも高まっていくでしょう。

本書が、読者のみなさまのお役に立つことを願っています。

2018年5月
森洋之

Contents

Chapter1 アプリ開発の準備
1-1 Androidアプリの現在
Androidアプリの概要

1-2 アプリ開発の流れ
企画
制作
開発
テスト
リリース
サポート

1-3 アプリ開発環境の準備
Windowsでの開発環境の準備
Macでの開発環境の準備
Android Studioの起動

1-4 Android Studioの概要
Android Studioのメイン画面
メニューバー・ツールバー・ナビゲーションバー
プロジェクトビュー
編集エリア
ツールウィンドウ・ステータスバー
プロジェクトの基本設定

1-5 エミュレータでの実行とAVDの設定
AVD ManagerでAVDの追加・設定を行う
エミュレータでHello World!を実行する
エミュレータの操作方法
AVDを日本語化する

1-6 実機の接続と設定
Android端末の開発者モードを有効化する
PCにUSBドライバを導入する
実機でアプリを実行する

Chapter2 Kotlinプログラミングの基本
2-1 KotlinとREPL
Kotlinの登場
Kotlin REPL
はじめてのKotlinプログラム

2-2 Kotlinの基本
変数と基本のデータ型
オブジェクトの集合
条件式
繰り返し

2-3 関数
関数
第一級オブジェクトとしての関数
例外処理

2-4 クラス
クラス
継承
null許容型

2-5 その他のトピック
スコープ関数
コレクションの便利なAPI
拡張関数
インライン関数
objectキーワード

Chapter3 Androidアプリを構成する要素
3-1 Androidアプリのコンポーネント
Androidアプリのエントリーポイント
アクティビティ
フラグメント
サービス
コンテントプロバイダー
ブロードキャストレシーバ

3-2 コンポーネントのライフサイクル
アクティビティのライフサイクル
フラグメントのライフサイクル
サービスのライフサイクル
コンテントプロバイダのライフサイクル
ブロードキャストレシーバのライフサイクル

3-3 静的リソースと単位
Android Studioでのリソースファイルの場所
文字列や数値
レイアウト
画像データ
その他の画像リソース
Androidの単位系

3-4 セキュリティデザインとパーミッション
Androidのアーキテクチャー
Androidのセキュリティデザイン
パーミッション
パーミッションの取得方法

Chapter4 はじめてのアプリ
割引計算機アプリで学ぶレイアウトと動作の基本
4-1 アプリ開発の概要とプロジェクトの作成
画面遷移について
アプリ開発の流れ
プロジェクトの作成

4-2 入力画面のレイアウト作成
編集エリアに「activity_main.xml」を開く
デザインエディターで編集する方法
テキストビューを配置する
ConstraintLayoutに接続する
エディットテキストを配置する
割引率入力欄を追加する
ボタンを配置する

4-3 さまざまな端末に対応する
さまざまな画面でのレイアウト確認
文字列リソースの定義

4-4 入力画面の実装
起動画面用のMainActivity
クリックイベントのハンドリング
画面の追加
画面の遷移

4-5 計算結果画面の実装
計算結果画面のレイアウト作成
計算結果画面の実装

4-6 アプリの動作確認とデバッグ
まずはエミュレータで実行してみる
デバッグ実行

4-7 さまざまなユーザー環境に対応する
リソースを管理して英語環境と日本語環境に対応する
さまざまな環境に合わせるリソースについて

Chapter5 データの永続化とリスト表示
世界時計アプリで学ぶデータの扱いとリスト表示
5-1 データの永続化とSharedPreferences
Androidでのデータ永続化
SharedPreferencesの仕組み
SharedPreferences用ミニアプリ

5-2 リストビューでリスト表示を行う
ビューをリスト表示する
リストビュー用ミニアプリ

5-3 世界時計アプリの作成
時刻表示画面の作成
時刻表示画面の実装(その1)
アダプターの作成
タイムゾーン選択画面の作成
時刻表示画面の実装(その2)

Chapter6 通信とバックグラウンド処理
RSSリーダーアプリで学ぶ非同期通信処理
6-1 非同期処理とローダー
非同期処理やスレッド間通信のための方法

6-2 リサイクラービューを使う
リサイクラービューについて
各画面項目の並べ方を決めるレイアウトマネージャー
リサイクラービューのアダプター
リサイクラービュー用ミニアプリ

6-3 RSSリーダーアプリのレイアウト
レイアウトの作成

6-4 RSSリーダーアプリの通信とデータ表示
ネットワーク通信処理
XMLデータを解析する
RSS用データクラスの作成
RSS用パーサーの作成
ローダーの作成
アダプターの作成
アクティビティの作成

6-5 アプリにWebページを表示する
Webページをアプリで表示する3つの方法
記事をタップしたときの処理の実装

6-6 定期ジョブ機能の追加
Androidの通知について
通知を送る手順
アクションの設定
スタイルの設定
RSSリーダーアプリの通知用関数
バックグラウンドで動作するサービス
定期実行とジョブサービス
RSSリーダーアプリのジョブサービス

Chapter7 ファイル入出力とフラグメントの利用
メモ帳アプリで学ぶファイルとフラグメント
7-1 ファイルの入出力とストレージ
Androidのストレージ
File API用ミニアプリ

7-2 アクティビティとフラグメント
フラグメントの利用方法
フラグメントの使い方をミニアプリで学ぶ

7-3 メモ帳アプリの作成
フラグメントのレイアウト作成
ファイルを扱うための関数を作成する
メモ入力用のフラグメントを作成する
ファイル一覧表示用のフラグメントを作成する

7-4 アップバーとナビゲーションドロワー
メモアプリのフラグメントの表示方法
アクティビティのレイアウトを作成する
タブレット用のレイアウトを作成する
アクティビティを修正する

Chapter8 ユーザーの位置と行動の記録
行動記録アプリで学ぶ位置情報の処理と地図
8-1 Google Maps Android APIについて
Google Maps Android APIについて
Google APIキーの取得
Google Maps用ミニアプリについて

8-2 データベースを使用する
SQLiteデータベースについて
SQLiteOpenHelperクラスを実装する
SQLiteデータベースオブジェクトの取得とデータ操作
SQLiteデータベース用ミニアプリについて

8-3 行動記録アプリの作成
プロジェクトの設定
データベースの作成
位置情報を受け取るサービスの作成
位置情報の取得をリクエストするフラグメントの作成

8-4 行動記録アプリを完成させる
レイアウトファイルの編集
地図の表示とマーカーの設置
スイッチフラグメントにonActivityResult()を伝える
日付を選択可能にする
アクティビティの再生成に対応する

Chapter9 アプリの公開
9-1 デジタル署名されたapkファイルを作成する
アプリケーションIDについて
Key storeの生成とapkファイルの署名

9-2 Google Playでの公開
デベロッパー登録を行う
アプリを公開する

Index

Column
初期の設計を大切に
Android Studioのアップデートとツール追加のメッセージ
Instant Run機能について
GradleとGroovy
エミュレータを高速化するIntel HAXMの起動に関する注意
ライフサイクルの可視化
パッケージとアプリケーションID
リサイクラービューとサポートライブラリー
ライブラリとbuild.gradle

基礎&応用力をしっかり育成! Androidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオン (CodeZine BOOKS)

AndroidStudio3.0のマニュアル

主にAndroid Studioでの開発方法がメインとなっており、Android Studio の使い方から、Android特有のコーディング方法まで記載されています。とても丁寧に作られた内容です。最終章まで読み進めれば一通りアプリが作れるようになります。

はじめに

本書は、開発者のためのWebマガジン「CodeZine」で2016年3月~2017年3月の約1年間 連載していた『Android Studio 2で始めるアプリ開発入門』をベースとしつつ、連載では書きき れなかった内容や省略した説明、手順を大幅に加筆、再構成して書籍化したものです。この連載 の目的は、プレビュー版(正式リリース前のバージョン)のAndroid Studio 2を使いながらアプリ開発をイチから解説することでした。そのAndroid Studio 2も連載途中に正式リリースとな り、早いもので現在ではバージョン3が正式リリースされています。もちろん本書も Android Studio 3に対応しています。

では、Android Studioのバージョンがアップしたからといって、アプリの開発手法がガラッと 変わるのでしょうか。もちろん変わるところもありますが、その基礎的な考え方や手法は変わっ ていません。

Androidアプリ開発では、ソースコードにパターンを見ることができます。このパターンの ソースコードをコピーし、一部を書き換えることで違う動きのアプリを作成することができてしま います。それでアプリは正常に動作しますが、このようなアプリ開発ではソースコードの本質を理解しているとはいえません。私はこのような開発者を「なんちゃって開発者」と呼んでいます。

本書は、これからAndroidアプリ開発者を目指す入門者に、このような「なんちゃって開発者」 になってほしくない、という思いで執筆しました。そのため、Androidアプリ開発の基礎的な考 え方やバージョンアップしても変わらない手法を解説しています。また、コードのパターンも解 説していますが、なぜそのようなパターンになるのかの理解を意識した解説を心がけました。一 方で、Androidアプリ開発の本質を解説するために、開発言語であるJavaそのものの基礎、たと えば、インターフェース、抽象クラス、継承、ネストクラスといった文法知識を前提とし、それ らの解説は最小限にとどめています。

もう1つ、本書で心がけたことがあります。それは、できるだけ手を動かしてアプリを開発して もらえるように、ということです。Androidアプリ開発に限らず、プログラミングを習得するに は書籍を読むだけでは不十分です。実際にコードを入力し、実行してこそ習得できるものであり、 入門者ならなおさらです。そこで、ほぼすべてのソースコードを掲載し、それらを実際に入力、 実行しながらアプリ開発を習得できるようにしました。

本書で習得したことを基礎力とし、より応用的なアプリ開発を自力で行うことへの第一歩とな れば、幸いです。

齊藤新三

本書の使い方

本書の特徴は、各章1~2本のアプリを実際に手を動かして学んでもらえるようにしていることです。 ほぼすべてのソースコードを掲載していますので、それらを入力し、実際にアプリを実行させて確認し てみてください。

学習の進め方
各章に手順と書かれた項がいくつかあります。

これが実際に手を動かしていただく項です。この順番通りに作業すると、実際にアプリを作成でき、 実行できるようになります。この手順は読み飛ばすのではなく、パソコンの前に座って実際に作業を 行ってください。
その後の項では手順項で作業した内容の解説が続きます。

また、本書では章を読み進めるごとに順に新しい技術が身につくようにしています。もちろんどこか の章だけを読むことも可能ですが、できるならはじめから順に読み進めるようにしてください。

サンプルプログラムについて
本書では、ほぼすべてのソースコードを誌面に掲載して いるので、基本的にはサンプルプログラムを別途ダウン ロードして確認する必要はありません。サンプルプログラムのファイルはzip圧縮されており、 全アプリがAndroid Studioプロジェクトの形式で含まれ ています。Android Studioプロジェクトは1プロジェク トが1フォルダとなっていますので、各フォルダが1つの アプリを作成するプロジェクトです。

▲サンプルプログラムのフォルダ構成
これを開くには、Android Studioを起動 し、Welcome画面から [Open an existing Android Studio project] を選択します。 もし、すでに他のプロジェクトが開いている 状態ならば、[File] メニューから[Open] を選択してください。表示された「Open File or Project」ウィンドウから、解凍した フォルダ内の該当するプロジェクトを選択 し、[OK]をクリックすると、そのプロジェ クトが開きます。

▲「Open File or Project」ウィンドウ
以降は、本文中での解説を参考に、ソースコードをコピーしたり改変したりできます。また、アプリ の実行も可能です。

動作確認環境
本書内の記述/サンプルプログラムは、以下の環境で動作確認しています。
・Windows 10 Pro
・macOS Sierra (10.1.2)
・Android Studio 3.0.1

本書の表記
・紙面の都合でコードを折り返す場合、行末に口を付けています。
・Noteの囲みでは、注意事項や関連する項目、知っておくと便利な事柄などを紹介しています。

目次

はじめに
本書の使い方

第1章 Androidアプリ開発環境の作成
1.1 Androidのキソ知識
1.1.1 Androidの構造
1.1.2 Android Studio

1.2 Android Studioのインストール
1.2.1 Windowsの場合
1.2.2 macOSの場合
1.2.3 Android Studioの初期設定を行う
1.2.4 アップデートを確認
1.2.5 追加のSDKをダウンロード

第2章 はじめてのAndroidアプリ作成
2.1 はじめての Androidプロジェクト
2.1.1 手順 Android StudioのHelloAndroidプロジェクトを作成する
2.1.2 Android Studioプロジェクトの作成はウィザードを使う
2.1.3 プロジェクト作成情報

2.2 AVDの準備
2.2.1 手順 AVDを作成する
2.2.2 手順 AVDを起動して初期設定を行う

2.3 アプリの起動
2.3.1 手順 アプリを起動する

2.4 Android Studioの画面構成とプロジェクトのファイル構成
2.4.1 Android Studioの画面構成とProjectツールウィンドウのビュー
2.4.2 Androidビューのファイル構成

2.5 Androidアプリ開発の基本手順
2.5.1 strings.xmlの働きは重要
2.5.2 Androidアプリ開発手順にはパターンがある

第3章 ビューとアクティビティ
3.1 ピューの基礎知識
3.1.1 ラベルを画面に配置する
3.1.2 レイアウトファイルを編集する「レイアウトエディタ」
3.1.3 画面部品の配置を決めるビューグループ
3.1.4 画面部品そのものであるビュー
3.1.5 画面構成はタグの組み合わせ
3.1.6 画面部品でよく使われる属性

3.2 画面部品をもう1つ追加する
3.2.1 手順 入力欄を画面に配置する
3.2.2 アプリを手軽に再実行するInstant Run機能
3.2.3 入力欄の種類を設定する属性

3.3 レイアウトエディタのデザインモード
3.3.1 デザインモードでの画面各領域の名称
3.3.2 デザインモードのツールバー

3.4 デザインモードで部品を追加してみる
3.4.1 デザインモードでの画面作成手順
3.4.2 手順 デザインモードでボタンを画面に配置する
3.4.3 XMLがどうなったか確認してみる

3.5 LinearLayoutで部品を整列する
3.5.1 手順 LinearLayoutを入れ子に配置する
3.5.2 レイアウト部品を入れ子にした場合の画面構造

3.6 他のビュー部品 ラジオボタン/選択ボックス/リスト
3.6.1 手順 単一選択ボタンを設置するラジオボタン
3.6.2 複数のRadioButtonはRadioGroupで囲む
3.6.3 手順 選択ボックスを設置する―Spinner
3.6.4 リストデータは string-arrayタグで記述する
3.6.5 手順 リストを表示する―ListView
3.6.6 一定の高さの中でリストデータを表示するListView

第4章 イベントとリスナー
4.1 アプリ起動時に実行されるメソッド
4.1.1 手順 画面を作成する
4.1.2 アクティビティのソースコードを確認する
4.1.3 リソースを管理してくれるRクラス
4.1.4 Cannot resolve symbol ‘R’への対応

4.2 イベントリスナ
4.2.1 イベントとイベントハンドラとリスナ
4.2.2 Androidでリスナを設定する手順
4.2.3 手順 リスナクラスを作成する
4.2.4 リスナクラスは専用のインターフェースを実装する
4.2.5 手順 イベントハンドラメソッドに処理を記述する

4.2.6 Javaクラス内で画面部品を取得する処理
4.2.7 入力文字列の取得と表示
4.2.8 手順 リスナを設定する
4.2.9 リスナインターフェースに対応したリスナ設定メソッド

4.3 ボタンをもう1つ追加してみる
4.3.1 手順 文字列とボタンを追加する
4.3.2 手順 追加されたボタンの処理を記述する
4.3.3 idで処理を分岐

第5章 リストビューとダイアログ
5.1 リストタップのイベントリスナ
5.1.1 手順 画面を作成する
5.1.2 手順 リストをタップしたときの処理を記述する
5.1.3 リストビュータップのリスナはOnitemClickListenerインターフェースを実装する
5.1.4 お手軽にメッセージを表示できるトースト

5.2アクティビティ中でリストデータを生成する
5.2.1 手順 アクティビティ中でリストを生成するサンプルアプリを作成する
5.2.2 リストビューとリストデータを結びつけるアダプタクラス

5.3 ダイアログを表示する
5.3.1 手順 ダイアログを表示させる処理を記述する
5.3.2 Androidのダイアログの構成
5.3.3 ダイアログを表示するには DialogFragment を継承したクラスを作成する
5.3.4 ダイアログオブジェクトの生成処理はビルダーを利用する
5.3.5 ダイアログのボタンタップはwhichで分岐する

第6章 ConstraintLayout
6.1 ConstraintLayout
6.1.1 Android Studioのデフォルトレイアウト
6.1.2 ConstraintLayoutの特徴

6.2 制約の設定には制約ハンドルを使う
6.2.1 [準備] ライブラリが追加済みか確認する
6.2.2 手順 TextViewが1つだけの画面を作成する
6.2.3 設定された制約の確認

6.3 ConstraintLayout における3種類のlayout_width/height
6.3.1 手順 「名前」のラベルと入力欄を追加する
6.3.2 ConstraintLayoutでは独特のlayout_width/height
6.3.3 手順 残りの部品を追加する

6.4 横並びとペースライン
6.4.1 横並びに変更も簡単
6.4.2 ベースラインを揃える

6.5 ガイドラインを利用する
6.5.1手順 「名前」入力欄と「メールアドレス」入力欄の左端を揃える
6.5.2 制約の設定先として利用できるガイドライン

6.6 チェイン機能を使ってみる
6.6.1 手順 ボタンを3つ均等配置する
6.6.2 複数の画面部品をグループ化できるチェイン機能

第7章 画面遷移とIntentクラス
7.1 2行のリストとSimpleAdapter
7.1.1 手順 定食メニューリスト画面を作成する
7.1.2 柔軟なリストビューが作れるアダプタクラス SimpleAdapter
7.1.3 データと画面部品を結びつけるfrom-to

7.2 Androidの画面遷移…
7.2.1 手順 画面遷移のコードと新画面のコードを記述する
7.2.2 画面を追加する3種の作業
7.2.3 Androidの画面遷移は遷移ではない
7.2.4 アクティビティの起動とインテント
7.2.5 引き継ぎデータを受け取るのもインテント
7.2.6 タップ処理をメソッドで記述できる onClick属性]
7.2.7 戻るボタンの処理はアクティビティの終了

7.3 アクティビティのライフサイクル
7.3.1 アクティビティのライフサイクルとは何か
7.3.2 手順 ライフサイクルをアプリで体感する
7.3.3 AndroidのログレベルとLog クラス
7.3.4 ログの確認は Logcatで行う
7.3.5 ライフサイクルコールバックをログで確認する

第8章 オプションメニューとコンテキストメニュー
8.1 リストビューのカスタマイズ
8.1.1 手順 IntentSampleアプリと同じ部分を作成する
8.1.2 リストビュー各行のカスタマイズはレイアウトファイルを用意するだけ

8.2 オプションメニュー
8.2.1 オプションメニューの例
8.2.2 手順 オプションメニュー表示を実装する
8.2.3 オプションメニュー表示はXMLとアクティビティに記述する
8.2.4 手順 オプションメニュー選択時処理を実装する
8.2.5 オプションメニュー選択時の処理はIDで分岐する

8.3 戻るメニュー
8.3.1 手順 戻るメニューを実装する
8.3.2 戻るメニュー表示はonCreate()に記述する

8.4 コンテキストメニュー
8.4.1 手順 コンテキストメニューを実装する
8.4.2 コンテキストメニューの作り方はオプションメニューとほぼ同じ
8.4.3 手順 コンテキストメニュー選択時の処理を実装する
8.4.4 コンテキストメニューでも処理の分岐はidのR値とswitch文

第9章 フラグメント
9.1フラグメント
9.1.1 前章までのサンプルをタブレットで使うと
9.1.2 フラグメントによる画面構成

9.2 スマホサイズのメニューリスト画面のフラグメント化
9.2.1 手順 メニューリスト画面をフラグメントで実現する
9.2.2 フラグメントはアクティビティ同様にXMLとJavaクラス
9.2.3 フラグメントのライフサイクルとonCreateView()メソッド
9.2.4 フラグメントでのコンテキストの扱い
9.2.5 フラグメントのアクティビティへの埋め込み

9.3 スマホサイズの注文完了画面のフラグメント化
9.3.1 手順 注文完了画面をフラグメントで実現する
9.3.2 様々なところで登場する所属アクティビティ

9.4 タブレットサイズ画面を作成する
9.4.1 手順 メニューリスト画面を10インチに対応する
9.4.2 画面サイズごとに自動でレイアウトファイルを切り替えてくれるlayout-##
9.4.3 10インチの画面構成

9.5 注文完了フラグメントのタブレット対応
9.5.1 スマホサイズとタブレットサイズの処理の違い
9.5.2 手順 注文完了フラグメントをタブレットに対応する
9.5.3 画面判定フラグがキモ
9.5.4 フラグメントトランザクション
9.5.5 Intentの引き継ぎデータはBundleに格納されている
9.5.6 フラグメント間のデータ引き継ぎもBundle

第10章 データベースアクセス
10.1 Androidのデータ保存

10.2 Androidのデータベース利用手順
10.2.1 手順 カクテルのメモアプリを作成する
10.2.2 Androidのデータベースの核となるヘルパークラス
10.2.3 手順 データベース処理を追加する
10.2.4 データベースヘルパークラスの作り方
10.2.5 データ更新処理
10.2.6 データ取得処理

第11章 非同期処理とWeb API連携
11.1 AndroidのWeb連携
11.2 非同期処理

11.3 AsyncTask
11.3.1 手順 お天気情報アプリを作成する
11.3.2 手順 非同期処理コードを記述する
11.3.3 AsyncTaskを利用する手順
11.3.4 AsyncTaskのその他のメソッド

11.4 HTTP接続
11.4.1 手順 天気情報の取得処理を記述する
11.4.2 Androidのインターネット接続はHTTP接続
11.4.3 HTTP接続の許可
11.4.4 HttpURLConnectionクラスのその他のメソッド

第12章 メディア再生 12.1 音声ファイルの再生
12.1.1 手順 メディア再生アプリを作成する
12.1.2 手順 メディア再生のコードを記述する
12.1.3 音声ファイルの再生はMediaPlayer クラスを使う
12.1.4 メディアの再生と一時停止
12.1.5 MediaPlayerの破棄
12.1.6 MediaPlayerの状態遷移

12.2 戻る・進むボタン
12.2.1 手順 戻る・進む処理のコードを記述する
12.2.2 再生位置を指定できる seekTo()

12.3 リピート再生
12.3.1 手順 リピート再生のコードを記述する
12.3.2 スイッチ変更検出用リスナはOnCheckedChangeListenerインターフェース
12.3.3 メディアのループ設定は setLooping()メソッド

第13章 バックグラウンド処理と通知機能
13.1 サービス
13.1.1 手順 サービスサンプルアプリを作成する
13.1.2手順 サービスに関するコードを記述する
13.1.3 サービスはServiceクラスを継承したクラスとして作成
13.1.4 サービスのライフサイクル

13.2 通知
13.2.1 通知とは
13.2.2 通知を実装する
13.2.3 通知を扱うにはまずチャネルを生成する
13.2.4 通知を出すにはビルダーとマネージャーが必要

13.3 通知からアクティビティを起動する
13.3.1 手柄 通知からアクティビティを起動する処理を実装する
13.3.2 通知からアクティビティの起動は PendingIntentを使う

第14章 地図アプリとの連携とGPS機能の利用
14.1 暗黙的インテント
14.1.1 2種のインテント
14.1.2 手順 暗黙的インテントサンプルアプリを作成する
14.1.3 手順 地図アプリとの連携に関するコードを記述する
14.1.4 暗黙的インテントの利用はアクションとURI

14.2 緯度と経度指定で地図アプリを起動するURL
14.2.1 手順 緯度と経度で地図アプリと連携するコードを記述する

14.3 GPS機能の利用
14.3.1 手順 GPS機能を利用するコードを記述する
14.3.2 LocationManagerで位置情報を利用する

14.4 GPS利用の許可設定
14.4.1 手順 GPS機能利用の許可とパーミッションチェックのコードを記述する
14.4.2 アプリの許可はパーミッションチェックが必要
14.4.3 パーミッションダイアログに対する処理はonRequestPermissionsResult()メソッド

第15章 カメラアプリとの連携
15.1 カメラ機能の利用.
15.1.1 カメラ機能を利用する2種類の方法
15.1.2 手順 カメラ連携サンプルアプリを作成する
15.1.3 カメラアプリを起動する暗黙的インテント
15.1.4 アプリに戻ってきたときに処理をさせる

15.2 ストレージ経由での連携
15.2.1 手順 ストレージ経由でカメラアプリと連携するように改造する
15.2.2 ストレージ利用許可を与える
15.2.3 Androidストレージ内部のファイルはURIで指定する
15.2.4 URI指定でカメラを起動する

第16章 マテリアルデザイン
16.1 マテリアルデザイン
16.1.1 マテリアルデザインとは
16.1.2 Androidのマテリアルデザイン
16.1.3 Androidのマテリアルテーマの確認
16.1.4 マテリアルデザインの4色

16.2 ScrollView
16.2.1 手順 ツールバーサンプルアプリを作成する
16.2.2 画面をスクロールさせたい場合にはScrollViewを使う

16.3 アクションパーより柔軟なツールバー
16.3.1 手順 ツールバーを導入する
16.3.2 ツールバーを使うにはアクションバーを非表示に
16.3.3 ツールバーの各種設定はアクティビティに記述する

16.4 ツールバーのスクロール連動
16.4.1 手順 スクロール連動サンプルアプリを作成する
16.4.2 サポートライブラリを利用するにはビルド設定が必要
16.4.3 スクロール連動のキモはCoordinatorLayout
16.4.4 アクションバー部分を連動させるAppBarLayout
16.4.5 CoordinatorLayout配下でスクロールするにはNestedScrollViewを使う
16.4.6 enterAlwaysモードでのスクロール連動のまとめ

16.5 CollapsingToolbarLayoutの導入
16.5.1 手順 CollapsingToolbarLayoutを導入する
16.5.2 AppBarLayoutのサイズを変更するにはCollapsingToolbarLayoutを使う

16.6 CollapsingToolbarLayoutにタイトルを設定する
16.6.1 手順 CollapsingToolbarLayoutにタイトルを設定する
16.6.2 CollapsingToolbarLayoutは通常サイズと縮小サイズで文字色を変えられる

16.7 FloatingActionButton (FAB)
16.7.1 手順 FABを追加する
16.7.2 FABは浮いたボタン
16.8 Scrolling Activity

第17章 リサイクラービュー
17.1 リストビューの限界

17.2 リサイクラービューの使い方
17.2.1 手順 リサイクラービューサンプルアプリを作成する
17.2.2 手順 リサイクラービューに関するソースコードを記述する
17.2.3 リサイクラービューにはレイアウトマネージャーとアダプタが必要
17.2.4 リストデータの見え方を決めるレイアウトマネージャー
17.2.5 リサイクラービューのアダプタは自作する.
17.2.6 ビューホルダはアイテムのレイアウトに合わせて作成する
17.2.7 アダプタにはアイテムの生成とデータ割り当て処理を記述する

17.3 区切り線とリスナ設定
17.3.1 手順 区切り線とリスナ設定のコードを記述する
17.3.2 区切り線は手動で設定する
17.3.3 リスナはインフレートした画面部品に対して設定する

索引

基礎&応用力をしっかり育成!Androidアプリ開発の教科書 Kotlin対応 なんちゃって開発者にならないための実践ハンズオン (CodeZine BOOKS)

アプリ開発の基礎が身に付く

「アプリ開発ってどこから手をつけたらいいの…?」という方におすすめの一冊です。しっかりと基礎をおさえた内容であり、Androidでのアプリ開発の一通りの流れがわかります。脱・初心者への足がかりとなる本です。

はじめに

本書のもととなるJava版の『Androidアプリ開発の教科書』が刊行されたのが2018年の2月です。その時は、Android Studio 3.0がリリースされたばかりでした。そのリリースで一番注目されたのが、Kotlinの正式サポートです。

そのKotlinは、それまでもJVM言語のひとつとして注目はされていましたが、注目されつつも定着しなかった他のJVM 言語と同様の道をたどる可能性も否定できない状況でし た。それがAndroidアプリ開発言語のひとつとして正式サポートされてからは、1年と待たずにあっという間に花形言語へと成長した感があります。さらに、2019年5月のGoogle I/O 2019で、GoogleはAndroidにおけるKotlin ファーストを強化していくと表明しました。

ここにきて、Androidアプリ開発ではKotlinが中心的言語になりつつあります。そうした状況の中、ありがたくもKotlin版の『Androidアプリ開発の教科書』をここに無事刊行できました。「Kotlin対応」とついていることから想像できるかもしれませんが、本書を通して作成するサンプルは、あえてJava版と同じものにしています。

もちろん、本書単独でも学習していただけるものではありますが、場合によっては、Java版と対比させることによって、Kotlin と Javaの書き方の相違点と共通点、さらには、KotlinとJavaという言語を問わずに共通で使える Androidアプリ開発の知識を学 べる副次的効果も狙っています。

もっとも、Java版を執筆した時点からAndroid Studio自体のバージョンが3.4へとアップしており、Android OSのバージョンも9 (Pie)へとアップしています。それに伴って、Android Studioの操作方法、および、アプリ作成の方法が変化したところは、最新の内容に書き換えています。

さて、本書もJava版同様に、ほぼすべてのソースコードを掲載し、それらを実際に入力、実行しながらアプリ開発を習得できるようにしています。掲載ソースコードは、眺めるだけではなく、実際にソースコードを入力し、アプリを実行してみてください。つまり、手を動かすことです。手を動かしてこそ理解できる解説があります。その積み重ねが本書の副題にある「なんちゃって開発者にならないための」第一歩だと思っています。

本書がその手助けとなれば、これほどうれしいことはありません。

齊藤新三

本書の使い方

本書の特徴は、各章1~2本のアプリを実際に手を動かして学んでもらえるようにしていることです。 ほぼすべてのソースコードを掲載していますので、それらを入力し、実際にアプリを実行させて確認し てみてください。

学習の進め方
各章に手順と書かれた項がいくつかあります。

これが実際に手を動かしていただく項です。この順番通りに作業すると、実際にアプリを作成でき、 実行できるようになります。この手順は読み飛ばすのではなく、パソコンの前に座って実際に作業を 行ってください。
その後の項では手順項で作業した内容の解説が続きます。

また、本書では章を読み進めるごとに順に新しい技術が身につくようにしています。もちろんどこか の章だけを読むことも可能ですが、できるならはじめから順に読み進めるようにしてください。

Kotlinについて
本書はAndroidアプリ開発の入門書であって、Kotlinの入門書ではありません。ですので、言語とし てのKotlinの解説は、本書では行っておりません。また、ある程度Kotlin言語が扱えることを前提とし て解説を行っています。もし、言語としてのKotlinが未習、あるいは、あやふやな場合は、以下の書籍 などで言語としてのKotlinを習得してから本書に取り組むようにしてください。
Kindle本「速習 Kotlin」 山田祥寛 (WINGSプロジェクト)

サンプルプログラムについて
本書では、ほぼすべてのソースコードを誌面に掲載しているので、基本的にはサンプルプログラムを 別途ダウンロードして確認する必要はありません。 サンプルプログラムのファイルはzip圧縮されて おり、全アプリがAndroid Studioプロジェクトの 形式で含まれています。Android Studioプロジェ クトは1プロジェクトが1フォルダとなっていますの で、各フォルダが1つのアプリを作成するプロジェ クトです。

▲サンプルプログラムのフォルダ構成
これを開くには、Android Studioを起動し、 Welcome画面から[Open an existing Android Studio project]を選択します。もし、すでに他の プロジェクトが開いている状態ならば、[File]メ ニューから[Open] を選択してください。表示され た「Open File or Project」ウィンドウから、解凍 したフォルダ内の該当するプロジェクトを選択し、 [OK]をクリックすると、そのプロジェクトが開きます。

▲「Open File or Project」ウィンドウ
以降は、本文中での解説を参考に、ソースコードをコピーしたり改変したりできます。また、アプリ の実行も可能です。

動作確認環境
本書内の記述/サンプルプログラムは、以下の環境で動作確認しています。
・Windows 10 Pro
・macOS High Sierra (10.13)
・Android Studio 3.4.1

本書の表記
・紙面の都合でコードを折り返す場合、行末に口を付けています。
・Noteの囲みでは、注意事項や関連する項目、知っておくと便利な事柄などを紹介しています。

目次

はじめに
本書について

第1章 Androidアプリ開発環境の作成
11.1 Androidのキソ知識
1.1.1 Androidの構造
1.1.2 AndroidStudio
1.1.3 Kotlin言語の正式サポート

1.2 Android Studioのインストール
1.2.1 Windowsの場合
1.2.2 macOSの場合
1.2.3 Android Studioの初期設定を行う
1.2.4 アップデートを確認
1.2.5 追加のSDKをダウンロード

第2章 はじめてのAndroidアプリ作成
2.1 はじめてのAndroidプロジェクト
2.1.1 手順 Android StudioのHelloAndroidプロジェクトを作成する
2.1.2 Android Studioプロジェクトの作成はウィザードを使う
2.1.3 プロジェクト作成情報

2.2 AVDの準備
2.2.1 手順 AVDを作成する
2.2.2 手順 AVDを起動して初期設定を行う

2.3 アプリの起動。
2.3.1 手順 アプリを起動する

2.4 Android Studioの画面構成とプロジェクトのファイル構成
2.4.1 Android Studioの画面構成とProjectツールウィンドウのビュー
2.4.2 Androidビューのファイル構成

2.5 Android アプリ開発の基本手順
2.5.1 strings.xmlの働きは重要
2.5.2 Androidアプリ開発手順にはパターンがある

第3章 ビューとアクティビティ
3.1 ビューの基礎知識
3.1.1 手順 ラベルを画面に配置する
3.1.2 レイアウトファイルを編集する「レイアウトエディタ」
3.1.3 画面部品の配置を決めるビューグループ
3.1.4 画面部品そのものであるビュー
3.1.5 画面構成はタグの組み合わせ
3.1.6 画面部品でよく使われる属性

3.2 画面部品をもう1つ追加する
3.2.1 手順 入力欄を画面に配置する
3.2.2 アプリを手軽に再実行するInstant Run機能
3.2.3 入力欄の種類を設定する属性

3.3 レイアウトエディタのデザインモード
3.3.1 デザインモードでの画面各領域の名称
3.3.2 デザインモードのツールバー

3.4 デザインモードで部品を追加してみる
3.4.1 デザインモードでの画面作成手順
3.4.2 手順 デザインモードでボタンを画面に配置する
3.4.3 XMLがどうなったか確認してみる

3.5 LinearLayoutで部品を整列する
3.5.1 手順 LinearLayoutを入れ子に配置する
3.5.2 レイアウト部品を入れ子にした場合の画面構造

3.6 他のビュー部品―ラジオボタン/選択ボックス/リスト
3.6.1 手順 単一選択ボタンを設置するラジオボタン
3.6.2 複数のRadioButtonはRadioGroupで囲む
3.6.3 手順選択ボックスを設置する―Spinner
3.6.4 リストデータは string-arrayタグで記述する
3.6.5 手順リストを表示する―ListView
3.6.6 一定の高さの中でリストデータを表示するListView

第4章 イベントとリスナ
4.1 アプリ起動時に実行されるメソッド
4.1.1 手順 画面を作成する
4.1.2 アクティビティのソースコードを確認する
4.1.3 リソースを管理してくれるRクラス

4.2 イベントリスナ
4.2.1 イベントとイベントハンドラとリスナ
4.2.2 Androidでリスナを設定する手順
4.2.3 手順 リスナクラスを作成する
4.2.4 リスナクラスは専用のインターフェースを実装する
4.2.5 手順 イベントハンドラメソッドに処理を記述する
4.2.6 アクティビティ内で画面部品を取得する処理
4.2.7 入力文字列の取得と表示
4.2.8 手順 リスナを設定する
4.2.9 リスナインターフェースに対応したリスナ設定メソッド

4.3 ボタンをもう1つ追加してみる
4.3.1 手順 文字列とボタンを追加する
4.3.2 手順 追加されたボタンの処理を記述する
4.3.3 idで処理を分岐

第5章 リストビューとダイアログ
5.1 リストタップのイベントリスナ
5.1.1 手順 画面を作成する
5.1.2 手順 リストをタップしたときの処理を記述する
5.1.3 リストビュータップのリスナは OnltemClickListener インターフェースを実装する
5.1.4 お手軽にメッセージを表示できるトースト
5.1.5 リストビュータップのリスナは onitemClickListenerプロパティに代入

5.2 アクティビティ中でリストデータを生成する
5.2.1 手順 アクティビティ中でリストを生成するサンプルアプリを作成する
5.2.2 リストビューとリストデータを結びつけるアダプタクラス

5.3 ダイアログを表示する
5.3.1 手順 ダイアログを表示させる処理を記述する
5.3.2 Androidのダイアログの構成
5.3.3 ダイアログを表示するにはDialogFragmentを継承したクラスを作成する
5.3.4 ダイアログオブジェクトの生成処理はビルダーを利用する
5.3.5 ダイアログのボタンタップはwhichで分岐する

第6章 ConstraintLayout
6.1 ConstraintLayout
6.1.1 Android Studioのデフォルトレイアウト
6.1.2 ConstraintLayoutの特徴

6.2 制約の設定には制約ハンドルを使う
6.2.1 [準備] ライブラリが追加済みか確認する
6.2.2 手順 TextViewが1つだけの画面を作成する
6.2.3 設定された制約の確認

6.3 ConstraintLayoutにおける3種類のlayout_width/height
6.3.1 手順 「名前」のラベルと入力欄を追加する
6.3.2 ConstraintLayout CIAO layout_width/height
6.3.3 手順 残りの部品を追加する

6.4 横並びとペースライン
6.4.1 横並びに変更も簡単
6.4.2 ベースラインを揃える

6.5 ガイドラインを利用する
6.5.1 手順 「名前」入力欄と「メールアドレス」入力欄の左端を揃える
6.5.2 制約の設定先として利用できるガイドライン

6.6 チェイン機能を使ってみる
6.6.1 ボタンを3つ均等配置する
6.6.2 複数の画面部品をグループ化できるチェイン機能

第7章 画面遷移とIntentクラス
7.1 2行のリストとSimpleAdapter
7.1.1 手順 定食メニューリスト画面を作成する
7.1.2 柔軟なリストビューが作れるアダプタクラス SimpleAdapter
7.1.3 データと画面部品を結びつける from-to

7.2 Androidの画面遷移
7.2.1 手順 画面遷移のコードと新画面のコードを記述する
7.2.2 画面を追加する3種の作業
7.2.3 Androidの画面遷移は遷移ではない
7.2.4 アクティビティの起動とインテント
7.2.5 引き継ぎデータを受け取るのもインテント
7.2.6 タップ処理をメソッドで記述できる onClick属性
7.2.7 戻るボタンの処理はアクティビティの終了

7.3 アクティビティのライフサイクル
7.3.1 アクティビティのライフサイクルとは何か
7.3.2 手順 ライフサイクルをアプリで体感する
7.3.3 AndroidのログレベルとLog クラス
7.3.4 ログの確認は Logcatで行う
7.3.5 ライフサイクルコールバックをログで確認する

第8章 オプションメニューとコンテキストメニュー
8.1 リストビューのカスタマイズ
8.1.1 手順 IntentSampleアプリと同じ部分を作成する
8.1.2 リストビュー各行のカスタマイズはレイアウトファイルを用意するだけ

8.2 オプションメニュー
8.2.1 オプションメニューの例
8.2.2 手順 オプションメニュー表示を実装する
8.2.3 オプションメニュー表示はXMLとアクティビティに記述する
8.2.4 手順 オプションメニュー選択時処理を実装する
8.2.5 オプションメニュー選択時の処理はIDで分岐する

8.3 戻るメニュー
8.3.1 手順 戻るメニューを実装する
8.3.2 戻るメニュー表示はonCreate()に記述する

8.4 コンテキストメニュー
8.4.1 手順 コンテキストメニューを実装する
8.4.2 コンテキストメニューの作り方はオプションメニューとほぼ同じ
8.4.3 手順 コンテキストメニュー選択時の処理を実装する
8.4.4 コンテキストメニューでも処理の分岐はidのR値とwhen文

第9章 フラグメント
9.1フラグメント
9.1.1 前章までのサンプルをタブレットで使うと
9.1.2 フラグメントによる画面構成

9.2 スマホサイズのメニューリスト画面のフラグメント化
9.2.1 手順 メニューリスト画面をフラグメントで実現する
9.2.2 フラグメントはアクティビティ同様にXMLとKotlin クラス
9.2.3 フラグメントのライフサイクルとonCreateView()メソッド
9.2.4 フラグメントでのコンテキストの扱い
9.2.5 フラグメントのアクティビティへの埋め込み

9.3 スマホサイズの注文完了画面のフラグメント化
9.3.1 手順 注文完了画面をフラグメントで実現する
9.3.2 様々なところで登場する所属アクティビティ

9.4 タブレットサイズ画面を作成する
9.4.1 手順 メニューリスト画面を10インチに対応する
9.4.2 画面サイズごとに自動でレイアウトファイルを切り替えてくれるlayout-##
9.4.3 10インチの画面構成

9.5 注文完了フラグメントのタブレット対応
9.5.1 スマホサイズとタブレットサイズの処理の違い
9.5.2 手順 注文完了フラグメントをタブレットに対応する
9.5.3画面判定フラグがキモ
9.5.4 フラグメントトランザクション
9.5.5 Intentの引き継ぎデータはBundle に格納されている
9.5.6 フラグメント間のデータ引き継ぎもBundle

第10章 データベースアクセス
10.1 Androidのデータ保存

10.2 Androidのデータベース利用手順
10.2.1 手順 カクテルのメモアプリを作成する
10.2.2 Androidのデータベースの核となるヘルパークラス
10.2.3 手順 データベース処理を追加する
10.2.4 データベースヘルパークラスの作り方
10.2.5 ヘルパークラスの生成、解放処理
10.2.6 データ更新処理 10.2.7 データ取得処理

第11章 非同期処理とWeb API連携
11.1 AndroidのWeb連携
11.2 非同期処理

11.3 AsyncTask
11.3.1 手順 お天気情報アプリを作成する
11.3.2 手順 非同期処理コードを記述する
11.3.3 AsyncTaskを利用する手順
11.3.4 AsyncTaskのその他のメソッド

11.4 HTTP接続
11.4.1 手順 手間天気情報の取得処理を記述する
11.4.2 Androidのインターネット接続はHTTP接続
11.4.3 HTTP接続の許可
11.4.4 HttpURLConnection クラスのその他のプロパティ

第12章 メディア再生
12.1 音声ファイルの再生
12.1.1 手順 メディア再生アプリを作成する
12.1.2 手順 メディア再生のコードを記述する
12.1.3 音声ファイルの再生はMediaPlayerクラスを使う
12.1.4 メディアの再生と一時停止
12.1.5 MediaPlayerの破棄
12.1.6 MediaPlayerの状態遷移

12.2 戻る・進むボタン
12.2.1 手順 戻る・進む処理のコードを記述する
12.2.2 再生位置を指定できるseekTo()

12.3 リピート再生
12.3.1 手順 リピート再生のコードを記述する
12.3.2 スイッチ変更検出用リスナは OnCheckedChangeListener インターフェース
12.3.3 メディアのループ設定は setLooping()プロパティ

第13章 バックグラウンド処理と通知機能
13.1 サービス
13.1.1 手順 サービスサンプルアプリを作成する
13.1.2 手順 サービスに関するコードを記述する
13.1.3 サービスはService クラスを継承したクラスとして作成
13.1.4 サービスのライフサイクル

13.2 通知
13.2.1 通知とは
13.2.2 手順 通知を実装する
13.2.3 通知を扱うにはまずチャネルを生成する
13.2.4 通知を出すにはビルダーとマネージャが必要

13.3 通知からアクティビティを起動する
13.3.1 手順 通知からアクティビティを起動する処理を実装する
13.3.2 通知からアクティビティの起動は PendingIntentを使う

第14章 地図アプリとの連携とGPS機能の利用
14.1 暗黙的インテント
14.1.1 2種のインテント
14.1.2 手順 暗黙的インテントサンプルアプリを作成する
14.1.3 手順 地図アプリとの連携に関するコードを記述する
14.1.4 暗黙的インテントの利用はアクションとURL

14.2 緯度と経度指定で地図アプリを起動するURI…
14.2.1 手順 緯度と経度で地図アプリと連携するコードを記述する

14.3 GPS機能の利用
14.3.1 手順 GPS機能を利用するコードを記述する
14.3.2 LocationManagerで位置情報を利用する

14.4 GPS利用の許可設定
14.4.1 手順 GPS機能利用の許可とパーミッションチェックのコードを記述する
14.4.2 アプリの許可はパーミッションチェックが必要
14.4.3 パーミッションダイアログに対する処理は onRequestPermissionsResult()メソッド

第15章 カメラアプリとの連携
15.1 カメラ機能の利用
15.1.1 カメラ機能を利用する2種類の方法
15.1.2 手順 カメラ連携サンプルアプリを作成する
15.1.3 カメラアプリを起動する暗黙的インテント
15.1.4 アプリに戻ってきたときに処理をさせる

15.2 ストレージ経由での連携
15.2.1 手順 ストレージ経由でカメラアプリと連携するように改造する
15.2.2 ストレージ利用許可を与える
15.2.3 Androidストレージ内部のファイルはURIで指定する
15.2.4 URI指定でカメラを起動する

第16章 マテリアルデザイン
16.1 マテリアルデザイン
16.1.1 マテリアルデザインとは
16.1.2 Androidのマテリアルデザイン
16.1.3 Androidのマテリアルテーマの確認
16.1.4 マテリアルデザインの4色

16.2 ScrollView
16.2.1 手順 ツールバーサンプルアプリを作成する
16.2.2 画面をスクロールさせたい場合にはScrollViewを使う

16.3 アクションバーより柔軟なツールバー
16.3.1 手順 ツールバーを導入する
16.3.2 ツールバーを使うにはアクションバーを非表示に
16.3.3 ツールバーの各種設定はアクティビティに記述する

16.4 ツールバーのスクロール連動
16.4.1 手順 スクロール連動サンプルアプリを作成する
16.4.2 サポートライブラリを利用するにはビルド設定が必要
16.4.3 スクロール連動のキモはCoordinatorLayout
16.4.4 アクションバー部分を連動させるAppBarLayout
16.4.5 CoordinatorLayout配下でスクロールするにはNestedScrollViewを使う
16.4.6 enterAlwaysモードでのスクロール連動のまとめ

16.5 CollapsingToolbarLayoutの導入
16.5.1 手順 CollapsingToolbarLayoutを導入する
16.5.2 AppBarLayoutのサイズを変更するには CollapsingToolbarLayoutを使う

16.6 CollapsingToolbarLayoutにタイトルを設定する
16.6.1 手順 CollapsingToolbarLayoutにタイトルを設定する
16.6.2 CollapsingToolbarLayoutは通常サイズと縮小サイズで文字色を変えられる

16.7 FloatingActionButton (FAB)
16.7.1 手順 FABを追加する
16.7.2 FABは浮いたボタン

16.8 Scrolling Activity

第17章 リサイクラービュー
17.1 リストビューの限界

17.2 リサイクラービューの使い方
17.2.1 手順 リサイクラービューサンプルアプリを作成する
17.2.2 手順 リサイクラービューに関するソースコードを記述する
17.2.3 リサイクラービューにはレイアウトマネージャーとアダプタが必要
17.2.4 リストデータの見え方を決めるレイアウトマネージャー
17.2.5 リサイクラービューのアダプタは自作する
17.2.6 ビューホルダはアイテムのレイアウトに合わせて作成する
17.2.7 アダプタにはアイテムの生成とデータ割り当て処理を記述する

17. 3区切り線とリスナ設定
17.3.1 手順 区切り線とリスナ設定のコードを記述する
17.3.2 区切り線は手動で設定する
17.3.3 リスナはインフレートした画面部品に対して設定する

索引

たった1日で基本が身に付く! Androidアプリ開発超入門

プログラミング初心者でもアプリが作れる!

「プログラミングを勉強したいけど何から始めたらいいかわからない…」「Java難しい…やっぱり無理だ」となりがちな問題を、非常に丁寧な表現と解説で解決しています。
本当に1日で簡単なアプリを作る事ができます。Androidアプリを作る方でなくても、プログラミング初心者には「プログラミングの入り口」としては最適の一冊です。

中川 幸哉 (著)
技術評論社 (2018/9/21)、出典:出版社HP

はじめに

この本は、Androidアプリを作ってみたい、Androidプログラミングの世界への第一歩を踏み出したい、すべての初心者が、体験しながら学べる入門書です。AndroidはGoogleがLinuxをベースに開発した、携帯電話端末のためのモバイルOSです。2009年の夏に、日本に最初のAndroidスマートフォンが上陸したとき、筆者はまだ大学生でした。

携帯電話が好きだった私は、この手のひらの中の魔法に魅了されて、Androidアプリ開発に取り組み始めました。先人たちのブログを読んだり、Twitterで質問したりと、コミュニティの助けを借りながらアプリが作れるようになりました。この本には、大学生だった当時を振り返って、筆者が読みたかった内容を詰め込んでいます。

第1章では、本書のタイトルにもなっているAndroid Studioのインストール方法や、日本語化について解説しました。用意してほしいパソコンの性能にも触れていますので、これからパソコンを買う方には参考にしてください。

第2章では、Android Studioでアプリを作り始める方法を解説しています。いきなりプログラムを書き始めようとしても悩んでしまうので、まずは紙とペンを持って、自分のやりたいことと向き合うところから始めます。

第3章では、レイアウトと呼ばれる、アプリの見た目の作り方を学びます。アプリの種類によっては見栄えがほとんどレイアウトで決まる場合もあるので、Java言語のおまけではなく、大切な要素として多くのページを割きました。過去の筆者がもっとも読みたかったのがこの章です。

第4章では、AndroidアプリのプログラミングにおけるJava言語の扱いを学びます。Java言語がはじめてという方のために、サンプルを動かしながら変数やメソッドといったJava言語の文法を体験しながら学べるようになっています。また、Java言語を使ってレイアウトに配置した部品を操作する方法も解説しています。

第5章では、実用的なAndroidアプリをゼロから作る流れを体験してもらうために、ビンゴの抽選機アプリを作ります。本書のノウハウを総動員して、アプリを作り切りましょう。

本書を通じてAndroidアプリ開発を始めたあなたと、いつかどこかでお会いできることを楽しみにしています。ようこそ、Androidアプリ開発の世界へ。

2018年9月 中川幸哉

中川 幸哉 (著)
技術評論社 (2018/9/21)、出典:出版社HP

目次

本書をお読みになる前に
はじめに
サンプルファイルのダウンロード

CHAPTER 1 Androidアプリ開発を始めよう

SECTION 01 Androidアプリ開発の基本を知ろう
アプリが動く携帯電話プラットフォーム
アプリを開発するためのツールと役割

SECTION 02 Androidアプリ開発に必要なものを揃えよう
Android Studioをインストールする
Android Studioの初期設定とAndroid SDKのインストールを行う

SECTION 03 Android Studioを日本語化しよう
日本語化パッケージをダウンロードする
日本語化パッケージを適用する

CHAPTER 2 基本のアプリを作成しよう

SECTION 01 どんなアプリを作るかを考えよう
どんなアプリを作りたいか
スケッチしてみる

SECTION O2 最初のプロジェクトを作成しよう
Android Studioでプロジェクトを作成する
プロジェクト内のファイルやフォルダの役割

SECTION 03 アプリを起動しよう
Androidアプリを動かす2つの方法
仮想デバイスを作成する
仮想デバイスを起動する
仮想デバイスを日本語化する 仮想デバイスでアプリを実行する

CHAPTER 3 アプリの見た目を変更しよう

SECTION 01 アプリのレイアウトの仕組みを知ろう
レイアウトエディター
ビューとレイアウトとウィジェット
ビューを画面内に配置する

SECTION O2 アプリの文字や装飾を変更しよう
プロフィール画像(仮)のマージンを調整する
TextViewのマージンを調整する
TextViewの文字を変更する
文字が長すぎる場合に末尾を省略する

SECTION 03 アプリに追加の要素をレイアウトしよう
自己紹介欄に使うビュー
自己紹介欄をレイアウトする
TextViewを設定する
画像リソースを準備する

CHAPTER 4 Javaプログラムを編集しよう

SECTION 01 AndroidのJavaプログラムの基本
Javaを練習する環境を作る
Javaの動作を確認する
Java のリテラルと変数
Java の基本的な計算
メソッドで処理を部品化する
変数の生存期間を定めるスコープ

SECTION O2 レイアウトに配置したビューを呼び出そう
レイアウトにIDを定義する
Javaの変数にビューを代入する

SECTION 03 Viewを操作しよう
TextViewの文字を変更する
文字の色や太さを変更する

SECTION 04 入力したデータを扱おう
入力欄とボタンを配置する
ボタンをタップした際の処理を追加する
入力欄から入力内容を引き出す
ラベルに入力内容を上書きする

SECTION 05 処理を分岐・繰り返しさせよう
条件式とif文
条件式の作り方
繰り返しとfor文

CHAPTER 5 ビンゴアプリを作成しよう

SECTION 01 アプリ作成のための準備をしよう
身近な課題を解決するアプリ
ビンゴアプリの仕様を考える
デザインを考える
プロジェクトを作成する。
画面を縦に固定してリセットを避ける

SECTION 02 出目の最大値を入力しよう
レイアウトを作成する
インスタンス変数で最大値を管理する

SECTION 03 ランダムな数字を表示しよう
レイアウトを作成する
ランダムな数字を表示する

SECTION 04 すでに出た数字が出ないようにしよう
重複を避けるための方法を考える
出目の履歴を残す
履歴にない数値だけを採用する

SECTION 05 出目の履歴を表示しよう
レイアウトを作成する。
履歴を表示する

索引

中川 幸哉 (著)
技術評論社 (2018/9/21)、出典:出版社HP

Android Studio パーフェクトガイド(Kotlin /Java対応版)

Androidアプリ作成の入門書

初心者がAndroid Studioに慣れるのに丁度良い本で、いろいろな機能を知るきっかけとなります。説明が細かく、かなり丁寧に説明されているため、置いて行かれずに読み進めることができます。とにかくAndroidで何かアプリを作りたいという人には必須の書籍です。

横田 一輝 (著)
技術評論社 (2019/7/27)、出典:出版社HP

はじめに

Android Studioは、「ソフトウェアを作るためのソフトウェア」とも言える「IDE(統合開発環境)」の一つであり、Androidスマートフォンやタブレット用のアプリを作成するために特化したIDEです。IDEの利用は、法人向けの業務システムの開発に限らず、一般消費者向けのアプリケーション開発をはじめ、実に様々なソフトウェア開発において、必要不可欠となっており、その中でもAndroid Studioは、Androidの出所であるGoogle社による安定のIDEと言えます。

本書は、これからプログラム開発を始めてみようという個人の皆様はもちろんのこと、「IT業界に就職したけれども、実はこれから初めてAndroidアプリを開発する」あるいは、Androidアプリ開発において、「このプログラムをテストして」「アプリケーションをビルドして」と言われても、「実は手順をきちんと把握していない」、「そもそもビルドの目的やテストの意味がよくわかっていない」などといった新人エンジニアの皆様を対象としており、Androidアプリ開発を始める前に、Android Studioでできることをさらっと知っておく書籍を目指しています。

●謝辞
本書の出版にあたり、多大なご協力をいただきました、株式会社ジェイテック代表取締役社長中川優介様、そして、執筆の機会をいただいた、第1編集部原田崇靖様に深く感謝いたします。

2019年6月末日 横田一輝

横田 一輝 (著)
技術評論社 (2019/7/27)、出典:出版社HP

目次

第1章 Android Studioとは
1-1 Android Studioの概要
Android Studioは統合開発環境
統合開発環境(IDE)の歴史
Androidアプリ開発のIDEとして定着
Android Studioで利用されるプログラム言語
Kotlinとは
COLUMN Java VMとは
Kotlin Java
COLUMN Kotlin Foundation(Kotlin 財団)

1-2 Android Studioでできること
Android Studioが利用できるプラットフォーム
Android Studioの機能
Android Studioで開発できるアプリ
COLUMN Androidのバージョンについて

第2章 Android Studioをはじめよう
2-1 Android Studioをインストールする
Android Studioのインストール前に知っておくこと
Android Studioを入手する
COLUMN プラットフォーム別のシステム要件
Windows10(64ビット版)のパッケージをインストールする

Android Studioの初期設定
COLUMN ユーザーアカウントやフォルダ名が日本語の場合は注意が必要
Android Studioの初期画面
Android SDKの保存場所を確認する
COLUMN Android SDKの保存場所について
Android Studio SDKの主なツール
SDK Platformsを使う

2-2 Android Studioの日本語化
Pleiades 日本語化プラグインとは
Pleiades 日本語化プラグインの導入
COLUMN 日本語化を英語に戻すには
Android Studioの起動と終了

2-3 Android Studioのプロジェクト構成
Android Studioの開発ワークフロー
Android Studioの基本構成
Android Studioのメインウィンドウ
プロジェクトの構造
COLUMN プロジェクトで使えるキー操作

第3章 Android Studioの基本機能を理解する
3-1エミュレータで実行する仮想デバイスを作成する
仮想デバイスを作成する
COLUMN ABIとは
仮想デバイスを起動する
COLUMN AVD構成の検証 詳細設定項目について
仮想デバイスの日本語化

3-2プロジェクトを作成する
プロジェクトを作成する
COLUMN パッケージ名
アプリを実行する
ボタンを追加する
COLUMN パッケージ名のディレクトリ

3-3開発に関する基礎知識
プログラミングの流れ
コンパイルとは
デバッグとは
COLUMN デバッグとテスト
ビルドとは
テスティングとは
リファクタリングとは

3-4開発サイクルを理解する
Androidアプリ開発の工程
アクティビティを追加しないプロジェクトの作成
レイアウトファイルの作成
COLUMN リソースファイルについて

ソースファイルの作成
マニフェストファイルを編集する
COLUMN コードでのレイアウト作成
ビルド・実行(実機でアプリを実行する)
アプリを公開する
公開用APKの発行
COLUMN 署名バージョンについて

第4章 レイアウトエディターの基本操作
4-1レイアウトエディターの構成要素
レイアウトエディターとは
新規プロジェクトの作成
レイアウトエディターの画面構成
レイアウトエディターの構成要素

4-2レイアウトの作成と編集
Android Studioで利用できる主なレイアウト
Linear Layoutを使う
COLUMN 属性の種類は「検索」が便利
COLUMN 単位について

Table Layoutを利用する
COLUMN gravity Łlayout_gravity
ConstraintLayoutを利用する
COLUMN レイアウト描画のプロセス
COLUMN 「@string/app_name」とは

4-3 XMLレイアウトファイルの編集
XMLコードを直接編集する方がよい場合
レイアウトファイルLinearLayoutを作成する
テキストエディターでレイアウトファイルの構造を確認する
COLUMN xmlnsとは テキストエディターでボタンを配置する

編集結果をプレビューする
COLUMN XMLコード補完
ボタンを複製して編集する
ConstraintLayoutへの変換
COLUMN レイアウトの変換について
COLUMN リソースマネージャーとレイアウトエディター

第5章 エディターの機能と基本操作
5-1エディターの基本操作
エディターの構成
コード補完機能の使い方
COLUMN 補完機能の項目

コード補完を設定する
エディターの表示設定
COLUMN ソフト折り返しとハード折り返し
画面の分割表示
分割方向を変更する
COLUMN 変数名やメソッド名の命名について

5-2コーディングに役立つ機能
エディターウィンドウでのコピー&ペースト
テキストの貼り付け形式について
エディターウィンドウでの範囲選択
マルチカーソル
ソースコード編集に便利なショートカットキー
COLUMN メジャーなショートカットキーを使いこなそう

第6章 デバッグの機能と操作
6-1エラーの種類とデバッグ
プログラムのエラーとは
構文エラー(syntax error)
実行時エラー(runtime error)
論理エラー (logic error)
COLUMN クイック修正の修正候補について

6-2デバッガーの基本操作
デバッグ対象となるアプリ
ブレークポイントを設定する
デバッガーを起動する
デバッグツールウィンドウを使う
COLUMN ステップインが抑制されているメソッドとは

ステップ機能(ステップオーバー)
COLUMN 監視式の追加
ステップ機能(ステップイン)
COLUMN 「JetBrainsデコンパイラー」ダイアログボックス

6-3高度なデバッグ操作
今回のデバッグ対象となるアプリ
実行中の変数やオブジェクトの値を変更する
高度なブレークポイントの設定(条件を指定してブレークポイントを設定)
COLUMN 「ブレークポイント」ダイアログボックス
式を評価する
「式の評価」で命令を実行する

6-4その他のデバッグテクニック
Logcatの利用
Logcatウィンドウの結果を絞り込む
Logクラスのメソッド
COLUMN Logcatにログメッセージが表示されない場合

第7章 Android Studioのリファクタリング手法
7-1リファクタリングの目的
なぜリファクタリングが必要なのか
リファクタリングの目的
リファクタリングを実施すべきタイミング
COLUMN リファクタリング作業の注意点

7-2サポートしているリファクタリング機能
リファクタリング機能の利点
Android Studioがサポートしているリファクタリング機能
COLUMN 文字列の下に青い波線

7-3リファクタリングを体験する
異なるクラスにあるクラス名を変更する
連続的にリファクタリングを行う
合計金額の計算処理を関数にする
リファクタリング作業によるエラーの修正
関数を別のファイルに移動させる
関数をクラスに入れる
COLUMN Javaの場合のメソッドの移動

第8章 Android Studioでのテスト手法と分析機能
8-1テスティングの目的
ソフトウェア開発におけるテスト
Android Studioでできるテスト
JUnitによるテストのメリット
JUnitの観点はホワイトボックステスト
ホワイトボックステストと網羅条件

8-2 JUnitによる基本テスト
Local Unit Test (ローカル ユニット テスト)の基本
テストされるコードとテストするコード
assert Equalメソッドを使う
COLUMN Assertクラスの主なメソッド
Kotlinでのローカル ユニットテスト
Kotlinで「Instrumented Unit Tests」テストを行う
UI(ユーザーインターフェース)のテスト

8-3 Android Studioの分析機能
インスペクション機能を使う
COLUMN 「インスペクション結果」ウィンドウにあるアイコンについて
「タイポ」の対象にならないようにする
COLUMN Lint
インスペクションに関するメニュー
COLUMNインスペクション結果を元に戻す場合
分析に関するメニュー

8-4インスペクションの実際
インスペクション結果「セキュリティ」の例
プロファイルを共有する
インスペクション結果 「パフォーマンス」の例
インスペクション結果 「ユーザビリティ」の例
インスペクション結果 「国際化対応」の例
COLUMN コーディング規約とは

第9章 Gradleによるビルド方法
9-1ビルドとビルドツール
ビルドとビルドツール
COLUMN Maven
Gradleの特徴
ビルドプロセス

9-2 Gradleツールと機能
Gradleツールウィンドウ
Gradleの自動同期をオフにする

9-3 Gradleによるビルドの実際
ビルドファイル「build.gradle」
2つの「build.gradle」の定義の実際
Gradleでライブラリの記述を確認する
Gradleで独自のライブラリを追加する
ライブラリの追加の実際
ライブラリの機能を使う
COLUMN プラグインとライブラリ

Gradleのビルドスクリプト
Gradleタスクを作成する
Gradleタスクにアクションを追加する
コマンドラインでのタスクを実行する
COLUMN リポジトリーを変更する

第10章 Gitによるバージョン管理
10-1チーム開発に必要な前提知識
グループとチームの違い
チーム開発とチームワーク
チーム開発で重要なバージョン管理
COLUMN チケット管理とは
バージョン管理システム
COLUMN 分散管理型バージョン管理システムのブランチ機能

10-2 Gitによるチーム開発
GitとGitHub
GitHubとは
GitHubを利用してみる
COLUMN リポジトリーを任意のディレクトリーに作成する

10-3 Gitの実践
GitHubのプロジェクトを共有する(バージョン管理)
COLUMN コミット時に警告が表示された
GitHubのプロジェクトを共有する(ブランチによるパージョン管理)

付録 macOSでAndroid Studioを使う
索引

横田 一輝 (著)
技術評論社 (2019/7/27)、出典:出版社HP

TECHNICAL MASTER はじめてのAndroidアプリ開発 第3版 AndroidStudio3対応

Androidアプリ開発がはじめてでもよくわかる

現場で使われているAndroid-JAVAのUI等の使い方が丁寧に詳しく載っています。HTTP通信のサンプルはもちろん、アプリ公開手順まで載っているため、はじめてのアプリ公開もスムーズに行うことができます。内容も濃く、初学者にうってつけの一冊です。

山田 祥寛 (著)
秀和システム; 第3版 (2019/8/10)、出典:出版社HP

はじめに

本書は、Android環境でのプログラミングを初めて学ぶ人のための書籍です。Androidプログラミングの学習書ということで、そのコーディングに利用するJava言語については、最低限理解していることを前提としています。本書でもできるだけ細かな解説を心がけていますが、Javaそのものについてより詳しく学びたいという方は、拙著「独習Java新版」(翔泳社)などの専門書を合わせてご覧頂くことをお勧めします。本書の構成と各章の目的を、以下にまとめます。

導入編(第1章:イントロダクション~第2章:はじめてのAndroidアプリ)
そもそもAndroidとはなんぞやというところから始まり、Androidプログラミングのための環境を準備します。また、実際にプロジェクトを作成し、簡単なアプリケーションを作成していく過程で、Androidにおける基本的な開発の流れ、アプリの構造を理解します。

基本編(第3~7章:ビュー開発)
導入編で大まかな開発の流れを理解できたところで、ウィジェットやレイアウトを利用してアプリの見た目(ビュー)を開発する方法を理解します。ここでは、単に見た目だけでなく、画面から入力されたデータをどのように受け取り、どのように結果に反映させるかという点についても学びます。

応用編(第8章:インテント〜第11章:サービス開発&アプリの公開)
画面同士を連携させるためのインテント、SQLiteデータベース、センサー/GPSなどのハードウェアとの連携、そして、裏方の処理を担うサービスの開発など、より実践的なアプリを開発していくためのさまざまなテーマについて学びます。これらを理解する過程で、Android習得の更なるステップアップの手がかりとしてください。

本書が、Android開発に興味を持ったあなたにとって、はじめの一歩として役立つことを心から祈っています。
なお、本書に関するサポートサイトを以下のURLで公開しています。Q&A掲示板はじめ、サンプルのダウンロードサービス、本書に関するFAQ情報、オンライン公開記事などの情報を掲載していますので、あわせてご利用ください。
https://wings.msn.to/

最後にはなりましたが、タイトなスケジュールの中で筆者の無理を調整いただいた秀和システムの編集諸氏、そして、傍らで原稿管理/校正作業などの制作をアシストしてくれた妻の奈美、両親、関係者ご一同に心から感謝いたします。

2019年7月吉日 山田祥寛

山田 祥寛 (著)
秀和システム; 第3版 (2019/8/10)、出典:出版社HP

目次

本書の読み方

01→イントロダクション

01-01 Android の概要を理解する [Android・ART・バージョン]
●Androidとは?
●Androidのアーキテクチャ
●Androidランタイムとは?
●Androidのバージョン

01-02 Android の開発環境を整える [JDK・Andoid Studio・Android SDK・AVD]
●Androidプログラミングに必要なソフトウェア
●Android Studioのインストール方法
●AVDの作成

01-03 Android Studioの画面構成を理解する [ツールウィンドウ]
●プロジェクトウィンドウ・エディター
●構造 (Structure)
●Logcat_
●Inspection
●ターミナル
●TODO

02→はじめてのAndroidアプリ

02-01 Android アプリのプロジェクトを理解する [プロジェクトの構造]
●プロジェクトの作成
●実機での起動

02-02 サンプルアプリの内容を確認する [アプリの構造]
●サンプルアプリの基本的な構造
●アプリの「ウィンドウ」を定義する – Activity クラス
●補足:サポートライブラリ
●補足:Rクラスとは?
●アプリの見栄えを定義する – レイアウトファイル
●文字列リソースを管理する – strings.xml
●アプリの基本情報を定義する – マニフェストファイル

02-03 アプリ開発の基本キーワードを理解する [レイアウト・イベント・ログ・デバッグ]
●画面をデザインする – レイアウトエディター
●ボタンクリック時の処理を定義する-イベントハンドラー
●ボタンクリック時の処理を定義する イベントリスナー
●補足:匿名クラス
●補足:ラムダ式
●端末の回転時に画面の状態を維持する
●文字列をトースト表示する
●ログを出力する – Logcat ビュー
●アプリをデバッグする

03→ビュー開発(基本ウィジェット)

03-01 基本的な入力/出力を理解する [TextView ImageView. EditText]
●テキストを表示する – TextView
●画像を表示する – ImageView
●自由テキストを入力する – EditText

03-02 入力ウィジェットを理解する
[CheckBox.ToggleButton・RadioButton・SeekBar・Spinner]
●オン/オフのボタンを作成する – CheckBox
●オン/オフを作成する(2) – ToggleButton
●単一選択のボタンを作成する – RadioButton
●シークバーを作成する – SeekBar
●スピナーを作成する – Spinner

03-03 便利ウィジェットを活用する [RatingBar・WebView]
●評価を★印で表示/入力する – RatingBar
●アプリにWebページを埋め込む – WebView

04→ビュー開発(ListView / RecyclerView)

04-01 リスト作成の基本を理解する [ListView]
●配列リソースをリストに整形する
●Javaコードからリストを生成する

04-02 ListView のイベント処理を理解する
[Onltem ClickLstener. OnScrollListener. OnQueryTextListener]
●クリック可能なリストを作成する単一選択可能なリストを生成する
●複数選択可能なリストを生成する
●専用の選択画面を持ったリストを準備する
●リストのスクロールを検知する
●検索機能付きのリストを作成する – SearchView

04-03 リストのレイアウトをカスタマイズする [SimpleAdapter. BaseAdapter]
●SimpleAdapter で ListViewをカスタマイズする
●自作のアダプターを利用する

04-04 より柔軟性のあるリストを作成する [RecyclerView Card LView]
●レイアウトファイルを作成する
●アダプタークラスを作成する
●アクティビティを準備する

05→ビュー開発(レイアウト&複合ウィジェット)

05-01 ウィジェットの配置方法を理解する [レイアウト]
●ウィジェットを縦/横一列に配置する – LinearLayout
●ウィジェットを格子状に配置する – TableLayout
●相対的な位置関係でウィジェットの配置を決める – ConstraintLayout

05-02 タブパネルやフリップ可能なビューを作成する
[ViewPager・TabLayout・ScrollView]
●タブパネルを作成する – TabLayout
●フリップ可能なパネルを生成する – ViewPager
●画面のスクロールを有効にする – ScrollView

06→ビュー開発(ダイアログ&メニュー)
06-01 さまざまなダイアログを作成する
[AlertDialog・DatePickerDialog・TimePickerDialog]
●シンプルなダイアログを表示する
●[はい][いいえ][キャンセル]ボタンを表示する
●アクティビティからダイアログに値を引き渡す
●リスト選択型のダイアログを作成する
●リスト選択型のダイアログを作成する – ラジオボタン
●リスト選択型のダイアログを作成する – チェックボックス
●日付ダイアログを作成する
●時刻入力ダイアログを作成する
●自作のダイアログボックスを作成する

06-02 オプションメニューやコンテキストメニューを作成する [メニュー]
●オプションメニューを作成する
●コンテキストメニューを表示する
●メニューを動的に作成する

07→ビュー開発 (応用)

07-01 ビュー描画の基本をおさえる [View Canvas Paint]
●ビューの正体
●カスタムビューの基本
●さまざまな図形を描画する

07-02ビュー描画の理解を深める [Path・SurfaceView]
●簡易な落書き帳アプリを作成する
●高速描画に対応したSurfaceViewクラス

07-03 アプリにアニメーション機能を実装する
[Tweenアニメーション・Propertyアニメーション・Frameアニメーション」
●Tweenアニメーションの基本
●さまざまなTweenアニメーション
●Tweenアニメーションをプログラムだけで実装する。
●アニメーションの過程をカスタマイズする – インターポレーター
●Frameアニメーションの基本
●Frameアニメーションをプログラムだけで実装する
●Propertyアニメーションの基本
●Propertyアニメーションをプログラムだけで実装する

07-04 アプリのデザインを一元管理する [テーマ・スタイル]
●スタイルの基本
●テーマの基本

08→インテント

08-01 インテントの基本を理解する [Intent・ライフサイクル]
●インテントの種類
●アプリ内でアクティビティを切り替える
●アクティビティの表示方式とライフサイクル

08-02 画面間でデータを授受する [Intent.startActivityForResult]
●アクティビティ起動時にデータを引き渡す
●呼び出し先のアクティビティから結果を受け取る

08-03 「やりたいこと」からアプリを起動する [暗黙的インテント]
●暗黙的インテントの基本
●さまざまなアクションの指定方法
●暗黙的インテントを受け取る

08-04 画面サイズの異なるデバイスに対応する [フラグメント]
●一覧/詳細画面を持ったアプリを実装する
●一覧/詳細画面をスマホ環境に対応する

08-15 画面遷移を伴うアプリを視覚的に設計する [ナビゲーションエディター]
●ナビゲーションエディターの基本
●デスティネーション間で値を引き渡す
●ページタイトルをツールバーに反映させる

09→データ管理

09-01 ファイルにデータを保存する [openFileInput open FileOutput]
●データをファイルに保存する
●データをファイルから読み込む
●ファイル名を指定して保存する
●指定されたファイルを読み込む

9-02 データベースにデータを保存する [SQLite]
●データベース概論
●SQLiteデータベース利用の流れ
●SQLiteデータベースを開く – SQLiteOpenHelper
●補足:複数件のデータを効率よく登録する方法
●SQLiteデータベースの内容を確認する
●書籍管理アプリを作成する
●更新処理を実装する

09-03 アプリの設定情報を管理する [Preference]
●基本的な設定画面を作成する
●さまざまなPreference

10→ハードウェアの活用

10-01 位置情報を取得する [Googleマップ . Fused Location ProviderApi]
●Googleマップを利用するための準備&設定
●地図表示の基本を理解する
●表示切替ボタン/ズームボタンを設置する
●現在位置を監視&表示する

10-02 HTTPでサーバーと通信する
[Http URL Connection. AsyncTask. AsyncTaskLoader]
●HTTPの基本
●ネットワーク通信の基本
●AsyncTaskクラスを利用した非同期処理の実装
●進捗状況をプログレスバーに表示する
●HTTP POSTでサーバーにデータを送信する
●ネットワーク経由で構造化データを取得する
●AsyncTaskLoaderクラスによる非同期処理

10-03 音声ファイルを再生/録音する [MediaPlayer・MediaRecorder]
●音声ファイルを再生する
●音量を調整する
●音声を録音する

10-04 ハードウェアのその他の機能 [Sensor・GesutureDetector・Vibrator]
●Androidの各種センサーを利用する
●加速度センサーでシェイクを検出する
●複雑なタッチイベントを処理する – GestureDetectorクラス
●バイブレーション動作を実装する

11→サービス開発&アプリの公開

11-01 サービスを開発する [ServiceIntentService BroadcastReceiver.Notification]
●サービスの基本
●サービスで定期的なタスクを実行する
●別スレッドで動作するサービスを定義する
●プロードキャストでアクティビティにデータを引き渡す
●サービスの状態をステータスバーに通知する

11-02 自作のアプリを公開する [Google Play]
●Googleアカウント&デベロッパーアカウントの作成
●デジタル署名したパッケージファイルの作成
●Google Playへのアプリ登録&公開

索引

コラム
Androidの歴史
プロジェクトを.zipファイル化する
Android Studioの日本語化
新たなAndroidアプリ開発言語「Kotlin」
Androidをもっと学びたい人のための関連書籍
日本語化したAndroid Studioを元に戻すには?

山田 祥寛 (著)
秀和システム; 第3版 (2019/8/10)、出典:出版社HP

本書の読み方

■動作確認環境
本書内の解説/サンプルプログラムは次の環境で開発&動作確認しています。
・Windows 10 Pro (64bit)
・Android Studio 3.4
・Android仮想デバイス(Android 9.0)
・実機 (Android 8.0)

■配布サンプルについて
・本書のサンプルプログラムは、著者が運営するサポートサイト「サーバサイド技術の学び舎 – WINGS」(https://wings.msn.to/) – [総合 FAQ/訂正&ダウンロード]からダウンロードできます。
・ダウンロードサンプルは、以下のようなフォルダー構造となっています。

■サンプルプロジェクトの利用方法
サンプルプロジェクトをAndroid Studio環境で利用するには、セクション 02-02の手順を終えた上で、以下のような手順でサンプルを起動してください。

[1] サンプルプロジェクトを解凍する
サンプルプロジェクトは、ダウンロードサンプルに /samples/chapXX/<プロジェクト名>.zip(XXは章番号)というファイル名で保存されています。インポートしたいプロジェクトを、適当なフォルダーにあらかじめ解凍しておいてください。/<プロジェクト名>という名前のフォルダーができたことを確認します。

[2] サンプルプロジェクトを開く
[Welcome to Android Studio]ウィンドウから[Open an existing Android Studio project]をクリックします。既にAndroid Studioの開発画面を開いている場合は、メニューバーの[File] – [Open]をクリックします。
[Open File or Project]ダイアログが開くので、起動したいプロジェクトを選択して、 [OK]ボタンをクリックします。

[3] プロジェクトの内容を確認する
プロジェクトを開けたら、プロジェクトウィンドウに以下のようにサンプルプロジェクトの内容が表示されていることを確認してください。

本書の構成

山田 祥寛 (著)
秀和システム; 第3版 (2019/8/10)、出典:出版社HP

作ればわかる! Androidプログラミング Kotlin対応 10の実践サンプルで学ぶAndroidアプリ開発入門

画像が多く理解しやすい

作れるアプリの種類も豊富で色々な機能の実装ができるので、「とりあえず何か作りたい!」という方におすすめの1冊です。
オールカラーでスクリーンショットが多く掲載されているため非常にわかりやすく、Androidプログラミングを勉強する上でとても参考になります。

はじめに

本書は、2016年に第4版を刊行した『作ればわかる! Androidプログラミング』のKotlin版です。版を重ねるたびに、サンプルアプリが少しずつ難しくなり、それにつれて入力しなくてはいけないコードが多くなっていました。実際に作って試すことが大変なものもあったかもしれません。そこで本書では、“作ればわかる”の原点に戻り、「ちょっとアプリ作ってみたいな」「自分にもAndroidのアプリを作れるかな」という初級者読者に、少ないコードで多くの効果を得られるアプリ作りを体験してもらえる内容を目指しました。

Androidアプリ開発環境であるAndroid Studio3.xの新しいレイアウトエディタは、まったくXMLコードを入力しなくてもConstraint Layoutを使ってスマホの画面レイアウトをビジュアルに手早く作成できるようになっています。画面レイアウトは、XMLをハードコーディング(手入力)せずに作成します。

さてここで少し、Androidアプリの開発で使うプログラミング言語に目を向けてみます。世の中にはたくさんのプログラミング言語があるのに、新しいプログラミング言語が次々に生み出される理由はなんでしょうか?「思わぬバグ(プログラムの障害のこと)を作ってプログラムの実行時に問題が起きないようにしたい。そのために安全なプログラミング言語を使いたい」という理由がまず考えられます。

もう1つは、「面倒なコードは書きたくない。書きたいのは本質的な目的に沿ったコードだけなんだ」という理由です。お作法や規則にしたがった目的とは直接関係のないコード、またはそのように感じられるコードは書きたくない、という欲求がプログラマにはあります。

そこで、本書では第4版まで使ってきたJava言語ではなく、新しいKotlin言語を使ってAndroidアプリを作成します。Kotlin言語は、null安全です。null(ヌル、ナル)は、何もない、何も示さないを表します。実行時に、プログラム作成時には予想しなかった箇所にnullが入ってしまい、プログラムが実行時エラーを起こす、という残念な事態を避けることができます。

また、Javaに比べてコードの書き方も簡潔になっています。たとえば、JavaでAndroidアプリを作るときに面倒で仕方がなかった、次のようなコードがあります。

ボタンがクリックされたら、OnClickListenerインターフェースを実装するクラスのインスタンスを生成して、onClick時に「処理」をするといった、2・3行書くうちにonClickという言葉が3回も出てくるコードです。これをKotlinなら以下のように簡潔に記述できま
す。

このように、Kotlinはより本質的な処理の記述に専念しやすい言語ですが、これまでにない概念や方法も取り入れられています。初級者には難しい部分もありますが、本書を手に取っていただいた方の目的は、Kotlin言語の文法の学習ではなく、「Androidアプリを作成できるようになること」だと思います。Androidアプリに必要な機能から理解していきましょう。

新しい言語が伝統的な言語より優れているのは当たり前かもしれませんが、今まで作ったプログラム資産がまったく使えないのではもったいないですね。Kotlinは、Java同様にJVM(Java仮想マシン)上で動作するため、Javaで作成されているライブラリ(プログラム作成を助けてくれるプログラム集)を利用することも可能です。
KotlinとAndroid Studio 3.Xなら、Androidアプリ作成がグッとカジュアルになります。ではさっそくKotlin言語を使ってAndroidアプリを作っていきましょう!

金宏和實

本書を読む前に

●読者対象と前提知識
本書は、Android SDKを使用して、
・とにかくなにか作りたい
・Androidアプリケーションを作りたいけど、なにから始めればいいのかよくわからない
・アプリケーションを作りながらプログラミングのコツを覚えたい
という方を対象としています。

アプリケーションの作成を通じて、Android SDKでよく使われる機能の使い方を身につけていく構成になっているため、次に示す技術の基礎的な知識があるとスムーズに読み進めることができます。
・Kotlin
・Android Studioの使い方

ただし、Kotlin初心者の方にも読んでいただけるように、理解のポイントとなるKotlinなどの基礎的な事柄についてもできるだけ解説するよう心がけました。

●本書の構成
第1章と第2章は、Androidアプリケーションを作るために必要な基礎知識を得るための章となっています。Androidの概要や特徴、Androidプログラミング/開発の基礎知識、Android Studioで開発を行うための環境の準備方法について説明しています。第3章では、Kotlin入門として、Kotlin言語の基本的な文法について説明しています。第4章以降は、Android Studioを使用して、1章につき1つのAndroidアプリケーションを作成していきます。

各章のおおまかな構成は次のとおりです。
・作成するアプリケーションの概要
・アプリケーションを作成するために必要な機能と知識の解説
・アプリケーションの作成

Kotlin言語の基本は第3章で実際に入力しながら学習していきますが、各章でも折りに触れてKotlin言語の特徴的な仕様やテクニックを解説します。第4章から、各章で1つのアプリを作っていきます。アクティビティやインテント、共有プリファレンスへのデータ保存など基本的なものからスタートし、トランプの画像(第4章)や料理の画像(第6章)を使うなど見た目にも楽しいアプリを作っていきます。

第7章以降、センサーについて詳しく解説したうえで加速度センサーを利用するアプリを作ります。倒れたらLEDを点灯するアプリ(第7章)や盗難防止用に録音した音声を再生するアプリ(第8章)、それから加速度センサーを使った玉転がしゲーム(第9章)も作ります。玉転がしゲームのSurfaceView上には、ブラックホールが出現します。

また、Androidアプリ開発ではこれまでSQLiteデータベースを使うことが多かったのですが、本書(第10章、第11章)ではオブジェト指向のRealmデータベースを使います。Realmデータベースでは、SQL文を使わずにデータの取得や保存ができます。

また、Googleマップを表示し、GPSで位置を取得してマーカーを立てる、Androidならではのアプリも作成します(第11章)。アプリ開発に必要な知識が積み上がっていくように章を構成していますが、第4章くらいまで順に進めていただければ、あとは好きなところからアプリを作ってもかまいません。ぜひ、新しいAndroid StudioとKotlinによるプログラミングを楽しんでください。

目次

第1章 アプリを作るための準備
1.1 Androidってなんだろう?
Androidの特徴
アプリ作成に必要なもの

1.2 Android Studioの動作環境

1.3 Android Studioのインストール Windowsの場合
ダウンロード
インストール
セットアップ
エンコーディングの設定

1.4 Android StudioのインストールMacの場合

第2章 はじめてのアプリ作成
2.1プロジェクトを作成してみよう

2.2レイアウトエディタを使ってみよう
レイアウトエディタの画面
ConstraintLayoutを使ってみる

2.3作るアプリ
プロジェクトの作成
strings.xmlの編集
ボタンの追加
リソースの多言語対応
ボタンクリック時の処理

2.4エミュレータでアプリを実行しよう
AVD Managerを起動する
アプリをエミュレータで実行する
言語を変更して多言語対応を確認する

第3章 Kotlin入門
3.1 Kotlinの特徴

3.2 Kotlinの学習環境
Kotlin REPL
TRY ONLINE

3.3変数と基本データ型
valとvar
データ型の変換

3.4配列とコレクション
配列
リスト(List)
セット(Set)
マップ(Map)
レンジ(Range) オブジェクト

3.5制御構造
条件分岐
繰り返し

3.6関数
ラムダ式

3.7クラス
コンストラクター
プロパティ
メソッド

3.8 SAM変換

3.9スコープ関数
with関数
apply演算子
let演算子
run関数

第4章 ハイ&ローゲーム
4.1作るアプリ
プロジェクトの作成

4.2レイアウトエディタで画面を作る
背景色の指定
ビューの配置

4.3プログラムを作成する

4.4アクティビティとライフサイクル
ゲームを開始する処理
ボタンがクリックされたときの処理

第5章 名刺切らしてまして
5.1作るアプリ
プロジェクトの作成

5.2画面の向きを固定する

5.3いろいろなEditText 編集画面を作る
ビューの配置

5.4共有プリファレンスによるデータ保存
Androidのデータ保存方法
共有プリファレンスの利用
共有プリファレンスへデータ保存

5.5オプションメニューとインテント 名刺画面を作る
ビューの配置 共有プリファレンスからデータ読み込み
オプションメニューを使う

5.6実機で実行しよう

第6章ご飯なんにする?
6.1作るアプリ
プロジェクトの作成

6.2さまざまな画像を利用する
背景画像を設定する
メニューにホームアイコンを表示したい
料理の画像を準備する
ビューの配置
初期表示する画像を作る

6.3オプションメニューの階層化
オプションメニューを作る
メニューを階層化する

6.4コンテキストメニューと暗黙のインテント
コンテキストメニューを作る
暗黙的なインテント

第7章 和室に入ったのだ〜れ?
7.1作るアプリ

7.2 Android端末に搭載されているセンサーを調べる
プロジェクトの作成
センサーの情報を表示する

7.3加速度センサーを使う
加速度とは?
プロジェクトの作成
加速度センサーの値を取得する方法
Kotlinでインターフェイスを実装する
センサーの利用手順

7.4スマホが倒れたら、カメラのLEDを点灯させる
プロジェクトの作成
ビューの配置
傾きを検知してLEDを点灯する処理

7.5サービス化する
プロジェクトの作成
MainActivityの作成
サービスの作成
サービスとアクティビティの違い

第8章 盗難防止アラーム
8.1作るアプリ
8.2ボイスレコーダーなどで録音した音声を使う

8.3振動したら、音声を再生するサービスを作る
プロジェクトの作成
起動時の画面の作成
rawディレクトリを作成して、音声ファイルをコピーする
サービスの追加
アクティビティのコード
AlarmServiceクラスのコード

第9章 ブラックホールを避けろ!
9.1作るアプリ

9.2加速度と地磁気を使う方位センサー
プロジェクトの作成
getOrientation()で角度を取得する

9.3 方位センサーをゲームに活用する
プロジェクトの作成とビューの配置
SurfaceViewを使う
クラスを作ってブラックホールを登場させよう

第10章 若くても血圧は記録せよ
10.1作るアプリ
モバイルデータベースRealm

10.2 RecyclerViewを配置する
プロジェクトの作成
RecyclerViewの概要
activity_main.xmlの編集
content_main.xmlの編集

10.3 Realmを使う
build.gradleの編集
Applicationクラスを継承するクラスを作成する
モデルクラスの作成
MainActivityから血圧を登録/編集するアクティビティを呼び出す
EditActivityの作成

10.4 RecyclerViewで一覧表示する
[1] レイアウトファイルの作成
[2] RecyclerView.ViewHolderを継承するクラスの作成
[3] RecyclerView.Adapterを継承するクラスの作成
[4] MainActivityに処理を追加する
最後の仕上げ 変更と削除機能を追加する

第11章 メモメモタイム
11.1作るアプリ

11.2 Googleマップの表示
Google Play Servicesのインストール
プロジェクトの作成
Google Maps APIキーの取得
マップの設定

11.3 GPSから位置情報を取得する
Runtime Permission
Runtime Permissionで使うメソッド

11.4メモメモタイムを作る
プロジェクトの作成
手動でGoogleマップを使えるようにする
地図と現在地を表示する。
FusedLocationProviderClientで緯度・経度を取得する

11.5 Realmデータベースに記録する
Realmのインストール
Applicationクラスを継承するクラスを作成する
モデルの作成
MainActivityから一言メモを登録するアクティビティを呼び出す
AddActivityの作成 RealmデータベースからMemoデータを読み出してマーカーを立てる

第12章 わたしはウクレレ
12.1作るアプリ
プロジェクトの作成

12.2 SurfaceViewにウクレレのフレットと弦を描画する

12.3 タッチイベントで音を鳴らす
音を鳴らす準備 midiファイルとMediaPlayerを用意する
タッチイベントを取得し、タッチされた弦とフレットの音を鳴らす

検索キーワード

Memo Apache v2ライセンス
Memo Android StudioやSDKのアップデート
Memo Tip of the Day
Memo dp
Memo制約の補助機能

Memo最後に開いていたプロジェクトを開くべきか、開かざるべきか
Memo Intel HAXMとは
Memo Javagetter setter
Memo Kotlinのコメント
Memoメソッドチェーン

Memo hoge(ほげ)
Memo乱数の生成について
Memo KotlinでのIntentクラスのコンストラクターの書き方
Memo共有プリファレンスに保存したデータを見る
Memoペクター画像とラスター画像

Memo TODO Memo サービスとは?
Memoマニフェストファイルをのぞいてみよう
Memo AlarmServiceクラスにはonCreate()メソッドがない
Memoデバッグ実行
Memo世界座標系

Memoラジアン
Memoダブルバッファリング
Memo Gradle
Memoアノテーション
Memoメソッドチェーンの利用

Memoモデルクラスを変更したら?
Memoプラグインrealm-android とkotlin-kaptの記述順
Memo Google Maps Android APIキーの制限
Memo SHA-1 fingerprint(フィンガープリント)
Memoフラグメント
Memoコールバック
Memoライブラリのバージョン間の競合

作って楽しむプログラミング Androidアプリ超入門

超初心者でも楽しくアプリが作れる!

画像付きで細かく進むので、プログラミング初心者でも最後まで読み進めることができます。図やイラストが多く視覚的に分かりやすい上、コードも見やすいため、初心者でも置いて行かれずに学ことができます。この本を足掛かりに学びを深めていくのが良いでしょう。

WINGSプロジェクト 髙江 賢 (著), 山田 祥寛 (監修)
日経BP販売 (2019/4/27)、出典:出版社HP

はじめに

本書は簡単なゲームアプリを作成しながら、Androidプログラミングの基礎を学べる入門書です。全9章を順番に進めることで、Androidアプリの基礎知識から、開発環境の準備、Androidアプリ作成の基本、アプリ公開の手順までを学ぶことができます。

実施環境
●本書の執筆にあたって、次の環境を使用しました。
・Windows 10 Pro 180964ビットを標準セットアップした状態
・画面解像度をXGA(1024×768ドット)に設定した状態
・インターネットに接続できる状態
・Android 4.2のスマートフォン(第8章)

●本書でインストールする開発環境のバージョンは、次のとおりです。
・IDE:Android Studio 3.3.2
・Android SDK : Android 9.0 (API 28)

●お使いのパソコン/スマートフォンの設定や、ソフトウェアの状態によっては、画面の表示が本書と異なる場合があります。

●本書に掲載の情報は、本書執筆時点で確認済みのものです。Androidアプリ開発の分野は更新が頻繁に行われるため、本書の発行後に画面や記述の変更、追加、削除、URLの移動、閉鎖などが行われる場合があります。あらかじめご了承ください。

WINGSプロジェクト 髙江 賢 (著), 山田 祥寛 (監修)
日経BP販売 (2019/4/27)、出典:出版社HP

本書の使い方

●表記について
・メニュー名やコマンド名、ボタン名など、画面上に表示される文字は[ ]で囲んで示します。
例:[File]メニューから[Open]を選択する。
・キーボードで入力する文字は、色文字で示します。
例:C:\androidと入力する。
・コードは次のような書体になっています。→は、次の行に続いていることを示します。実際に入力するときは、改行せずに続けて入力してください。また、アルファベットの O(オー)と区別するために、数字のO(ゼロ)を「0」という文字で示しています。実際に入力するときは、数字の0を入力します。

●囲み記事について
・「ヒント」は他の操作方法や知っておくと便利な情報です。
・「注意」は操作上の注意点です。
・「用語」は本文中にある用語の解説です。
・「参照」は関連する機能や情報の参照先を示します。
・「参照ファイル」は本文中で使用するファイルが保存されている場所を示します。

●手順の画面について
・左側の手順に対応する番号を、色の付いた矢印で示しています。
・手順によっては、画面上のボタンや入力内容などを拡大しています。

WINGSプロジェクト 髙江 賢 (著), 山田 祥寛 (監修)
日経BP販売 (2019/4/27)、出典:出版社HP

目次

第1章 Androidとアプリについて知ろう
1.1 Androidを学ぼう
1.2 Androidアプリを学ぼう
1.3 Androidアプリ作成の流れ
1.4 本書で学ぶこと

第2章 アプリを作る準備をしよう
2.1 必要なソフトウェアをインストールしよう
2.2 Android Studioを設定しよう
コラム Android Studioを日本語してみよう
2.3 Androidエミュレーターを使ってみよう
コラム AVD (Android 仮想デバイス) マネージャー

第3章 Android Studioでアプリ作成を始めよう
●この章で学ぶこと
3.1 プロジェクトを作成してみよう
3.2 プロジェクトを確認してアプリを実行しよう
3.3 ファイルを操作してみよう

第4章 アプリでKotlinの基本を学ぼう
●この章で学ぶこと
4.1 変数を使ってみよう
4.2 クラスを使ってみよう
4.3 値を判定してみよう
4.4 配列を使ってみよう
4.5 かんたんなクラスを作ってみよう
コラム クラスのリファレンスを調べるには

第5章 アプリに画像を組み込もう
●この章で学ぶこと
5.1 アプリの画面をレイアウトしよう
5.2 アプリにレイアウトを反映させよう
5.3 ボタンが押されたときに画像を変更しよう
5.4 画像をアニメーションさせてみよう
5.5 アニメーションを合成してみよう
コラム Androidアプリのアイコン
コラム サンプルプロジェクトの読み込み方

第6章 アプリを完成させよう
●この章で学ぶこと
6.1 おみくじ箱のクラスを作ろう
6.2 アプリのイベントを学ぼう
6.3 おみくじの内容を表示しよう
6.4 おみくじ棚を準備しよう
6.5 画面のタッチを処理しよう

第7章 アプリから画面を呼び出そう
●この章で学ぶこと
7.1 メニューをつけてみよう
7.2 設定画面をつけてみよう
7.3 アプリの情報を表示するAbout 画面をつけてみよう
コラム Android Studio 3.3の新機能 (ナビゲーションエディター)

第8章 アプリをAndroid端末で動かそう
●この章で学ぶこと
8.1 実際のAndroid端末で実行してみよう
8.2 センサーを試してみよう
8.3 シェイクを検知してみよう
8.4 バイブレーション動作を追加しよう

第9章 アプリを公開しよう
●この章で学ぶこと
9.1 アプリを公開する準備をしよう
9.2 Google Playにアプリを登録しよう

索引

WINGSプロジェクト 髙江 賢 (著), 山田 祥寛 (監修)
日経BP販売 (2019/4/27)、出典:出版社HP

Androidアプリ開発の極意 ~プロ品質を実現するための現場の知恵とテクニック

上級者に向けたテクニック本

初級の本、中級の本と、経てきた方が、本当の開発者としての能力を獲得するための本です。
Android開発において注意すべき点がコンパクトにまとまっているので、アプリを開発する際、手元に置いて設計漏れ等はないかなどのチェックにも使えます。

木田 学 (著), おかじゅん (著), 渡辺 考裕 (著), 荒川 祐一郎 (著), 小林 正興 (著), テックファーム (監修)
技術評論社 (2017/3/16)、出典:出版社HP

 

はじめに

2014年に『良い Android アプリを作る 139 の鉄則』という本を執筆させていた だきました。非常に好評で、テックファームの新入社員やお客様から「書店でよ くみかける」と言われました。前回苦労して執筆したメンバーや素晴らしい編集 をしていただいた技術評論社に本当に感謝しております。

とりわけ第1章が特に好評で、ほかの開発会社向けに、「Android プロジェク トの進め方」というセミナーを何回か開催する機会もうまれました。受講者から Android プロジェクトの開発の進め方について多くの質問を受けました。出版後 の反応を体感して、もっと開発会社として伝えられることがあるのではないか? ということを考えるようになりました。

また出版後、Android L、M、N と OS がバージョンアップされ本を出した当初 と開発手法や開発のはまりポイントも変わってきました。前回は Android 2.1 ~ 4.4を中心とした内容になっていましたが、2017年2月現在市場で使用される端 末は Android 4.1~6.0 の割合が多くなっています。

そんな中、前回の書籍の内容をバージョンアップする本の改版というありがたいお話をいただきました。そこで、今回は前回の書籍から一新して最新の OS を 中心に対応ポイントや開発手法などを紹介しています。さらに、開発会社という視点で開発を行う場合に気をつけなければいけないことや話せる限りの実体験も踏まえて、開発会社としてどう Android を開発していかなければいけないのかという内容をより濃く伝えたいと思っています。

前回好評だったAndroid プロジェクトの進め方ももう少し突き詰めて、
・もっと円滑に Android 開発を進めるにはどうしたらよいか?
・顧客に納得してもらう価値のあるAndroid開発のポイントとは?
といったテーマを中心に解説しました。

2017年3月 著者代表 木田学

木田 学 (著), おかじゅん (著), 渡辺 考裕 (著), 荒川 祐一郎 (著), 小林 正興 (著), テックファーム (監修)
技術評論社 (2017/3/16)、出典:出版社HP

目次

はじめに

第1章 開発を円滑に進めるためのコツ
1.1 開発前に押さえておくべきポイントとは
1 顧客の理解を得る
2 対象端末を選定する
3 マルチスクリーンの対応可否を決める
4 Androidのバージョンを選定する.
COLUMN 大画面タブレット
5 責任範囲を明確にする
6 サービスインまでのスケジュールを立てる
7 顧客と調整すべきことを考慮する
COLUMN バージョンの定義をすりあわせる

1.2 開発から運用までをスムーズに進めるには
8 他社開発アプリを引き継ぐ時に注意すること
9 チーム内のルールを決める
10 アプリ開発中に押さえるべきポイント
11 サービスイン後に押さえておくべきポイント
COLUMN コードネームがお好き

第2章 意図しない動作を回避する
2.1 安全な Activity を設計する
12 最適な起動モードとフラグを選ぶ
13 Activity Alias で名称の変更に対応する
14 他アプリから使用させないようにする
15 Fragment の BackStackを理解する

2.2 Serviceの安定性を向上させる
16 Service が kill されることを考慮する
17 Service のクラッシュ対策をする

2.3 届かない Broadcast に対処する
18 Broadcast の配信順を考慮する
19 受信できないタイミングを考慮する
20 パーミッション要求を適切に行う

2.4 省電力時に機能制限を受ける前提で設計する
21 Doze と App Standby を考える
22 省電力時に機能制限を受けないようにする

第3章 強制終了しないアプリを作る
3.1 ANR回避のテクニック
23 アプリでANRを起こさないために
24 受信契機の ANR を回避する
25 遅くないレイアウトを考える
26 ANRの原因を分析する

3.2 適切な例外の処置
27 例外のハンドリング方針を決める
28 メインスレッドを強制終了させない
29 例外を考慮してメソッドを選ぶ

3.3 メモリ不足を解消するには
30 初期化を考慮する
31 不要なオブジェクトは破棄する
32 画像のメモリリークを防ぐ
33 画像サイズが大きい場合
34 メモリに優しいオブジェクトを考える
35 1つのアプリで複数のヒープを確保する
36 大量のヒープを確保する
COLUMN Android の仮想マシンに期待する

3.4 プロセス終了時に対処すべきこととは
37 Activity 強制終了時にデータを保持させる
38 Fragment 強制終了時にデータを保持させる
39 データの共有方法を考える

第4章 ユーザーにストレスを感じさせない アプリを作る
4.1 ストレスを感じさせないテクニックとは
40 ユーザーに状況を伝える
41 ProgressBar 以外の方法で進捗を表示する
42 スプラッシュ画面をデータロードに利用する
43 細かい配慮で処理効率をあげる
44 データの保存タイミングを考慮する
45 セルラー通信の時は重い通信を避ける
46 エラー発生時にもユーザーを不安にさせない
47 NDK の利用は慎重に判断する
COLUMN プロセッサー

4.2 使い勝手をよくするテクニック
48 新しいコンポーネントをチェックする
49 斬新なコンポーネントを取り入れる
50 誤操作を防ぐために

第5章 マルチスレッドを使いこなす
5.1 多種多様のスレッド利用方法
51 標準の非同期処理を理解する
52 標準の同期処理を理解する

5.2 AsyncTask や Loader を使いこなす
53 AsyncTask と AsyncTaskLoaderを切り分ける
54 AsyncTaskとAsyncTaskLoaderを使い分ける
55 AsyncTask、AsyncTaskLoader の中断処理を実装する
56 CursorLoader を使用する
57 標準 API を使わない実装について

第6章 不必要な処理を切り分ける
6.1 通信タイミングを決めるポイント
58 設計段階でバッテリ消耗を最低限に抑える
59決まった時間に通信することを避ける
60 電源の状態に応じて通信頻度を変える
61 インターネット接続の有無に応じて定期通信を止める
62 通信経路で通信状態を変える
63 バックグラウンド通信を制御する
64 通信データの量を減らす
65 データをまとめて取得して、通信回数を減らす
66 取得したデータをキャッシュして通信を減らす
67 プッシュ機能を用いる
68 リトライ間隔をあけて通信する
69 レジュームダウンロードに対応する
70 ユーザーが決められるようにする

6.2 機能を使用するタイミング
71 不要な画面の点灯を避ける
72 電池消費量を意識して位置情報を取得する
6.3 バックグラウンド処理の最適化 (N 機能)
73 省電力実装のプラクティス
74 Android N のバックグラウンド処理を変更する

第7章 重要なデータを守る
7.1 解析ツールの脅威
75 apkファイルはだれにでも抜き出せる
76 設定ファイルから機能が丸見えになる
177 ツールを使えばソースコードを覗ける
178 エミュレータでかんたんにデータベースが見られる

7.2 データの保護・漏洩対策
79 暗号化処理の実装を検討する
80 鍵の保持方法を考える
81 AES 暗号化でデータベースを守る
COLUMN CardboardとDaydream
82 オープンソースソフトを利用する
COLUMN 暗号化処理は輸出規制の対象

7.3 ソースコードを保護する
83 処理を解析から保護する.
84 難読化の注意点を知る
85 有償ツールを検討する
COLUMN 中華 droidのススメ

第8章 機種依存を考慮した設計と実装
8.1 設計段階で考慮すること
86 搭載機能を整理する
COLUMN Android に関わるライセンス
87 フォン型とタブレット型の両方に対応する

8.2 マルチディスプレイへの対応
88 基準になる単位を知る
89 実サイズで切り分ける
90 仮想デバイスで確認する
COLUMN シミュレータとエミュレータの違い
91 異なる画面サイズに対応した Web デザインにする

8.3 リソース制作時の考慮点
92 リソースの管理方法を決める
93 伸縮できる画像を利用する
94 正しい配置方法を知る

8.4 さまざまな機種依存の対処
95 外部・内部ストレージの利用可能領域を知る
96 そのほかの機種依存を知る
COLUMN Miracast と AirPlay と Google Cast

8.5 マルチユーザーの対応
97 マルチユーザー対応時の注意点
98 複数プロセスを考慮する
99 画面のズームを考慮する
100 マルチウィンドウに対応する

第9章 品質向上のための開発とテスト
9.1 品質を上げるための開発ポイント
101 Gradle のビルドで環境を切り分ける
102 静的コード解析を行う

9.2 性能試験の観点
103 処理が遅かった場合の対処
104 リソース負荷を測定する
105 アプリ機能に負荷を与える
106 メモリリークを取り除く
COLUMN メモリ情報詳細の取得について
107 端末・OSに関わる試験の観点を明確にする

9.3 開発工程に試験を組み込む
108 単体試験を行う
109 UI試験を行う
110 継続的インテグレーションを行う
111 Bazel でビルドする場合を考える
112 単体試験しやすい実装を考える

第10章 Google Play でアプリを安全にリリースする
10.1 端末のスペックで公開を制限する
113 公開制限の必要性を理解する
114 API Level で公開を制限する
115 画面サイズや密度で公開を制限する
116 搭載機能で公開を制限する
117 ライブラリで公開を制限する

10.2 指定した端末への公開を制限する
118公開端末一覧を確認する
119 端末のフィルタリングを確認する
10.3 公開前のテスト配布
120 テスト用バイナリを配布する
121 ベータ版テスト、アルファ版テストを実施する
122 テスターグループを設定する
123 テスターを承認する
124 テスト版アプリをダウンロードする
125 バージョンアップ時の不備を避ける
126 署名を確認する
127 バイナリを最適化する
10.4 公開後に押さえておくポイント
128 アプリの公開状況を確認する
129 アプリの公開状況を変更する
130 レポートを確認する

索引

木田 学 (著), おかじゅん (著), 渡辺 考裕 (著), 荒川 祐一郎 (著), 小林 正興 (著), テックファーム (監修)
技術評論社 (2017/3/16)、出典:出版社HP