はじめに
第1章 SpringBootのバージョンアップ
第2章 JPAによるテーブルJOINを試す
第3章 ファイルアップロード
第4章 GitHubなどによるシングルサインオン(OAuth2.0)
第5章 TwitterAPIの利用
第6章 JPAでのcascade属性について
あとがき
この本を手に取っていただき、どうもありがとうございます。著者のFORTE(フォルテ)です。本書で私が書いたサーバーサイドKotlinの技術同人誌は3冊目なので、「実践!サーバーサイドKotlin」シリーズとしても箔が付いたかなと思っています。今回は前回までと違い、「ひとつのアプリケーションを完成させるまで」ではなく、「これをサーバーサイドKotlinでやるにはどうしたらいいの?」に答える一冊となっています。
フレームワークは、SpringBootでの解説となっています。本書も前著までと同じく、Windows、Mac両対応です。
今回はいろいろ実践!ということで、前著までを通して筆者が試してみたいと思っていたことをやってみました。具体的には次の6つです。
・SpringBootのバージョンアップ
・JPAによるテーブルJOINの基礎
・ファイルのアップロード
・Githubなどによるシングルサインオン(OAuth2.0)
・TwitterAPIの利用(OAuth1.1)
・JPAでのJOINその2、cascade属性について
SpringBootのバージョンアップは前著の執筆中にも訪れており、読者からの質問もあった内容でした。執筆者としては、バージョンなどの環境が変わってしまうと、説明していた内容では動作しないなどの問題が発生するため、とても頭の痛い問題です。
今回はその対処を解説することで、記述が古くなっても対処しやすくなることを狙っています。
前著までは、一回の操作でひとつのテーブルに対してしか影響しないアプリケーションを書いてきました。しかし、世の中に出回っている多くのアプリケーションは、一回の操作で複数のテーブルに対して影響する(機能を持った)アプリケーションのほうが多いでしょう。
そのため、今回は複数のテーブルをJOINして操作する方法の基礎を解説しています。単独のテーブルを検索するよりも、より複雑なアプリケーションをサーバーサイドKotlinで表現できるようになります。
なお、本書で解説する範囲は@OneToOne、@ManyToOne、@OneToMany、@ManyToManyによるSELECTだけとなります。更新削除や、N+1問題については扱いませんので、あらかじめご了承ください。1
Webアプリケーションでは自己表現するためのアバター画像や、より詳しい説明や豊かな表現をするために、画像や動画をアップロードします。前著までは、テキストの処理は解説してきましたが、このファイルアップロードに関する解説はしていませんでした。
今回は、ブラウザーからWebサーバーに保存する方法のみを解説します。今後シリーズが進んだ折には、Amazon S3や他のクラウドコンピューティングサービスにアップロードする連携なども解説したいと考えています。
Githubなどは、OAuth2.0によるログイン方法を提供しています。今回はこれを利用して、GithubとGoogleによるログイン機能を紹介します。これにより、WebアプリでよくあるGithubでログインなどの機能が利用できるようになります。
TwitterはOAuth1.1によるログイン方法にしか対応しておらず、OAuth2.0には対応していません。今回は、このOAuth1.1によるログイン方法について解説していきます。解説はtwitter4jというライブラリーを利用したものと、独自実装でログインする方法を解説します。
ただし、独自実装の方はアクセストークンの取得までであり、アクセストークンを取得した上で何かをする(たとえばツイートするなど)内容について触れていません。理由としては、単純にうまくいかなかっただけなので、いつかリベンジしたいです。
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)
この本は、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までご一報ください。ベストエフォートで回答させていただきます。
本書に記載する内容は、筆者の所属する組織の公式見解ではありません。また、本書は可能な限り正確を期すように努めていますが、筆者がその内容を保証するものではありません。そのため、本書の記載内容に基づいた読者の行為、及び読者が被った損害について筆者はなんら責任を負うものではありません。