Kotlinハンズオン (単行本)
Java言語は、以前と比べて強化された反面、複雑で面倒くさい言語になってしまいました。その複雑で面倒くさい部分を修正した「理想のJava」が、Kotlinです。本書は、Kotlin言語の仕組みや特徴を理論ではなく、実際にサンプルを作りながら学習するハンズオン形式の入門書です。開発環境のインストールから、言語の基本的な内容、Androidアプリ開発、デスクトップアプリ開発、サーバサイドの利用まで、一通りの知識をハンズオンで学べます。
Chapter 1 Kotlinをはじめよう
1-1 Kotlinを準備しよう
Kotlinとは?
Kotlinの特徴
JavaとKotlinの違い
Kotlinで開発可能な世界
Kotlinと開発環境
JDKについて
IntelliJ IDEAについて
1-2 IntelliJとプロジェクト
IntelliJを起動する
プロジェクトを新規作成する
IntelliJのウィンドウについて
プロジェクトのディレクトリ構成
main.ktとエディタについて
プログラムを実行する
ビルドで生成されるもの
コンソールアプリケーションを作る
2つのプロジェクトの違い
build.gradle.ktを覗く
Chapter 2 Kotlinの基本文法を覚えよう
2-1 値・変数・制御構文
Kotlinプレイグラウンドについて
ソースコードの基本形を理解する
値について
値を表示してみよう
変数と定数
値の演算について
値のキャスト
2-2 制御構文
分岐の基本「if」
多数の分岐を行なう「when」
条件をもとに繰り返す「while」
多数の値を順に処理する「for」
breakとcontinue
2-3 コレクション
配列について
forによる繰り返し処理
配列の問題点
リストについて
リストの追加と削除
キーで値を管理する「マップ」
マップを利用する
集合を扱う「セット」
ジェネリック(総称型)について
2-4 関数の利用
関数の定義
関数は「値」
名前付き引数とデフォルト値
ローカル関数
ラムダ式について
高階関数
再帰関数について
Chapter 3 クラスとオブジェクト指向
3-1 クラスの基本
オブジェクト指向
インスタンスの利用
プライマリコンストラクタ
constructorメソッド(セカンダリコンストラクタ)
プロパティの利用
プロパティとfield
メソッドのオーバーロード
クラスの継承
プライマリコンストラクタのあるクラスの継承
メソッドのオーバーライド
クラスのキャストについて
可視性修飾子について
3-2 クラス以外のOOPを構成するもの
インターフェイスについて
SAMインターフェイス
抽象クラス
データ(data)クラス
静的クラス(objectクラス)
シングルトンとコンパニオンオブジェクト
列挙型クラスについて
3-3 クラスの更なる拡張
プロパティの委譲
プロパティの監視
プロパティ変更イベントの委譲
演算子のオーバーロード
複数の値を持つ戻り値
拡張メソッド、拡張プロパティ
null問題について
スコープ関数
Chapter 4 Kotlinの標準ライブラリ
4-1 入出力の基本と例外処理
コンソールアプリの基本コード
main関数の引数について
引数の値を出力する
実行可能Jarファイルを作成する
Jarファイルを作成する
Jarファイルを実行する
ユーザーからの入力
tryによる例外処理
runCatchingによる例外処理
4-2 ファイルの利用
JavaクラスライブラリとKotlinの関係
java.io.Fileクラスの拡張
テキストファイルの書き出し
テキストファイルの読み込み
バイナリファイルの利用
バイナリで書き出す
バイナリファイルを読み込む
4-3 タイマーとスレッド
kotlin.concurrentとタイマー
タイマーを使う
スレッドについて
スレッドの優先度について
joinによるスレッドの優先実行
4-4 コルーチンの利用
コルーチンとは?
Gradle Kotlin DSLでパッケージを組み込む
コルーチンを使ってみる
runBlockingの利用
suspend関数について
コルーチンのキャンセル
キャンセルしないコルーチン
suspend関数による同期・非同期処理
suspend関数を非同期で実行する
非同期フロー関数
フロー関数を作成する
Chapter 5 KotlinによるAndroidの開発
5-1 Androidプロジェクトの基本
AndroidとKotlin
Androidプロジェクトを作成する
エミュレータを設定する
エミュレータで実行する
アプリを構成するファイル
MainActivityクラスについて
レイアウトファイルについて
レイアウトのソースコード
5-2 コンポーネントとフラグメント
コンポーネントを追加する
ボタンクリックの処理を作成する
フラグメントを使う
MainFragmentでフラグメントの処理を行なう
Fragmentクラスの基本処理
トーストを表示する
その他の入力コンポーネント
タップのイベントと「値」がポイント
5-3 ビューモデルとデータバインディング
データの扱いを考える
MainFragmentクラスを修正する
追加したデータが消える!
ビューモデル(ViewModel)について
MainViewModelを利用する
データバインディングの利用
ビューモデルを修正する
レイアウトファイルを修正する
MainFragmentを修正する
これより先の学習について
Chapter 6 デスクトップアプリケーション開発
6-1 TornadoFXの基本
デスクトップアプリケーションの開発
TornadoFXプロジェクトの作成
TornadoFXプロジェクトの構成
メインプログラムについて
MyAppクラスについて
MainViewクラスについて
Stylesクラスについて
表示をカスタマイズする
入力フィールドとプッシュボタン
フォームの利用
プロパティとコントローラー
6-2 FXMLを利用する
FXMLについて
TornadoFX Viewを作成する
MyFXViewの基本コードについて
FXMLのデザインについて
FXMLファイルを編集する
MyFXViewの修正
コントロールの操作
その他の主なコントロールについて
コントロールを利用する
コントロールをViewクラスから操作する
JavaFXはコントロールが豊富!
6-3 電卓アプリを作る!
RPN式電卓を作る
CalcViewを作成する
FXMLを作成する
CalcViewの処理を作成する
6-4 Compose for Desktopによる開発
新しいGUIライブラリ「Compose for Desktop」
プロジェクトを作成する
プロジェクトの内容を確認する
main.ktの作成
main関数の処理について
ボタンクリックで表示を更新する
MutableStateの利用
GUIは手続き型から定義型の時代へ
Chapter 7 サーバーサイド開発
7-1 Ktorの基本
サーバーサイドの開発とは
Ktorを準備する
Ktorプロジェクトを作成する
プロジェクトを実行する
プロジェクトの内容
Application.ktについて
Application.moduleについて
routingによるルーティング処理
Mustacheテンプレートの利用
静的ファイルへのアクセス
テンプレートファイルについて
application.confについて
7-2 さまざまな処理を実装する
Bootstrapの導入
クエリーパラメーターについて
フォーム送信
HTMLを出力する
条件による表示
繰り返し表示する
7-3 Exposedによるデータベースアクセス
SQLデータベースとExposed
Exposedでテーブルを用意する
データベース接続とテーブルの生成
ダミーレコードを保存する
全レコードを表示する
Sampleクラスで使いやすくする
7-4 検索とCRUD
指定IDのレコードを表示する
演算記号に使える値について
複数条件の設定
アクセスの基本は「CRUD」
更新処理について
レコードの削除
レコードの並べ替え
指定範囲のレコードを取り出す
7-5 メッセージボードを作る
超簡易メッセージボード
セッションの追加
テーブルを作成する
テーブルを関連付ける
テーブルとアカウントを作成する
テーブルとセッション用のクラスを用意する
メッセージボードの処理を作成する
テンプレートの用意
さらに拡張を考えよう
1-1 Kotlinを準備しよう
Kotlinとは?
Kotlinの特徴
JavaとKotlinの違い
Kotlinで開発可能な世界
Kotlinと開発環境
JDKについて
IntelliJ IDEAについて
1-2 IntelliJとプロジェクト
IntelliJを起動する
プロジェクトを新規作成する
IntelliJのウィンドウについて
プロジェクトのディレクトリ構成
main.ktとエディタについて
プログラムを実行する
ビルドで生成されるもの
コンソールアプリケーションを作る
2つのプロジェクトの違い
build.gradle.ktを覗く
Chapter 2 Kotlinの基本文法を覚えよう
2-1 値・変数・制御構文
Kotlinプレイグラウンドについて
ソースコードの基本形を理解する
値について
値を表示してみよう
変数と定数
値の演算について
値のキャスト
2-2 制御構文
分岐の基本「if」
多数の分岐を行なう「when」
条件をもとに繰り返す「while」
多数の値を順に処理する「for」
breakとcontinue
2-3 コレクション
配列について
forによる繰り返し処理
配列の問題点
リストについて
リストの追加と削除
キーで値を管理する「マップ」
マップを利用する
集合を扱う「セット」
ジェネリック(総称型)について
2-4 関数の利用
関数の定義
関数は「値」
名前付き引数とデフォルト値
ローカル関数
ラムダ式について
高階関数
再帰関数について
Chapter 3 クラスとオブジェクト指向
3-1 クラスの基本
オブジェクト指向
インスタンスの利用
プライマリコンストラクタ
constructorメソッド(セカンダリコンストラクタ)
プロパティの利用
プロパティとfield
メソッドのオーバーロード
クラスの継承
プライマリコンストラクタのあるクラスの継承
メソッドのオーバーライド
クラスのキャストについて
可視性修飾子について
3-2 クラス以外のOOPを構成するもの
インターフェイスについて
SAMインターフェイス
抽象クラス
データ(data)クラス
静的クラス(objectクラス)
シングルトンとコンパニオンオブジェクト
列挙型クラスについて
3-3 クラスの更なる拡張
プロパティの委譲
プロパティの監視
プロパティ変更イベントの委譲
演算子のオーバーロード
複数の値を持つ戻り値
拡張メソッド、拡張プロパティ
null問題について
スコープ関数
Chapter 4 Kotlinの標準ライブラリ
4-1 入出力の基本と例外処理
コンソールアプリの基本コード
main関数の引数について
引数の値を出力する
実行可能Jarファイルを作成する
Jarファイルを作成する
Jarファイルを実行する
ユーザーからの入力
tryによる例外処理
runCatchingによる例外処理
4-2 ファイルの利用
JavaクラスライブラリとKotlinの関係
java.io.Fileクラスの拡張
テキストファイルの書き出し
テキストファイルの読み込み
バイナリファイルの利用
バイナリで書き出す
バイナリファイルを読み込む
4-3 タイマーとスレッド
kotlin.concurrentとタイマー
タイマーを使う
スレッドについて
スレッドの優先度について
joinによるスレッドの優先実行
4-4 コルーチンの利用
コルーチンとは?
Gradle Kotlin DSLでパッケージを組み込む
コルーチンを使ってみる
runBlockingの利用
suspend関数について
コルーチンのキャンセル
キャンセルしないコルーチン
suspend関数による同期・非同期処理
suspend関数を非同期で実行する
非同期フロー関数
フロー関数を作成する
Chapter 5 KotlinによるAndroidの開発
5-1 Androidプロジェクトの基本
AndroidとKotlin
Androidプロジェクトを作成する
エミュレータを設定する
エミュレータで実行する
アプリを構成するファイル
MainActivityクラスについて
レイアウトファイルについて
レイアウトのソースコード
5-2 コンポーネントとフラグメント
コンポーネントを追加する
ボタンクリックの処理を作成する
フラグメントを使う
MainFragmentでフラグメントの処理を行なう
Fragmentクラスの基本処理
トーストを表示する
その他の入力コンポーネント
タップのイベントと「値」がポイント
5-3 ビューモデルとデータバインディング
データの扱いを考える
MainFragmentクラスを修正する
追加したデータが消える!
ビューモデル(ViewModel)について
MainViewModelを利用する
データバインディングの利用
ビューモデルを修正する
レイアウトファイルを修正する
MainFragmentを修正する
これより先の学習について
Chapter 6 デスクトップアプリケーション開発
6-1 TornadoFXの基本
デスクトップアプリケーションの開発
TornadoFXプロジェクトの作成
TornadoFXプロジェクトの構成
メインプログラムについて
MyAppクラスについて
MainViewクラスについて
Stylesクラスについて
表示をカスタマイズする
入力フィールドとプッシュボタン
フォームの利用
プロパティとコントローラー
6-2 FXMLを利用する
FXMLについて
TornadoFX Viewを作成する
MyFXViewの基本コードについて
FXMLのデザインについて
FXMLファイルを編集する
MyFXViewの修正
コントロールの操作
その他の主なコントロールについて
コントロールを利用する
コントロールをViewクラスから操作する
JavaFXはコントロールが豊富!
6-3 電卓アプリを作る!
RPN式電卓を作る
CalcViewを作成する
FXMLを作成する
CalcViewの処理を作成する
6-4 Compose for Desktopによる開発
新しいGUIライブラリ「Compose for Desktop」
プロジェクトを作成する
プロジェクトの内容を確認する
main.ktの作成
main関数の処理について
ボタンクリックで表示を更新する
MutableStateの利用
GUIは手続き型から定義型の時代へ
Chapter 7 サーバーサイド開発
7-1 Ktorの基本
サーバーサイドの開発とは
Ktorを準備する
Ktorプロジェクトを作成する
プロジェクトを実行する
プロジェクトの内容
Application.ktについて
Application.moduleについて
routingによるルーティング処理
Mustacheテンプレートの利用
静的ファイルへのアクセス
テンプレートファイルについて
application.confについて
7-2 さまざまな処理を実装する
Bootstrapの導入
クエリーパラメーターについて
フォーム送信
HTMLを出力する
条件による表示
繰り返し表示する
7-3 Exposedによるデータベースアクセス
SQLデータベースとExposed
Exposedでテーブルを用意する
データベース接続とテーブルの生成
ダミーレコードを保存する
全レコードを表示する
Sampleクラスで使いやすくする
7-4 検索とCRUD
指定IDのレコードを表示する
演算記号に使える値について
複数条件の設定
アクセスの基本は「CRUD」
更新処理について
レコードの削除
レコードの並べ替え
指定範囲のレコードを取り出す
7-5 メッセージボードを作る
超簡易メッセージボード
セッションの追加
テーブルを作成する
テーブルを関連付ける
テーブルとアカウントを作成する
テーブルとセッション用のクラスを用意する
メッセージボードの処理を作成する
テンプレートの用意
さらに拡張を考えよう