Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MySQLユーザ会のこれまでとこれから / MyNA past and future

MySQLユーザ会のこれまでとこれから / MyNA past and future

E4763acee4cf0377437f614fc372a061?s=128

とみたまさひろ

August 26, 2020
Tweet

Transcript

  1. MySQLユーザ会の MySQLユーザ会の これまでとこれから これまでとこれから MySQL Technology Cafe #9 2020-08-26 とみたまさひろ

    1
  2. 自己紹介 自己紹介 とみたまさひろ 日本MySQLユーザ会の名ばかり代表 文字化け担当 Ruby / メール https://twitter.com/tmtms https://tmtms.hatenablog.com

    2
  3. 最近の活動 その1 最近の活動 その1 mrubyudf mrubyudf Ruby で MySQL の

    UDF を書くためのツール https://github.com/tmtm/mrubyudf https://tmtms.hatenablog.com/entry/202005/mrubyud 3
  4. 最近の活動 その2 最近の活動 その2 MySQL Parameters MySQL Parameters / エラーメッセージ追加

    show variables 追加 プラグイン/コンポーネントのパラメータも追加 https://mysql-params.tmtms.net 5.0〜8.0 8.0.* 4
  5. 最近の活動 その3 最近の活動 その3 MySQL徹底入門第4版 MySQL徹底入門第4版 5章「ユーザー管理」 11章「文字コードと日本語環境」 など、全体の約 1/10

    https://www.seshop.com/product/detail/23085 5
  6. MySQLユーザ会ができるまで MySQLユーザ会ができるまで 6

  7. 記憶が怪しいので嘘かもしれません 7

  8. 1997年 1997年 8

  9. 会社の内製ツール作成&メンテ 会社で使ってたDBがInf◯rmix(伏せ字)だった ESQL/C - C に SQL を埋め込む謎言語 メッチャ使いづらい 9

  10. 「普通にCから使える無料のDBないかなー」 10

  11. MySQL と Postgres95 を発見 当時 Google は無かったらしい どうやって探したんだっけ… 11

  12. テキトーに速度測ってみたら MySQL の方が速かった 「じゃあ MySQL でいいや」 「英語苦手だけど もあるし」 (廣川類さん 翻訳)

    日本語マニュアル @rui_hi 12
  13. しかし実はその日本語マニュアルの MySQL の バージョンは古かった… 13

  14. しかたなく英語のマニュアルを読む… 「英語わからん」 「訳しながら読んでると3行前のを忘れる」 「訳した文を書きながら読むか…」 14

  15. マニュアルの全文訳完成 マニュアルの全文訳完成 1997/10 質はそれなり 「せっかくだからウェブに公開しよう」 (たしか Monty にメールで公開許可もらったはず…) 15

  16. 日本語を検索すると結果がおかしい (当時のUNIXではEUC-JPが主流) 16

  17. デフォルトの latin1 だと À(C0) = Á(C1) = Â(C2)… = à(E0)

    = á(E1) = â(E2)… 17
  18. EUC-JPの日本語文字は 0xA1〜0xFE だ(A4C0) = ち(A4C1) = ぢ(A4C2)… = め(A4E0) =

    も(A4E1) = ゃ(A4E2)… 18
  19. 「latin1 じゃなくて binary を使えば解決!」 (binary はすべての文字を区別) 19

  20. ところが LIKE "%海%" で「続く」がマッチ! 20

  21. 「%海%」: * B3 A4 * 「続く」: C2 B3 A4 AF

    21
  22. 「バイト単位の比較ではダメだ…」 LIKE で文字単位にマッチングさせるパッチを作成 22

  23. 日本語 EUC パッチ誕生 日本語 EUC パッチ誕生 1997/11 文字コード名は jeuc 23

  24. 1998年 1998年 24

  25. 個人宛にメールで問い合わせが来るけど 情報が個人間に閉じるのがもったいない 「誰かメーリングリスト作ってくれないかなー」 とウェブページに書いたら 25

  26. 「作ってみた」 by ソフトエージェンシー 26

  27. メーリングリスト発足 メーリングリスト発足 1998/1 27

  28. 当時のフリーソフトウェア界隈のMLは 初心者に厳しくて殺伐としてた それは嫌だったのでゆるふわなML運営 28

  29. メーリングリストで「シフトJISを使いたい」 29

  30. シフトJISは2バイト目に 5C(\) がある 表(95 5C) 「十倍の能力が噂の表計算ソフト」 「表n」→「95 \ n」→「95 改行」

    LIKE だけじゃなくて文字列全般的な考慮が必要 30
  31. 似たようなマルチバイトcharset BIG5 があったので それを真似てシフトJIS対応パッチを作成 31

  32. UJIS&SJIS対応パッチ誕生 UJIS&SJIS対応パッチ誕生 1998/3 この頃から jeuc から ujis に名前を変えたらしい 当時は ujis

    または eucjp が一般的だった (ujis と sjis で韻を踏んでるし…) 32
  33. 3.21.30 にパッチが取り込まれる 3.21.30 にパッチが取り込まれる 1998/5 パッチをあてなくても普通に日本語が使えるように リリース頻度が早くてパッチのメンテも大変だったので パッチを送ったら取り込まれた 33

  34. MySQLで日本語が使えてるのは私のおかげ(?) (その後ユニコード対応時に実装され直したけど) 34

  35. でもその後も configure --with-charset=ujis でエラー になるとかあったらしい パッチが取り込まれたといっても安心できない… 35

  36. MySQL/Ruby MySQL/Ruby 1998/8 1998年頃から Ruby を使い始めたらしい Perl を使ってたけどCライブラリとのバインディングが 作りにくかったので Ruby

    を使い始めた Ruby の MySQL ライブラリが無かったので作った 36
  37. RailsとかでMySQLが使えてるのは私のおかげ(?) (今はもう使われてないけど) 37

  38. 2000年 2000年 38

  39. MLの過去ログをウェブで公開したい 39

  40. どこのサーバー使おうか せっかくだからドメイン名とる? 「日本MySQLユーザ会」とかでっちあげて mysql.gr.jp とっちゃえ 40

  41. 日本MySQLユーザ会 発足 日本MySQLユーザ会 発足 2000/3 ドメイン名を取るためには 代表者を決めないといけないので 流れで自分が代表者に 41

  42. 略称候補は色々あったけど ということで MyNA に (当時は PostgreSQL がメジャーだった) MySQLって、日本じゃマイナー (MINOR)だよね。それは昔の話さ。 と言える日をまつ人の集団。

    http://www.mysql.gr.jp/mysqlml/mysql/msg/1730 42
  43. MyNA の目的 MyNA の目的 日本での MySQL の普及を図る。 ユーザ間のコミュニケーションを図る。 MySQL の日本語化の検証/開発を行なう。

    43
  44. ユーザ会発足後 ユーザ会発足後 44

  45. MySQL徹底入門 MySQL徹底入門 2000/4 に出版社から打診(早! 2001/1 発売 45

  46. MySQL 3.23 リリース MySQL 3.23 リリース 2001/1 46

  47. MySQL 4.0 リリース MySQL 4.0 リリース 2003/3 47

  48. MySQL 4.1 リリース MySQL 4.1 リリース 2004/10 文字コードまわりの突然の変更! 48

  49. Unicode サポート カラム毎に文字コード指定可能 接続に合わせてサーバー側で文字コード変換 バージョン 0.1 しか違わないのに… 文字コード変換まわりで日本語の闇が表面化 「JISに無い文字が消える」 MyNA

    でパッチ作成したり 49
  50. MySQL 5.0 リリース MySQL 5.0 リリース 2005/10 50

  51. MySQL 5.1 リリース MySQL 5.1 リリース 2008/11 51

  52. MySQL 5.5 リリース MySQL 5.5 リリース 2010/12 utf8mb4 追加 52

  53. MySQL 5.6 リリース MySQL 5.6 リリース 2013/2 utf8mb4_unicode_520_ci 53

  54. MySQL 5.7 リリース MySQL 5.7 リリース 2015/10 54

  55. 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
  56. これから これから 56

  57. MyNA の目的 MyNA の目的 日本での MySQL の普及を図る。 ユーザ間のコミュニケーションを図る。 MySQL の日本語化の検証/開発を行なう。

    57
  58. 日本での MySQL の普及を図る。 日本での MySQL の普及を図る。 十分メジャー もうマイナーじゃない 58

  59. MySQL の日本語化の検証/開発を行なう。 MySQL の日本語化の検証/開発を行なう。 最近はだいたい問題ない 4.1 以降は文字コードまわりは安定してる 59

  60. ユーザ間のコミュニケーションを図る。 ユーザ間のコミュニケーションを図る。 これか!? 60

  61. イベントは盛ん イベントは盛ん 主に sakaik さんと yoku0825 さんとオラクルさん 61

  62. オンラインコミュニケーション オンラインコミュニケーション 62

  63. いまどきメーリングリストはないよね いまどきメーリングリストはないよね メーリングリストの流量 63

  64. Slack ? Slack ? 外部サービスに依存するのは避けたい 登録しないと見れないのもアレ 64

  65. 考え中 65

  66. おわり 66