Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MySQLユーザ会のこれまでとこれから / MyNA past and future
Search
とみたまさひろ
August 26, 2020
Technology
0
87
MySQLユーザ会のこれまでとこれから / MyNA past and future
とみたまさひろ
August 26, 2020
Tweet
Share
More Decks by とみたまさひろ
See All by とみたまさひろ
Ruby on Browser - RubyWorld Conference 2024
tmtms
1
370
Ruby on Browser
tmtms
1
1.3k
私のRSpecの書き方 / How I write RSpec
tmtms
5
1.4k
ショートカットと端末 / shortcut & terminal
tmtms
2
380
文字ときどきRuby / Character and Ruby (NSEG)
tmtms
2
1.7k
文字ときどきRuby / Character and Ruby
tmtms
0
520
Linux用キーリマッパーを作る技術 / How to make Key Remapper
tmtms
0
390
MIMEヘッダエンコーディングは複雑すぎてつらい / MIME header encoding is hard
tmtms
3
1.5k
Net::SMTP
tmtms
1
300
Other Decks in Technology
See All in Technology
バクラクのドキュメント解析技術と実データにおける課題 / layerx-ccc-winter-2024
shimacos
2
1k
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
160
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
140
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
300
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.8k
ブラックフライデーで購入したPixel9で、Gemini Nanoを動かしてみた
marchin1989
1
510
Kubeshark で Kubernetes の Traffic を眺めてみよう/Let's Look at k8s Traffic with Kubeshark
kota2and3kan
3
370
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
180
AIのコンプラは何故しんどい?
shujisado
1
190
レンジャーシステムズ | 会社紹介(採用ピッチ)
rssytems
0
150
社内イベント管理システムを1週間でAKSからACAに移行した話し
shingo_kawahara
0
180
生成AIのガバナンスの全体像と現実解
fnifni
1
180
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Designing Experiences People Love
moore
138
23k
Adopting Sorbet at Scale
ufuk
73
9.1k
Docker and Python
trallard
41
3.1k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Making Projects Easy
brettharned
116
5.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Transcript
MySQLユーザ会の MySQLユーザ会の これまでとこれから これまでとこれから MySQL Technology Cafe #9 2020-08-26 とみたまさひろ
1
自己紹介 自己紹介 とみたまさひろ 日本MySQLユーザ会の名ばかり代表 文字化け担当 Ruby / メール https://twitter.com/tmtms https://tmtms.hatenablog.com
2
最近の活動 その1 最近の活動 その1 mrubyudf mrubyudf Ruby で MySQL の
UDF を書くためのツール https://github.com/tmtm/mrubyudf https://tmtms.hatenablog.com/entry/202005/mrubyud 3
最近の活動 その2 最近の活動 その2 MySQL Parameters MySQL Parameters / エラーメッセージ追加
show variables 追加 プラグイン/コンポーネントのパラメータも追加 https://mysql-params.tmtms.net 5.0〜8.0 8.0.* 4
最近の活動 その3 最近の活動 その3 MySQL徹底入門第4版 MySQL徹底入門第4版 5章「ユーザー管理」 11章「文字コードと日本語環境」 など、全体の約 1/10
https://www.seshop.com/product/detail/23085 5
MySQLユーザ会ができるまで MySQLユーザ会ができるまで 6
記憶が怪しいので嘘かもしれません 7
1997年 1997年 8
会社の内製ツール作成&メンテ 会社で使ってたDBがInf◯rmix(伏せ字)だった ESQL/C - C に SQL を埋め込む謎言語 メッチャ使いづらい 9
「普通にCから使える無料のDBないかなー」 10
MySQL と Postgres95 を発見 当時 Google は無かったらしい どうやって探したんだっけ… 11
テキトーに速度測ってみたら MySQL の方が速かった 「じゃあ MySQL でいいや」 「英語苦手だけど もあるし」 (廣川類さん 翻訳)
日本語マニュアル @rui_hi 12
しかし実はその日本語マニュアルの MySQL の バージョンは古かった… 13
しかたなく英語のマニュアルを読む… 「英語わからん」 「訳しながら読んでると3行前のを忘れる」 「訳した文を書きながら読むか…」 14
マニュアルの全文訳完成 マニュアルの全文訳完成 1997/10 質はそれなり 「せっかくだからウェブに公開しよう」 (たしか Monty にメールで公開許可もらったはず…) 15
日本語を検索すると結果がおかしい (当時のUNIXではEUC-JPが主流) 16
デフォルトの latin1 だと À(C0) = Á(C1) = Â(C2)… = à(E0)
= á(E1) = â(E2)… 17
EUC-JPの日本語文字は 0xA1〜0xFE だ(A4C0) = ち(A4C1) = ぢ(A4C2)… = め(A4E0) =
も(A4E1) = ゃ(A4E2)… 18
「latin1 じゃなくて binary を使えば解決!」 (binary はすべての文字を区別) 19
ところが LIKE "%海%" で「続く」がマッチ! 20
「%海%」: * B3 A4 * 「続く」: C2 B3 A4 AF
21
「バイト単位の比較ではダメだ…」 LIKE で文字単位にマッチングさせるパッチを作成 22
日本語 EUC パッチ誕生 日本語 EUC パッチ誕生 1997/11 文字コード名は jeuc 23
1998年 1998年 24
個人宛にメールで問い合わせが来るけど 情報が個人間に閉じるのがもったいない 「誰かメーリングリスト作ってくれないかなー」 とウェブページに書いたら 25
「作ってみた」 by ソフトエージェンシー 26
メーリングリスト発足 メーリングリスト発足 1998/1 27
当時のフリーソフトウェア界隈のMLは 初心者に厳しくて殺伐としてた それは嫌だったのでゆるふわなML運営 28
メーリングリストで「シフトJISを使いたい」 29
シフトJISは2バイト目に 5C(\) がある 表(95 5C) 「十倍の能力が噂の表計算ソフト」 「表n」→「95 \ n」→「95 改行」
LIKE だけじゃなくて文字列全般的な考慮が必要 30
似たようなマルチバイトcharset BIG5 があったので それを真似てシフトJIS対応パッチを作成 31
UJIS&SJIS対応パッチ誕生 UJIS&SJIS対応パッチ誕生 1998/3 この頃から jeuc から ujis に名前を変えたらしい 当時は ujis
または eucjp が一般的だった (ujis と sjis で韻を踏んでるし…) 32
3.21.30 にパッチが取り込まれる 3.21.30 にパッチが取り込まれる 1998/5 パッチをあてなくても普通に日本語が使えるように リリース頻度が早くてパッチのメンテも大変だったので パッチを送ったら取り込まれた 33
MySQLで日本語が使えてるのは私のおかげ(?) (その後ユニコード対応時に実装され直したけど) 34
でもその後も configure --with-charset=ujis でエラー になるとかあったらしい パッチが取り込まれたといっても安心できない… 35
MySQL/Ruby MySQL/Ruby 1998/8 1998年頃から Ruby を使い始めたらしい Perl を使ってたけどCライブラリとのバインディングが 作りにくかったので Ruby
を使い始めた Ruby の MySQL ライブラリが無かったので作った 36
RailsとかでMySQLが使えてるのは私のおかげ(?) (今はもう使われてないけど) 37
2000年 2000年 38
MLの過去ログをウェブで公開したい 39
どこのサーバー使おうか せっかくだからドメイン名とる? 「日本MySQLユーザ会」とかでっちあげて mysql.gr.jp とっちゃえ 40
日本MySQLユーザ会 発足 日本MySQLユーザ会 発足 2000/3 ドメイン名を取るためには 代表者を決めないといけないので 流れで自分が代表者に 41
略称候補は色々あったけど ということで MyNA に (当時は PostgreSQL がメジャーだった) MySQLって、日本じゃマイナー (MINOR)だよね。それは昔の話さ。 と言える日をまつ人の集団。
http://www.mysql.gr.jp/mysqlml/mysql/msg/1730 42
MyNA の目的 MyNA の目的 日本での MySQL の普及を図る。 ユーザ間のコミュニケーションを図る。 MySQL の日本語化の検証/開発を行なう。
43
ユーザ会発足後 ユーザ会発足後 44
MySQL徹底入門 MySQL徹底入門 2000/4 に出版社から打診(早! 2001/1 発売 45
MySQL 3.23 リリース MySQL 3.23 リリース 2001/1 46
MySQL 4.0 リリース MySQL 4.0 リリース 2003/3 47
MySQL 4.1 リリース MySQL 4.1 リリース 2004/10 文字コードまわりの突然の変更! 48
Unicode サポート カラム毎に文字コード指定可能 接続に合わせてサーバー側で文字コード変換 バージョン 0.1 しか違わないのに… 文字コード変換まわりで日本語の闇が表面化 「JISに無い文字が消える」 MyNA
でパッチ作成したり 49
MySQL 5.0 リリース MySQL 5.0 リリース 2005/10 50
MySQL 5.1 リリース MySQL 5.1 リリース 2008/11 51
MySQL 5.5 リリース MySQL 5.5 リリース 2010/12 utf8mb4 追加 52
MySQL 5.6 リリース MySQL 5.6 リリース 2013/2 utf8mb4_unicode_520_ci 53
MySQL 5.7 リリース MySQL 5.7 リリース 2015/10 54
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
MyNA の目的 MyNA の目的 日本での MySQL の普及を図る。 ユーザ間のコミュニケーションを図る。 MySQL の日本語化の検証/開発を行なう。
57
日本での MySQL の普及を図る。 日本での MySQL の普及を図る。 十分メジャー もうマイナーじゃない 58
MySQL の日本語化の検証/開発を行なう。 MySQL の日本語化の検証/開発を行なう。 最近はだいたい問題ない 4.1 以降は文字コードまわりは安定してる 59
ユーザ間のコミュニケーションを図る。 ユーザ間のコミュニケーションを図る。 これか!? 60
イベントは盛ん イベントは盛ん 主に sakaik さんと yoku0825 さんとオラクルさん 61
オンラインコミュニケーション オンラインコミュニケーション 62
いまどきメーリングリストはないよね いまどきメーリングリストはないよね メーリングリストの流量 63
Slack ? Slack ? 外部サービスに依存するのは避けたい 登録しないと見れないのもアレ 64
考え中 65
おわり 66