目次

はじめに

本著の内容
どんな人向けか
この本で得られること
この本では解説しないこと
この本の使い方
免責事項

第1章 SpringBootのバージョンアップ

1.1 前提となるバージョン
1.2 手順の概要
1.3 build.gradle.ktsを編集
1.4 gradleの更新
1.5 ビルドする
1.6 再ビルドと最終確認

第2章 JPAによるテーブルJOINを試す

2.1 プロジェクトの作成
2.2 1対1のJOIN
2.3 1対多のJOIN
2.4 多対1のJOIN
2.5 多対多のJOIN

第3章 ファイルアップロード

3.1 プロジェクトの作成
3.2 クラスファイルの作成
3.3 実行

第4章 GitHubなどによるシングルサインオン(OAuth2.0)

4.1 前提となるバージョン
4.2 今回解説したコードについて
4.3 雛形の作成
4.4 ログイン画面の追加
4.5 ログアウト処理の追加
4.6 Googleを追加

第5章 TwitterAPIの利用

5.1 3-legged OAuthの有効化
5.2 今回解説したコードについて
5.3 twitter4jの利用
5.4 Twitterアクセストークンの取得を自前で実装
5.5 今回解説したコードについて
5.6 OAuthTokenとOAuthTokenSecretを取得
5.7 アクセストークンの取得

第6章 JPAでのcascade属性について

6.1 今回解説したコードについて
6.2 OnetoOne
6.3 OnetoMany
6.4 ManyToOne
6.5 ManyToMany

あとがき

常にコードを書き続ける
最後になりましたが…

はじめに

 この本を手に取っていただき、どうもありがとうございます。著者のFORTE(フォルテ)です。本書で私が書いたサーバーサイドKotlinの技術同人誌は3冊目なので、「実践!サーバーサイドKotlin」シリーズとしても箔が付いたかなと思っています。今回は前回までと違い、「ひとつのアプリケーションを完成させるまで」ではなく、「これをサーバーサイドKotlinでやるにはどうしたらいいの?」に答える一冊となっています。

 フレームワークは、SpringBootでの解説となっています。本書も前著までと同じく、Windows、Mac両対応です。

本著の内容

 今回はいろいろ実践!ということで、前著までを通して筆者が試してみたいと思っていたことをやってみました。具体的には次の6つです。

 ・SpringBootのバージョンアップ

 ・JPAによるテーブルJOINの基礎

 ・ファイルのアップロード

 ・Githubなどによるシングルサインオン(OAuth2.0)

 ・TwitterAPIの利用(OAuth1.1)

 ・JPAでのJOINその2、cascade属性について

SpringBootのバージョンアップ

 SpringBootのバージョンアップは前著の執筆中にも訪れており、読者からの質問もあった内容でした。執筆者としては、バージョンなどの環境が変わってしまうと、説明していた内容では動作しないなどの問題が発生するため、とても頭の痛い問題です。

 今回はその対処を解説することで、記述が古くなっても対処しやすくなることを狙っています。

JPAによるテーブルJOINの基礎

 前著までは、一回の操作でひとつのテーブルに対してしか影響しないアプリケーションを書いてきました。しかし、世の中に出回っている多くのアプリケーションは、一回の操作で複数のテーブルに対して影響する(機能を持った)アプリケーションのほうが多いでしょう。

 そのため、今回は複数のテーブルをJOINして操作する方法の基礎を解説しています。単独のテーブルを検索するよりも、より複雑なアプリケーションをサーバーサイドKotlinで表現できるようになります。

 なお、本書で解説する範囲は@OneToOne、@ManyToOne、@OneToMany、@ManyToManyによるSELECTだけとなります。更新削除や、N+1問題については扱いませんので、あらかじめご了承ください。1

ファイルのアップロード

 Webアプリケーションでは自己表現するためのアバター画像や、より詳しい説明や豊かな表現をするために、画像や動画をアップロードします。前著までは、テキストの処理は解説してきましたが、このファイルアップロードに関する解説はしていませんでした。

 今回は、ブラウザーからWebサーバーに保存する方法のみを解説します。今後シリーズが進んだ折には、Amazon S3や他のクラウドコンピューティングサービスにアップロードする連携なども解説したいと考えています。

Githubなどによるシングルサインオン(OAuth2.0)

 Githubなどは、OAuth2.0によるログイン方法を提供しています。今回はこれを利用して、GithubとGoogleによるログイン機能を紹介します。これにより、WebアプリでよくあるGithubでログインなどの機能が利用できるようになります。

TwitterAPIの利用(OAuth1.1)

 TwitterはOAuth1.1によるログイン方法にしか対応しておらず、OAuth2.0には対応していません。今回は、このOAuth1.1によるログイン方法について解説していきます。解説はtwitter4jというライブラリーを利用したものと、独自実装でログインする方法を解説します。

 ただし、独自実装の方はアクセストークンの取得までであり、アクセストークンを取得した上で何かをする(たとえばツイートするなど)内容について触れていません。理由としては、単純にうまくいかなかっただけなので、いつかリベンジしたいです。

JPAでのJOINその2、cascade属性について

 cascade属性について解説します。cascade属性を付与することによって、あるテーブルへの変更が関係している他のテーブルに波及するようになります。

