Kotlin チュートリアル:Androidアプリのつくり方

Android アプリを Kotlin 言語で作成するためのチュートリアルです。Android の開発元である Google が公開しているチュートリアルに沿った内容です(翻訳ではありません)


Kotlin と Android のきほん

基本用語集
 Kotlin と Android の基本用語集 

Unit1 – 1
 Kotlin の基本 

変数, 型 Int, 関数 fun, 文字列, 文字列テンプレート ${変数}, 制御文 repeat などについて

Unit1 – 2
 Android Studio の基本 

プロジェクトの新規作成, AVDの作成方法, AVDでの実行方法, Project の見方, 実機での実行 などについて

Unit1 – 3
 Layout Editor の基本 

Layout Editor 各部分の説明, View, ViewGroup, ConstraintLayout の説明, UI部品の作成・削除, Component Tree の見方, 警告表示の見方, constraint(制約)の設定方法, UI部品のスタイル設定, Resource Manager を使ったプロジェクトへの画像追加, 画像のサイズ調整, string resource(strings.xml)の使い方, UI部品の上下関係の変更, TalkBack用テキストの設定方法

Unit1 – 4 第1回
 Kotlinでクラスを使う 

IntRange型 の使い方, 乱数を発生させる, クラス, プロパティ, メソッドの書き方, 関数で return を使う

Unit1 – 4 第2回
 ボタンに処理を記述する 

Layout Editor でアプリのUI画面を作成する, MainActivity.kt を理解する, import の自動化設定, findViewById , click listener , Toast の説明 , view binding について , コードの書き方とコメント

Unit1 – 4 第3回
 Kotlinで条件判断する 

if , else , else if の使い方, > , < , == , >= , <= による条件判断, Boolean型の true と false, when の使い方

Unit1 – 4 第4回 前半
 Kotlinで画像表示する 

UI画面への ImageView の追加, setImageResource を使った画像表示, 画像のリソースID

Unit1 – 4 第4回 後半
 条件判断して画像を表示する 

if , when を使った画像表示, TalkBackで使うテキストをKotlinから書き換える, Int を String に変換する


シンプルな Android アプリの作成

Unit2 – 1 第1~3回
 Kotlinでサブクラスをつくる 

スーパークラス, サブクラス, 親子関係, クラス階層(class hierarchy), 継承(inheritance), open, トップレベルクラス, 抽象クラス(abstract class), プライマリーコンストラクタ, private, public, kotlin.math ライブラリ

Unit2 – 1 第4回
 XMLでUI画面を書いてみる 

レイアウトファイルの構造, XMLの基本, タグ(tag), 要素(element), 属性(attribute), match_parent , wrap_content, Start/End と Left/Right

Unit2 – 1 第5回
 UI部品に View Binding でアクセスする 

View Binding, click listener, EditText, 型変換(toDouble, toString), 数値や文字列の書式指定, ラジオボタン, 数学ライブラリ, strings.xml と getString(), プレースホルダー, Logcat とスタックトレース

Unit2 – 1 第6回
 アプリのテーマ色を変更する 

Materialデザイン, テーマ(theme), スタイル(style), themes.xml, colors.xml, COLOR TOOL, ダークテーマ

Unit2 – 1 第7回
 アプリのアイコンを設定する 

ランチャーアイコン(Launcher Icon), アダプティブアイコン(Adaptive Icon), foregroundレイヤー, backgroundレイヤー, ベクター画像, ビットマップ画像, Image Asset Studio

Unit2 – 1 第8回 前半
 Material のUI部品を使う 

マテリアルコンポーネント(Material Components), MDC , Vector Drawable, Vector Asset Studio, UI画面にアイコンを使う

Unit2 – 1 第8回 後半
 スタイルの設定、リスナーとラムダ式 

スタイル(styles.xml), dimens.xml , ScrollView, キーリスナー(key listener), ラムダ式 , ベクター画像のXMLでの調整


RecyclerView を使ったアプリの作成

Unit2 – 2 第1~2回 前半
 Kotlinでリストを使う 

リスト, ミュータブルリスト, List型 , MutableList型 , listOf() , 要素[添え字] , mutableListOf() , get() , first() , last() , contains() , reversed() , sorted() , add() , addAll() , remove() , removeAt() , clear() , change() , isEmpty() , += , ++ , while , for

Unit2 – 2 第2回 後半
 何でもオブジェクトで考える 

親クラス, 子クラス, 継承, インスタンス, プロパティ, メソッド, コンストラクタ, var , val , open , 参照 , vararg , toString() , joinToString() , ビルダーパターン(Builder Pattern)

Unit2 – 2 第3回 RecyclerView 前半
 RecyclerView:データソースを作成する 

RecyclerView の基本, データソース, アダプタ(Adapter), ビューホルダー(ViewHolder), パッケージの作成

Unit2 – 2 第3回 RecyclerView 後半
 RecyclerView:アダプタを作成する 

UI画面へのRecyclerViewの追加, FrameLayout, レイアウトマネージャの設定, ビューホルダーのレイアウト作成, アダプタのクラス, ビューホルダーのクラス, RecyclerView.Adapter, RecyclerView.ViewHolder, context, getItemCount() , onCreateViewHolder() , onBindViewHolder() , setHasFixedSize()

