プログラミング言語「Kotlin」は、Android開発ではすでに広く知られていますが、JVM(Java仮想マシン)で動作するサーバーサイド開発での選択肢としても注目されている言語の一つです。
本書はサーバーサイドの開発者を読者対象とし、Kotlinの基本構文とともに、Javaとの親和性が高いうえに、Javaよりも安全性が高く書きやすいと言われる理由を解説します(第1部)。そして実践的な内容としてSpring Bootを使い、データベースの検索系/更新系機能や認証/認可機能などを実装したWebアプリケーションを構築します(第2部)。加えて、従来型の案件だけでなく新規プロダクトへの足がかりにもなるよう、gRPCやKtorなどといった比較的新しい技術との組み合わせ方をフォローします(第3部)。「実践開発」という書名のとおり、プロダクトの開発でKotlinを導入する際に役立てられる内容です。
【第1部 Kotlin入門】
■第1章 Kotlinをお勧めする理由
1. なぜKotlinが誕生したのか?
2. Kotlinでなにを作れるのか?~サーバーサイドでの利用意義
3. コードの安全性を高めるKotlinの型とNull非許容/許容
4. 環境構築と最初のプログラムの実行
5. Kotlinの基本構文
■第2章 様々なKotlinの機能
1. if、when文を式として扱いコードをシンプルにできる
2. プロパティの定義でアクセサメソッド(getter、setter)が不要になる
3. データクラスでボイラープレートを減らせる
4. デフォルト引数と名前付き引数で関数呼び出しをシンプルにできる
5. 関数型と高階関数、タイプエイリアスでロジックを再利用しやすくできる
6. 拡張関数で柔軟にロジックを追加できる
7. スコープ関数でオブジェクトへの処理をシンプルにできる
8. 演算子オーバーロードでクラスに対する演算子の処理を実装できる
9. デリゲートで冗長な処理を委譲できる
10. 充実したコレクションライブラリでコレクションに対する処理をシンプルにできる
11. コルーチンで非同期処理が実装できる
■第3章 JavaとKotlinの相互互換が既存の資産を生かす
1. Javaのコードを呼び出す
2. Javaのライブラリを呼び出す
3. Javaのクラスを継承してKotlinで実装する
4. Javaと相互呼び出しする際の特殊な例
5. JavaのコードをKotlinのコードへ変換する
【第2部 Kotlinでのサーバーサイド開発】
■第4章 Webアプリケーション開発の基盤となるSpring Bootを導入する
1. Spring Bootの導入
2. Spring BootでのREST APIの実装
3. Spring FrameworkのDIを使用する
■第5章 O/Rマッパーを使用してデータベースへ接続する
1. MyBatisとは?
2. DockerでMySQLの環境構築
3. MyBatisの導入
4. MyBatisでCRUDを作成する
5. Spring BootからMyBatisを使用する
■第6章 Spring BootとMyBatisで書籍管理システムのWebアプリケーションを開発する
1. 書籍管理システムの仕様
2. アプリケーションの構成
3. プロジェクトの環境構築
4. 検索系機能(一覧取得、詳細取得)のAPI実装
5. 更新系機能(登録、更新、削除)のAPI実装
■第7章 書籍管理システムの機能を拡充する
1. Spring Securityでユーザー認証、認可の機構を実装する
2. 貸出、返却機能のAPI実装
3. Spring AOPでログの出力
■第8章 JUnitで単体テストを実装する
1. JUnitの導入
2. JUnitでWebアプリケーションの単体テスト
【第3部 Kotlinで色々なフレームワークを使ってみる】
■第9章 高速な通信フレームワーク gRPC
1. gRPCとは?
2. gRPCの導入
3. Spring BootでgRPCのKotlinサーバーサイドプログラムを実装
■第10章 Kotlin製のWebフレームワーク Ktor
1. Ktorとは?
2. Ktorの導入
3. REST APIの実装
4. 認証機構の実装
■第11章 Kotlin製のO/Rマッパー Exposed
1. Exposedとは?
2. Exposedの導入
3. DSLとDAOそれぞれの実装方法
4. DAOでCRUDを作成する
■第12章 Kotlin製のテスティングフレームワーク Kotest、MockK
1. Kotestとは?
2. Kotestの導入
3. いくつかのコーディングスタイル(Spec)で単体テストを書く
4. データ駆動テストを使う
5. MockKを使用してモック化する