環境

 本書も前著と同じく、Windows、Mac両対応です。IDEやエディターについても、同じIntelliJ IDEA、VS Codeでの動作確認をしていますが、特に影響する箇所はないはずなので、前著を読んでいれば問題ないはずです。なお、ここでいう動作確認は、MacのIntelliJ IDEAで作成したプロジェクトをMacのVS Code、WindowsのIntelliJ IDEA、VS Codeで動作確認をしたという意味です。1からすべての環境で確認しているわけではないので、あらかじめご了承ください。

 なお、今回からWindowsでH2Databaseに日本語を投入すると、文字化けが発生するようになりました。どうもSpring Bootのバージョンによって発生するらしく、バージョンが新しいと回避できないようです。お手数ですが、Windows環境の方は日本語の部分をローマ字などに読み替えていただきたく、お願い申し上げます。

 もし本書の内容でわからない点があれば、後述する前著を見ていただくか、ぜひ著者2までご一報ください。ベストエフォートで回答させていただきます。

どんな人向けか

 本著は、「実践!サーバーサイドKotlin」シリーズの一冊目「入門!実践!サーバーサイドKotlin」を読了していることを前提に書いています。具体的にはKotlin + Spring Boot + JPA + Thymeleaf + データベース(h2 Databaseなど)でデータ作成、検索、更新、削除(いわゆるCRUD処理)がわかる、やったことがある、開発環境などもすでにある、あるいは自分で揃えられる程度の方を対象読者としています。

 そのため、サーバーサイドKotlinとは?Spring Bootとは?えっそもそもKotlinってなに?読み方もわからない…という人は、ぜひシリーズ1冊目である「入門!実践!サーバーサイドKotlin」をお読みになることをおすすめします。次のQRコード、リンクから購入可能です!(PR)

 https://nextpublishing.jp/book/11207.html

図1: 入門!実践!サーバーサイドKotlin

この本で得られること

 この本は、JavaなどでWeb開発の経験がある人が、サーバーサイドKotlin(SpringBoot)で次を実践してみる本です。この本を読み終わると、次のような状態になります。

 ・SpringBootのバージョンアップ

  ─バージョンアップ作業の方法がわかる

  ─バージョンアップに伴うエラー箇所の修正

 ・JPAによるテーブルJOINの基礎

  ─JPAでテーブルJOINする方法と種類

  ─エラーの対処

 ・ファイルのアップロード

  ─ファイルアップロードの実装方法

 ・Githubなどによるシングルサインオン(OAuth2.0)

  ─Githubによるシングルサインオンの実装がわかる

  ─Googleによるシングルサインオンの実装がわかる

 ・TwitterAPIの利用(OAuth1.1)

  ─twitter4jの利用方法がわかる

  ─独自実装でOAuth1.1の実装方法がわかる

 ・JPAでのJOINその2、cascade属性について

  ─cascade属性の実装がわかる

 サーバーサイドKotlinで、これってどうやって実装するの?というあなたの疑問に答えられたら、こんなに嬉しいことはありません。

この本では解説しないこと

 本著では、SpringBootでの実装方法についていくつか解説していますが、あくまで特定の実装方法であり、本格的な使い方やフレームワークの中身などについては解説していません。

 特に、JPAによるテーブルJOINは非常に複雑であるため、本書では基礎部分のみ扱います。具体的には更新削除や、N+1問題については扱いませんので、あらかじめご了承ください。

 また、解説にはJPAやThymeleafも使用していますが、本書では解説しません。よくわからない!という方は、ぜひ前著をご覧になることをおすすめします。

この本の使い方

 この本は、筆者がサーバーサイドKotlinで「あれはどうやるのかな?」を学ぶ中で疑問に思ったことや調べたことを、技術書の形でアウトプットしたものです。

 本書はこの本のとおりにやれば動くものができる、というところを目指して書かれています。この本を読めば、理屈や仕組みがすべて理解できるようには書かれていません。この本を入り口として、そのさらに奥にあることに興味を持っていただけたら幸いです。

 本書はVol.1の名のとおり、2以降も出す予定でいます。それぞれ1冊にするには小さいんだけど、集まれば1冊になりそうなテーマを集めて手を動かしていきたいと思っています。

 本の感想や間違いの指摘、追加要望などは、次のハッシュタグを用いてTwitterで呟いていただけると嬉しいです。ぜひ、感想をお待ちしております。

 #いろいろ実践サーバーサイドKotlin

 また、今回の内容でIntelliJ IDEA、VS Code固有で影響する箇所は特にないはずなので、前著を読んでいれば問題ないと思います。もし本書の内容でわからない点があれば、ぜひ著者3までご一報ください。ベストエフォートで回答させていただきます。

免責事項

 本書に記載する内容は、筆者の所属する組織の公式見解ではありません。また、本書は可能な限り正確を期すように努めていますが、筆者がその内容を保証するものではありません。そのため、本書の記載内容に基づいた読者の行為、及び読者が被った損害について筆者はなんら責任を負うものではありません。

1. 今回解説しない理由については、第2章の最後のコラムをご覧ください

2. Twwiter: https://twitter.com/FORTEgp05

3. Twwiter: https://twitter.com/FORTEgp05

試し読みはここまでです。
この続きは、製品版でお楽しみください。