書籍概要

Kotlin サーバーサイドプログラミング実践開発

著者
発売日
更新日

概要

プログラミング⾔語「Kotlin」は,Android開発ではすでに広く知られていますが,JVM(Java仮想マシン)で動作するサーバーサイド開発での選択肢としても注目されている言語の一つです。

本書はサーバーサイドの開発者を読者対象とし,Kotlinの基本構⽂とともに,Javaとの親和性が⾼いうえに,Javaよりも安全性が⾼く書きやすいと⾔われる理由を解説します(第1部)。そして実践的な内容としてSpring Bootを使い,データベースの検索系/更新系機能や認証/認可機能などを実装したWebアプリケーションを構築します(第2部)。加えて,従来型の案件だけでなく新規プロダクトへの⾜がかりにもなるよう,gRPCやKtorなどといった⽐較的新しい技術との組み合わせ⽅をフォローします(第3部)。「実践開発」という書名のとおり,プロダクトの開発でKotlinを導入する際に役立てられる内容です。

こんな方におすすめ

  • 新しいプロダクトのサーバーサイド技術を選定する中で,Kotlinを検討している方(Javaプログラミングの知識は前提としない)
  • Javaでサーバサイド開発をしているが,より保守性の高い,安全なコードに変えていきたいと感じている方

著者から一言

Kotlinは,サーバーサイド開発のプログラミング言語の選択肢として,注目されているものの一つです。Javaとの相互互換という特徴があり,モダンかつ資産も豊富にあるという素晴らしい言語です。しかし,その特徴ゆえ「Javaがわかる人じゃないと難しいんじゃないか」と思われてしまうことも多いです。また,実践で使った経験のあるエンジニアもなかなかいないため,「使ってみたいとは思っているが迷っている」という話を聞くこともよくあります。

本書はそういった不安を取り除き,サーバーサイドKotlin導入を後押しすることができればと思い執筆しています。タイトルにもあるように「実践開発」をテーマとして,実プロダクトを意識した設計でアプリケーションの開発をしています。そのため実際に業務での開発で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を使用してモック化する

サポート

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2021年11月24日最終更新)

第6章 P.153 脚注2(サンプルプロジェクトの記載漏れを追加)

https://github.com/n-takehata/kotlin-server-side-programming-practice
https://github.com/n-takehata/kotlin-server-side-programming-practice/tree/main/part2/book-manager

(以下2021年8月6日更新)

第2章 P.45 「アクセサメソッド」の本文1行目

アクセサメソッドは前項で説明したプロパティと同様にvalで定義するとsetterのみ、
アクセサメソッドは前項で説明したプロパティと同様にvalで定義するとgetterのみ、

(以下2021年5月26日更新)

第6章 P.156 「コマンド6.3.18」の3行目

$ cd kotlin-server-side-programming-practice/part6/front/book-manager
$ cd kotlin-server-side-programming-practice/part2/front/book-manager

商品一覧