「MySQL 8.0 の薄い本」を作って配っている話

タイトルの通り、**「MySQL 8.0 の薄い本」**（薄くない）を以下のリポジトリで配布しています。

 * **[https://github.com/hmatsu47/mysql80_no_usui_hon](https://github.com/hmatsu47/mysql80_no_usui_hon)**

出掛けた先のイベント・勉強会などでも物理本を配布しています。

![D6h_mztU0AIlw02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123899/52d938d2-642d-e052-ce40-270a00c5ece3.jpeg)

---

**2019/08/08 追記：MySQL 8.0.17 対応版をリリースしました。**
**2019/10/27 追記：MySQL 8.0.18 対応版をリリースしました。**
**2019/12/20 追記：MySQL 8.0.18 対応版第 2 刷をリリースしました。**
**2020/01/04 追記：MySQL 8.0.18 対応版第 3 刷をリリースしました。**
**2020/01/19 追記：MySQL 8.0.19 対応版をリリースしました。**
**2020/03/22 追記：MySQL 8.0.19 対応版第 2 刷をリリースしました。**
**2020/05/15 追記：印刷版の構成を見直すとともに、MySQL 8.0.20 対応版をリリースしました。**
**※構成見直しの経緯等については、後日別記事として~~書く予定です~~ note に書きました。**

 - **[「MySQL 8.0 の薄い本」をリニューアルした話](https://note.com/hmatsu47/n/nb56afc42dee3)（note）**

**2020/07/24 追記：MySQL 8.0.21 対応版はリリースを取り止め、追補版を作成しました。**

 - **[「MySQL 8.0 の薄い本」リニューアル直後に壁に当たった＋「MySQL 徹底入門 第 4 版」が出版された話](https://note.com/hmatsu47/n/n4586c50145bd)（note）**

**2020/11/14 追記：MySQL 8.0.22 対応版をリリースしました。**
**2021/02/08 追記：MySQL 8.0.23 対応版をリリースしました。**
**2021/05/03 追記：MySQL 8.0.24 対応版をリリースしました。8.0.24 対応版にて最終更新となります。あわせて Re:VIEW 原稿のリポジトリを公開しました。**

 - **[「MySQL 8.0 の薄い本」更新終了のお知らせ](https://note.com/hmatsu47/n/n3ad586c31dce)（note）**
 - **[https://github.com/hmatsu47/mysql80_no_usui_hon_source](https://github.com/hmatsu47/mysql80_no_usui_hon_source)**

---

これについては[はてなブログ](https://hmatsu47.hatenablog.com/entry/2019/04/19/003933)にも書きましたが、そこで触れなかった点についてあらためて記しておきます。

また、物理本を作るのに必要なデータもリポジトリに置いてありますので、印刷方法についても軽く説明しておきます。

# 内容

MySQL 8.0 の新機能と以前のバージョン（5.7 およびそれ以前）からの変更点について、

 * 利用例（サンプル）
 * それを扱ったブログ記事等へのリンク

を集めたものです。

 * インストールと設定パラメータ
 * ユーザ管理・認証・権限設定
 * DDL と管理⽤ SQL
 * CTE とウィンドウ関数
 * JSON とドキュメントストア
 * GIS（地理情報システム）
 * レプリケーション
 * オプティマイザとInnoDB
 * Information Schema・Performance Schema
 * その他

利用例（サンプル）は自分が Qiita に掲載した記事のものに手を入れるか、別のデータを利用して作成しました。

ページ数の関係で、機能解説については最小限にとどめています（リンク先をご参照ください）。

# MySQL 8.0 をテーマにした理由

先に示した[はてなブログ](https://hmatsu47.hatenablog.com/entry/2019/04/19/003933)の記事にいくつか書いたのですが、そこに書かなかったことのうち大きな理由としてあげられるのは、

 * **MySQL 8.0 の書籍が商業出版・技術同人誌ともほとんど見当たらないこと（せいぜい雑誌記事程度）**
 * **MySQL 8.0 が [Continuous Delivery Model（継続提供モデル）を採用している](http://gihyo.jp/dev/serial/01/oss-db-various-news/0034)**こと

です。

前者については、商業出版で何冊か企画・執筆中という噂は聞きますが、それなりに時間が掛かりそうな雰囲気です。

---

**2020/06/23 追記（2020/07/24 変更）：現時点では以下の 2 冊が発売中~~または発売予定~~です。**

 - **[15時間でわかる MySQL集中講座](https://gihyo.jp/book/2019/978-4-297-10632-4)（技術評論社）**
 - **[MySQL徹底入門 第4版 MySQL 8.0対応](https://www.shoeisha.co.jp/book/detail/9784798161488)（翔泳社）**

---

後者については、言い換えれば**「GA 以降もどんどん新機能を追加し改良を加えていくことを提供元（Oracle）自身が宣言した」**ということですが、仮に商業出版で MySQL 8.0 についての書籍を出した場合、同じバージョンでも MySQL 自体がどんどん「進化」してしまい書籍の内容がすぐ古くなり置き去りにされていくことになります。

流行りのクラウドサービスや言語・開発環境、ミドルウェアを扱った書籍によく見られる現象ですね。

MySQL 8.0 についていうと、例えば GIS 機能は MySQL 5.7 までと比較してかなり使いやすくはなったものの PostGIS などと比較するとまだまだ不足している部分があり、今後の機能拡張が予想されます。

また、関数など SQL だけでなく、例えば非同期通信やクラスタ構成のコンテナ対応など、RDBMS を利用する環境の変化への対応のようなものも必要になってきます。

こういったものについては、商業出版よりも技術同人誌で、テーマを絞って短いサイクルで扱っていくほうが向いていると思います。

# 無償提供とした理由

こちらも先に示した[はてなブログ](https://hmatsu47.hatenablog.com/entry/2019/04/19/003933)の記事にいくつか書いたのですが、そこに書かなかった大事なポイントとして、

 * **誰かが MySQL 8.0 の特定の機能や関連サービスについて書いてくれるきっかけにしたかった**

というものがあります。

ある意味**「ネタ探し帳」**と言えるかもしれません。

というわけで…**誰か MySQL 8.0 の何かをテーマに技術同人誌を書いて頒布してください！**

（↑この記事で一番伝えたかったのはこれです！）

# 参考情報：印刷データの使い方

先に記した [GitHub リポジトリ](https://github.com/hmatsu47/mysql80_no_usui_hon)には印刷用のデータも含まれています（PDF_print ディレクトリ内）。

これ（ら）の使い方について簡単に説明します。

## 簡易製本する場合

**[「卓上製本機とじ太くん」](http://www.jicworld.co.jp/tojita/)**を使って簡易製本する場合は、

 * B5 で厚さ 0.1mm 前後の用紙
 * B5 タテ・背幅 6mm の製本カバー

を用意し、

 * トンボなしの本文データ（book_no_tombo_x1a.pdf）

をプリンタで両面印刷し、卓上製本機で製本します。

![IMG_20190526_180702.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123899/eea4cb8f-6828-accc-a2a4-89ac932dee7e.jpeg)

そうすると、写真右上のような冊子ができあがります。

---

**2020/07/24 追記：MySQL 8.0.21 追補版には、背幅 1.5mm の製本カバーを使います。但し、10 ページしかないことを考えると、製本せずにホチキス止めしたほうが良いでしょう。**

---

## オンデマンド印刷に出す場合

発注先の印刷屋さんに合わせて、

 * トンボありの本文データ（book_x1a.pdf）
 * トンボなしの本文データ（book_no_tombo_x1a.pdf）

のどちらかを入稿します。

また、必要に応じて、

 * 表紙データ（mysql80_thin_book_cover_cmyk.psd：表 4・表 1 に相当）
 * 表紙の裏側のデータ（mysql80_thin_book_cover_hyo23_cmyk.psd：表 2・表 3 に相当）

も入稿します。

なお、データは Re:VIEW から出力されたままの状態ではなく、RGB → CMYK 変換など印刷用に加工してからリポジトリに上げてあります。

ここでは、例として**[ラクスル（冊子印刷）](https://raksul.com/booklet/)**に表紙データ付きで発注する場合をあげます。

ラクスルの冊子印刷では、1 部のみの発注の場合に低価格になっていることがあります。また、会員登録時などクーポンが発行され、1 部のみの発注が 1 回に限って無料になる場合もあります。

**「冊子・カタログ印刷」**→**「小部数無線綴じ冊子」**を選びます。

サイズ・ページ数（表紙の 4 ページと本文のページ数の合計）、用紙等を選択します。本文はモノクロ印刷にします（変更忘れに注意！）。

終わったら**「1 部・3 営業日後」**を選んでまず注文を完了させます。

![raksul2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123899/be098ee9-3dae-5b87-7e8e-f43b252a3698.png)

---

**2019/08/08 追記：MySQL 8.0.17 対応版で 2 ページ増えて、表紙込み 118 ページになりました。**

**2020/01/04 追記：MySQL 8.0.18 対応版第 3 刷でさらに 2 ページ増えて、表紙込み 120 ページになりました。**

**2020/05/15 追記：MySQL 8.0.20 対応版で構成の見直しを行った結果、表紙込み 106 ページになりました。**

**2020/07/24 追記：MySQL 8.0.21 追補版は、10ページですので無線綴じ製本はできませんし、ページ数が 4 の倍数ではないので中綴じ・スクラム製本のいずれも不可です。製本せず印刷・ホチキス止めするか、8.0.20 対応版と合体させて 116 ページで印刷することをお勧めします。**

**2020/11/14 追記：MySQL 8.0.22 対応版では、表紙込み 118 ページになりました。**
**2021/02/08 追記：MySQL 8.0.23 対応版では、表紙込み 120 ページになりました。**
**2021/05/03 追記：MySQL 8.0.24 対応版では、表紙込み 124 ページになりました。**

---

その後、原稿を入稿しますが、原稿チェックしやすいように、表紙データ・本文データともファイル名をページ番号に変更し、補足説明を書いてアップロード・入稿します。

![raksul3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123899/aa2a4180-7d21-1ebc-14f5-163ccda59867.png)

---

**2019/08/08 追記：MySQL 8.0.17 対応版では以下の通りです。**

 - 118-001.psd 表4・表1
 - 002-117.psd 表2・表3（空白ページ）
 - 003-116.pdf 本文データ

**2020/02/06 追記：MySQL 8.0.18 対応版第 3 刷・8.0.19 対応版では以下の通りです。**

 - 120-001.psd 表4・表1
 - 002-119.psd 表2・表3（空白ページ）
 - 003-118.pdf 本文データ

**2020/05/15 追記：MySQL 8.0.20 対応版では以下の通りです。**

 - 106-001.psd 表4・表1
 - 002-105.psd 表2・表3（空白ページ）
 - 003-104.pdf 本文データ

**2020/07/24 追記：MySQL 8.0.20 対応版と 8.0.21 追補版をまとめて印刷する場合は以下の通りです。**

 - 116-001.psd 表4・表1
 - 002-115.psd 表2・表3（空白ページ）
 - 003-104.pdf 本文データ1（8.0.20対応版）
 - 105-114.pdf 本文データ2（8.0.21追補版）

**2020/11/14 追記：MySQL 8.0.22 対応版では以下の通りです。**

 - 118-001.psd 表4・表1
 - 002-117.psd 表2・表3（空白ページ）
 - 003-116.pdf 本文データ

**2021/02/08 追記：MySQL 8.0.23 対応版では以下の通りです。**

 - 120-001.psd 表4・表1
 - 002-119.psd 表2・表3（空白ページ）
 - 003-118.pdf 本文データ

**2021/05/03 追記：MySQL 8.0.24 対応版では以下の通りです。**

 - 124-001.psd 表4・表1
 - 002-123.psd 表2・表3（空白ページ）
 - 003-122.pdf 本文データ

---

入稿を済ませ、発注先での原稿チェックが終わると、印刷原稿の PDF データがダウンロードできるようになります。

![raksul4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123899/d8f293d1-399d-f3bd-77fd-f902303457a7.png)

表紙（表 4：裏表紙・表 1：オモテ表紙）見開き→表紙の裏側（表 2・表 3）見開き→本文 1 ページ目（単独）→本文 2 ページ目以降（見開き）→本文最終ページ（単独）

の順になっていれば OK です。違っていたら連絡を入れて修正してもらいます。

1 部のみの発注の場合、印刷された冊子はメール便で届きます。