タケハタのブログ

プログラマの生き方、働き方、技術について雑多に書いていくブログです。

書籍『Kotlin サーバーサイドプログラミング実践開発』のこだわりとオススメポイント

書籍『Kotlin サーバーサイドプログラミング実践開発』を発売しました!

去る2021年4月、技術評論社様より書籍『Kotlin サーバーサイドプログラミング実践開発』を発売させていただきました!

gihyo.jp

そこで簡単にこの書籍の内容のこだわり、おすすめポイントをご紹介しようと思います。

こだわり

サーバーサイドの話に特化したKotlinの書籍

まずタイトルからして当然ですが、サーバーサイドの内容に特化したKotlinの本です。
これまでKotlinはAndroidアプリの内容が多く、サーバーサイドの書籍はほとんどありませんでした。
その中でこの本は、今まで実プロダクトで使用して開発してきたノウハウも活かし、「サーバーサイドKotlin」の内容としては市場の中でもでもかなりガッツリ書かれたものになっていると思います。

またAndroidの本は多くても、Kotlinの本は少なく、最近のバージョンの内容で書かれたKotlinの本としても価値があると思います。

実践で導入する際の参考にできる

こちらもタイトルにもある通り「実践開発」というところを意識し、実際にプロダクトで導入する際にも参考にできるような内容にしました。
Kotlinの基本的な部分はやりつつ、フレームワークやMySQLの使用、認証・認可、単体テストやロギングなど業務での開発に必要な内容も解説しています。
第2部で開発するアプリケーションをREST APIとして実装しているところも、そのこだわりの一つです。

ただ「使ってみた」だけでなく、この内容をベースに「開発を始める」という形で使っていただければと考えています。

Javaを知らなくてもできる

書籍の「はじめに」の中でも書いていますが、Kotlinを始めるに当たって「Javaも覚えなくてはいけないのでは」と思われることも多いです。
世の中のKotlinの記事にも、「Javaではこう書く」とJavaと並べて説明を書いたり、比較しているものがよくあります。
なので基本的にJavaを意識しなくていいような内容にしました。

実際に、第3章でJavaとの相互互換について解説している10ページ程度の箇所以外では、Javaのコードは一切でてきません。
JavaのフレームワークであるSpring BootやMyBatisも、あくまでもKotlinで使うフレームワークとして扱っています。

おすすめポイント

第1部 プログラミング基礎は薄めに、Kotlinについては厚めに

第1部はKotlinの入門編です。
ここではまだサーバーサイドに関連する内容は出てきませんが、Kotlinの基礎的な部分や特徴などを解説しています。
目次は以下になります。

  • 第1章 Kotlinをお勧めする理由
  • 第2章 様々なKotlinの機能
  • 第3章 JavaとKotlinの相互互換が既存の資産を生かす

対象読者を「サーバーサイドアプリケーションの開発経験がある方」としているので、

  • 変数
  • 制御構文
  • クラス、インターフェース
  • コレクション

と言ったプログラミングの基礎的な部分は第1章で簡単に説明するにとどめました。
そして第2章では

  • データクラス
  • 拡張関数
  • スコープ関数
  • コルーチン

といったKotlinの強力な機能や、特徴的な構文などを解説しています。
Kotlinの基礎を改めて学びたいという方にも、おすすめの内容になっています。

第3章は最低限の内容ですが、Javaとの相互互換について解説しています。

第2部 フレームワークの導入や単体テストの実装など実践的なサーバーサイド開発

第2部はサーバーサイド開発をしていきます。
この書籍の核となる内容といってもいい部分です。
目次は以下になります。

  • 第4章 Webアプリケーション開発の基盤となるSpring Bootを導入する
  • 第5章 O/Rマッパーを使用してデータベースへ接続する
  • 第6章 Spring BootとMyBatisで書籍管理システムのWebアプリケーションを開発する
  • 第7章 書籍管理システムの機能を拡充する
  • 第8章 JUnitで単体テストを実装する

ここは特に「実践開発」を意識した内容になっています。

フレームワークの導入から実践開発

第4〜5章で開発のベースとなるSpring Boot、DBを扱うためのORMのMyBatisを導入し、第6章から実践的なアプリケーションの開発をしていきます。
アプリケーションには「オニオンアーキテクチャ」をベースとしたアーキテクチャを採用しています。

実プロダクトで必要になる機能を実装

また第7章ではSpring Securityで認証・認可の仕組みを入れたり、Spring AOPを使いAOPの処理のでロギングを実装したりと、実プロダクトでは必要になる機能も追加します。
そして第8章では、こちらも実プロダクトでは必須となる単体テストについても解説しています。

ORMを差し替えたり、アーキテクチャを改善したりと手を加えていっていいと思いますが、サーバーサイドアプリケーションの一つの設計&実装の例としても提示できるようにしました。

SPAで使うREST APIとして実装

通常こういった書籍で作るアプリケーションは、対象の言語のテンプレートエンジンなどを使用して、画面とロジックをセットで実装することが多いです(その方が解説もわかりやすいため)。
しかし、近年のサーバーサイドアプリケーションは、フロントエンドとは分離したREST APIとして開発することがほとんどです。

そのため、この書籍では全ての機能をSPAを想定したREST APIとして実装しました。
そしてそれだけでは完成形として見えづらいため、フロントエンドの部分はVue.jsのアプリケーションとして用意し、GitHubに公開する形を取りました。

github.com

フロントエンドのコードは本線ではないので拙い部分も多いと思いますが、ぜひ活用していただければと思います。

第3部 今後も見据えて新しい技術スタックも紹介

第3部はExtraな内容として、今後使われていく期待のあるフレームワークを解説しています。
目次は以下になります。

  • 第9章 高速な通信フレームワーク gRPC
  • 第10章 Kotlin製のWebフレームワーク Ktor
  • 第11章 Kotlin製のO/Rマッパー Exposed
  • 第12章 Kotlin製のテスティングフレームワーク Kotest,MockK

今の時代に必須なgRPC

まずこれまでにもブログで書いたりしてきたgRPC。
マイクロサービスが一般的に取り入れられている時代なのと、gRPCのことを書いてる書籍もあまりないので最初に入れました。
執筆中にgrpc-kotlinが1.0.0になってくれて、ちょうどタイミングでした笑

おなじみのJetBrains製のフレームワーク2つ

そしてKotlin製のフレームワークとしてはおなじみのKtor、Exposed。
このJetBrains製の2つは、サーバーサイドKotlinの今後を考えると絶対にチェックしておきたいところですね。

おすすめのテスティングフレームワークKotest

そして最後にこれも僕が実践で使ってきて、かつ気に入っているKotestとMockKでテストについて書きました。
書こうとした時に前よりアップデートされて使いやすくなってる部分もあって、改めていいなと思いました。

サーバーサイドKotlinに興味のある方はぜひ!

このように、色々なこだわりを持って書いた書籍になります。
会社でサーバーサイドKotlinの導入を考えている方、個人的に使ってみたいと思ってる方、サーバーサイドKotlinに興味のある方はぜひ手に取っていただければと思います!

各種電子版も販売されています。

gihyo.jp

あと、実店舗の書店さんではKotlin括りでAndroidのコーナーに置かれていることが多いです!

f:id:take7010:20210518094138j:plain