Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
MySQLユーザ会の MySQLユーザ会の これまでとこれから これまでとこれから MySQL Technology Cafe #9 2020-08-26 とみたまさひろ 1
Slide 2
Slide 2 text
自己紹介 自己紹介 とみたまさひろ 日本MySQLユーザ会の名ばかり代表 文字化け担当 Ruby / メール https://twitter.com/tmtms https://tmtms.hatenablog.com 2
Slide 3
Slide 3 text
最近の活動 その1 最近の活動 その1 mrubyudf mrubyudf Ruby で MySQL の UDF を書くためのツール https://github.com/tmtm/mrubyudf https://tmtms.hatenablog.com/entry/202005/mrubyud 3
Slide 4
Slide 4 text
最近の活動 その2 最近の活動 その2 MySQL Parameters MySQL Parameters / エラーメッセージ追加 show variables 追加 プラグイン/コンポーネントのパラメータも追加 https://mysql-params.tmtms.net 5.0〜8.0 8.0.* 4
Slide 5
Slide 5 text
最近の活動 その3 最近の活動 その3 MySQL徹底入門第4版 MySQL徹底入門第4版 5章「ユーザー管理」 11章「文字コードと日本語環境」 など、全体の約 1/10 https://www.seshop.com/product/detail/23085 5
Slide 6
Slide 6 text
MySQLユーザ会ができるまで MySQLユーザ会ができるまで 6
Slide 7
Slide 7 text
記憶が怪しいので嘘かもしれません 7
Slide 8
Slide 8 text
1997年 1997年 8
Slide 9
Slide 9 text
会社の内製ツール作成&メンテ 会社で使ってたDBがInf◯rmix(伏せ字)だった ESQL/C - C に SQL を埋め込む謎言語 メッチャ使いづらい 9
Slide 10
Slide 10 text
「普通にCから使える無料のDBないかなー」 10
Slide 11
Slide 11 text
MySQL と Postgres95 を発見 当時 Google は無かったらしい どうやって探したんだっけ… 11
Slide 12
Slide 12 text
テキトーに速度測ってみたら MySQL の方が速かった 「じゃあ MySQL でいいや」 「英語苦手だけど もあるし」 (廣川類さん 翻訳) 日本語マニュアル @rui_hi 12
Slide 13
Slide 13 text
しかし実はその日本語マニュアルの MySQL の バージョンは古かった… 13
Slide 14
Slide 14 text
しかたなく英語のマニュアルを読む… 「英語わからん」 「訳しながら読んでると3行前のを忘れる」 「訳した文を書きながら読むか…」 14
Slide 15
Slide 15 text
マニュアルの全文訳完成 マニュアルの全文訳完成 1997/10 質はそれなり 「せっかくだからウェブに公開しよう」 (たしか Monty にメールで公開許可もらったはず…) 15
Slide 16
Slide 16 text
日本語を検索すると結果がおかしい (当時のUNIXではEUC-JPが主流) 16
Slide 17
Slide 17 text
デフォルトの latin1 だと À(C0) = Á(C1) = Â(C2)… = à(E0) = á(E1) = â(E2)… 17
Slide 18
Slide 18 text
EUC-JPの日本語文字は 0xA1〜0xFE だ(A4C0) = ち(A4C1) = ぢ(A4C2)… = め(A4E0) = も(A4E1) = ゃ(A4E2)… 18
Slide 19
Slide 19 text
「latin1 じゃなくて binary を使えば解決!」 (binary はすべての文字を区別) 19
Slide 20
Slide 20 text
ところが LIKE "%海%" で「続く」がマッチ! 20
Slide 21
Slide 21 text
「%海%」: * B3 A4 * 「続く」: C2 B3 A4 AF 21
Slide 22
Slide 22 text
「バイト単位の比較ではダメだ…」 LIKE で文字単位にマッチングさせるパッチを作成 22
Slide 23
Slide 23 text
日本語 EUC パッチ誕生 日本語 EUC パッチ誕生 1997/11 文字コード名は jeuc 23
Slide 24
Slide 24 text
1998年 1998年 24
Slide 25
Slide 25 text
個人宛にメールで問い合わせが来るけど 情報が個人間に閉じるのがもったいない 「誰かメーリングリスト作ってくれないかなー」 とウェブページに書いたら 25
Slide 26
Slide 26 text
「作ってみた」 by ソフトエージェンシー 26
Slide 27
Slide 27 text
メーリングリスト発足 メーリングリスト発足 1998/1 27
Slide 28
Slide 28 text
当時のフリーソフトウェア界隈のMLは 初心者に厳しくて殺伐としてた それは嫌だったのでゆるふわなML運営 28
Slide 29
Slide 29 text
メーリングリストで「シフトJISを使いたい」 29
Slide 30
Slide 30 text
シフトJISは2バイト目に 5C(\) がある 表(95 5C) 「十倍の能力が噂の表計算ソフト」 「表n」→「95 \ n」→「95 改行」 LIKE だけじゃなくて文字列全般的な考慮が必要 30
Slide 31
Slide 31 text
似たようなマルチバイトcharset BIG5 があったので それを真似てシフトJIS対応パッチを作成 31
Slide 32
Slide 32 text
UJIS&SJIS対応パッチ誕生 UJIS&SJIS対応パッチ誕生 1998/3 この頃から jeuc から ujis に名前を変えたらしい 当時は ujis または eucjp が一般的だった (ujis と sjis で韻を踏んでるし…) 32
Slide 33
Slide 33 text
3.21.30 にパッチが取り込まれる 3.21.30 にパッチが取り込まれる 1998/5 パッチをあてなくても普通に日本語が使えるように リリース頻度が早くてパッチのメンテも大変だったので パッチを送ったら取り込まれた 33
Slide 34
Slide 34 text
MySQLで日本語が使えてるのは私のおかげ(?) (その後ユニコード対応時に実装され直したけど) 34
Slide 35
Slide 35 text
でもその後も configure --with-charset=ujis でエラー になるとかあったらしい パッチが取り込まれたといっても安心できない… 35
Slide 36
Slide 36 text
MySQL/Ruby MySQL/Ruby 1998/8 1998年頃から Ruby を使い始めたらしい Perl を使ってたけどCライブラリとのバインディングが 作りにくかったので Ruby を使い始めた Ruby の MySQL ライブラリが無かったので作った 36
Slide 37
Slide 37 text
RailsとかでMySQLが使えてるのは私のおかげ(?) (今はもう使われてないけど) 37
Slide 38
Slide 38 text
2000年 2000年 38
Slide 39
Slide 39 text
MLの過去ログをウェブで公開したい 39
Slide 40
Slide 40 text
どこのサーバー使おうか せっかくだからドメイン名とる? 「日本MySQLユーザ会」とかでっちあげて mysql.gr.jp とっちゃえ 40
Slide 41
Slide 41 text
日本MySQLユーザ会 発足 日本MySQLユーザ会 発足 2000/3 ドメイン名を取るためには 代表者を決めないといけないので 流れで自分が代表者に 41
Slide 42
Slide 42 text
略称候補は色々あったけど ということで MyNA に (当時は PostgreSQL がメジャーだった) MySQLって、日本じゃマイナー (MINOR)だよね。それは昔の話さ。 と言える日をまつ人の集団。 http://www.mysql.gr.jp/mysqlml/mysql/msg/1730 42
Slide 43
Slide 43 text
MyNA の目的 MyNA の目的 日本での MySQL の普及を図る。 ユーザ間のコミュニケーションを図る。 MySQL の日本語化の検証/開発を行なう。 43
Slide 44
Slide 44 text
ユーザ会発足後 ユーザ会発足後 44
Slide 45
Slide 45 text
MySQL徹底入門 MySQL徹底入門 2000/4 に出版社から打診(早! 2001/1 発売 45
Slide 46
Slide 46 text
MySQL 3.23 リリース MySQL 3.23 リリース 2001/1 46
Slide 47
Slide 47 text
MySQL 4.0 リリース MySQL 4.0 リリース 2003/3 47
Slide 48
Slide 48 text
MySQL 4.1 リリース MySQL 4.1 リリース 2004/10 文字コードまわりの突然の変更! 48
Slide 49
Slide 49 text
Unicode サポート カラム毎に文字コード指定可能 接続に合わせてサーバー側で文字コード変換 バージョン 0.1 しか違わないのに… 文字コード変換まわりで日本語の闇が表面化 「JISに無い文字が消える」 MyNA でパッチ作成したり 49
Slide 50
Slide 50 text
MySQL 5.0 リリース MySQL 5.0 リリース 2005/10 50
Slide 51
Slide 51 text
MySQL 5.1 リリース MySQL 5.1 リリース 2008/11 51
Slide 52
Slide 52 text
MySQL 5.5 リリース MySQL 5.5 リリース 2010/12 utf8mb4 追加 52
Slide 53
Slide 53 text
MySQL 5.6 リリース MySQL 5.6 リリース 2013/2 utf8mb4_unicode_520_ci 53
Slide 54
Slide 54 text
MySQL 5.7 リリース MySQL 5.7 リリース 2015/10 54
Slide 55
Slide 55 text
MySQL 8.0 MySQL 8.0 リリース リリース 2018/4 デフォルトが utf8mb4 に 文字化けさよなら utf8mb4_0900_ai_ci utf8mb4_0900_as_ci utf8mb4_0900_as_cs utf8mb4_ja_0900_as_cs utf8mb4_ja_0900_as_cs_ks 55
Slide 56
Slide 56 text
これから これから 56
Slide 57
Slide 57 text
MyNA の目的 MyNA の目的 日本での MySQL の普及を図る。 ユーザ間のコミュニケーションを図る。 MySQL の日本語化の検証/開発を行なう。 57
Slide 58
Slide 58 text
日本での MySQL の普及を図る。 日本での MySQL の普及を図る。 十分メジャー もうマイナーじゃない 58
Slide 59
Slide 59 text
MySQL の日本語化の検証/開発を行なう。 MySQL の日本語化の検証/開発を行なう。 最近はだいたい問題ない 4.1 以降は文字コードまわりは安定してる 59
Slide 60
Slide 60 text
ユーザ間のコミュニケーションを図る。 ユーザ間のコミュニケーションを図る。 これか!? 60
Slide 61
Slide 61 text
イベントは盛ん イベントは盛ん 主に sakaik さんと yoku0825 さんとオラクルさん 61
Slide 62
Slide 62 text
オンラインコミュニケーション オンラインコミュニケーション 62
Slide 63
Slide 63 text
いまどきメーリングリストはないよね いまどきメーリングリストはないよね メーリングリストの流量 63
Slide 64
Slide 64 text
Slack ? Slack ? 外部サービスに依存するのは避けたい 登録しないと見れないのもアレ 64
Slide 65
Slide 65 text
考え中 65
Slide 66
Slide 66 text
おわり 66