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

【最新 – 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ライブラリのバージョン間の競合