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を導入する際にも,参考にしていただける内容になっています。

本書のサンプル

本書の一部ページを,PDFで確認することができます。

目次

第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を使用してモック化する

著者プロフィール

竹端尚人(たけはたなおと)

SESでいくつかのSIerやWeb系ベンチャー企業での開発を経験した後,2014年に株式会社サイバーエージェントのグループ会社である株式会社アプリボットに入社。そこでサーバーサイドKotlinでのプロダクト開発,運用に携わる。現在はフリーランスエンジニアとして活動。また,勉強会の開催などを中心に活動する,Kotlin好きが集うコミュニティ「Kotlin愛好会」に運営メンバーとして携わる。

モバイルゲーム開発の経験を多く持ち,KotlinやJavaでのサーバーサイド開発を得意とする。過去にサーバーサイドKotlinについての内容で,国内最大級のゲーム開発者向けカンファレンスである「CEDEC」での登壇(2018,2019),雑誌Software Designで短期連載の執筆(2019年2月号〜4月号)などを行っている。

Twitter:@n_takehata
ブログ :https://blog.takehata-engineer.com/