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
100
MySQLユーザ会のこれまでとこれから / MyNA past and future
とみたまさひろ
August 26, 2020
Tweet
Share
More Decks by とみたまさひろ
See All by とみたまさひろ
日本MySQLユーザ会ができるまで / making MyNA
tmtms
1
330
Ruby on Browser - RubyWorld Conference 2024
tmtms
1
1k
Ruby on Browser
tmtms
1
1.7k
私のRSpecの書き方 / How I write RSpec
tmtms
5
1.9k
ショートカットと端末 / shortcut & terminal
tmtms
2
790
文字ときどきRuby / Character and Ruby (NSEG)
tmtms
2
2.1k
文字ときどきRuby / Character and Ruby
tmtms
0
690
Linux用キーリマッパーを作る技術 / How to make Key Remapper
tmtms
0
460
MIMEヘッダエンコーディングは複雑すぎてつらい / MIME header encoding is hard
tmtms
3
1.5k
Other Decks in Technology
See All in Technology
BCMathを高速化した一部始終をC言語でガチ目に解説する / BCMath performance improvement explanation
sakitakamachi
2
1.2k
問題解決に役立つ数理工学
recruitengineers
PRO
6
980
「エンジニアマネージャー」の役割を担っている / 担ってみたい方へのキャリアパスガイド
coconala_engineer
1
240
ソフトウェアプロジェクトの成功率が上がらない原因-「社会価値を考える」ということ-
ytanaka5569
0
120
17年のQA経験が導いたスクラムマスターへの道 / 17 Years in QA to Scrum Master
toma_sm
0
350
Engineering Managementのグローバルトレンド #emoasis / Engineering Management Global Trend
kyonmm
PRO
6
970
ペアプログラミングにQAが加わった!職能を超えたモブプログラミングの事例と学び
tonionagauzzi
1
130
Tirez profit de Messenger pour améliorer votre architecture
tucksaun
1
120
一人QA時代が終わり、 QAチームが立ち上がった話
ma_cho29
0
270
バクラクでのSystem Risk Records導入による変化と改善の取り組み/Changes and Improvement Initiatives Resulting from the Implementation of System Risk Records
taddy_919
0
200
技術的負債を正しく理解し、正しく付き合う #phperkaigi / PHPerKaigi 2025
shogogg
7
1.7k
Cloud Native PG 使ってみて気づいたことと最新機能の紹介 - 第52回PostgreSQLアンカンファレンス
seinoyu
0
160
Featured
See All Featured
Statistics for Hackers
jakevdp
797
220k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Building Applications with DynamoDB
mza
94
6.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
12
1.4k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.3k
Embracing the Ebb and Flow
colly
84
4.6k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.6k
Building Adaptive Systems
keathley
40
2.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
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