Unit2 – 2 第3回 RecyclerView まとめ
 RecyclerView:第3回で作成したコード 

strings.xml , Affirmation.kt , Datasource.kt , activity_main.xml , list_item.xml , ItemAdapter.kt , MainActivity.kt , アダプタパターン(Adapter Pattern)

Unit2 – 2 第4回 RecyclerView
 RecyclerView:画像を表示する 

RecyclerVier に画像を表示するための改良, アノテーションの利用, Card の利用, MaterialCardView , テーマ色の変更, ダークテーマ色の変更, アイコンの変更


複数のアクティビティを使ったアプリの作成

Unit3 – 1 第1回 ~ 第2回 前半
 コレクション(List , Set , Map) 

コレクション, リスト(list), セット(set), マップ(map), forEach(), map(), filter()

Unit3 – 1 第2回 後半
 ラムダ式と高階関数 

ラムダ式(lambda), 関数型(Function type), 高階関数(higher-order function), sortedWith() , OnClickListener , OnKeyListener , 無名関数

Unit3 – 1 第3回 複数のアクティビティ 序章
 画面が複数あるアプリを作成する 

作成するアプリの概要, 作成するアプリのスタータープロジェクトの読み込み, アプリの構造を見ておく

Unit3 – 1 第3回 複数のアクティビティ 前編
 インテントと定数 

インテント(intent), 明示的インテント(explicit intent), 暗黙的インテント(implicit intent), context , エクストラ(extra), nullable , ? , 定数 , コンパニオンオブジェクト(companion object), インテントタイプ , ジェネリックインテント(generic intent)

Unit3 – 1 第3回 複数のアクティビティ 後編
 アプリバーとメニュー 

アプリバー, アクションバー, onCreateOptionsMenu() , onOptionsItemSelected() , メニューリソース

Unit3 – 1 第4回 複数のアクティビティ 前編
 アクティビティのライフサイクルとコールバック 

アクティビティ・ライフサイクル(activity lifecycle), コールバック(callback),Initialized , Created , Started , Resumed , Destroyed , onCreate(), onDestroy, onStart, onStop, on Resume, onPause, Logクラス, Log.d(), Logcat, const

Unit3 – 1 第4回 複数のアクティビティ 中編
 さまざまな操作でのライフサイクルの状態の変化 

アプリの起動, BACKボタン, 最近の画面, HOMEボタン, バックグラウンド, フォアグラウンド, visible lifecycle, インタラクティブライフサイクル(interactive lifecycle)

Unit3 – 1 第4回 複数のアクティビティ 後編
 ライフサイクルとコンフィグチェンジ 

configuration change, 画面の回転, バンドル, Bundle型, onSaveInstanceState() , outState , putInt() , getInt() , TransactionTooLargeException , onRestoreInstanceState()


フラグメントを使ったアプリの作成

Unit3 – 2 フラグメント(1)
 フラグメント 1:予備知識編 

フラグメントのチュートリアルに入る前の予備知識, キーワードの確認, フラグメントの全体的なしくみ, ファイル名のつけかた, フラグメントのチュートリアルのあらすじ

Unit3 – 2 フラグメント(2)
 フラグメント 2:ライフサイクル 

フラグメントのライフサイクル, コールバックメソッド, onCreate , onCreateView , onViewCreated の違い

Unit3 – 2 フラグメント(3)
 フラグメント 3:ホームフラグメントの作成 

MainActivity の内容をフラグメントに移行する, Android Studio でのフラグメントの新規作成, フラグメントでの View Binding の使い方, ? や !! の使い方, オプションメニューの作成

Unit3 – 2 フラグメント(4)
 フラグメント 4:他のフラグメントの作成 

コンパニオンオブジェクト(定数)の移動, 参照先の定数の修正, View Binding の設定, activity.intent.extras の利用, 不要になったファイルのプロジェクトからの削除

Unit3 – 2 フラグメント(5)
 フラグメント 5:ナビゲーションコンポーネントの使い方 

ナビゲーションコンポーネント(Navigation Component), NavGraph(ナビフラフ, Navigation Graph, ナビゲーショングラフ)の作成, NavHost(ナビホスト)の設定, NavController(ナビコントローラ), FragmentContainerView, Safe Args, arguments の設定, デスティネーション(destination)の設定, ナビゲーションアクション(action)の設定, スタートデスティネーションの設定,

Unit3 – 2 フラグメント(6)
 フラグメント 6:ナビゲーションアクションの実装 

ナビゲーションアクション(Navigation Action)の利用, ディレクション, NavController の設定, アプリバー(アクションバー)の設定, UP(戻る)ボタンへの対応, 短絡評価(short-circuit evaluation), arguments の参照, 拡張関数 let(), Bundle, フラグメントのラベル(label)の設定



ViewModel と LiveData の利用

Unit3 – 3 アーキテクチャ


データベース と Room の使い方

Unit5 データベースの利用(データの永続化)