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
130
MySQLユーザ会のこれまでとこれから / MyNA past and future
とみたまさひろ
August 26, 2020
Tweet
Share
More Decks by とみたまさひろ
See All by とみたまさひろ
夢の印税生活 / Life on Royalties
tmtms
0
310
文字列の並び順 / String Collation
tmtms
1
130
日本MySQLユーザ会ができるまで / making MyNA
tmtms
1
650
Ruby on Browser - RubyWorld Conference 2024
tmtms
1
1.2k
Ruby on Browser
tmtms
1
2k
私のRSpecの書き方 / How I write RSpec
tmtms
5
2.1k
ショートカットと端末 / shortcut & terminal
tmtms
2
900
文字ときどきRuby / Character and Ruby (NSEG)
tmtms
2
2.3k
文字ときどきRuby / Character and Ruby
tmtms
0
1k
Other Decks in Technology
See All in Technology
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
43k
HR Force における DWH の併用事例 ~ サービス基盤としての BigQuery / 分析基盤としての Snowflake ~@Cross Data Platforms Meetup #2「BigQueryと愉快な仲間たち」
ryo_suzuki
0
220
OCI Network Firewall 概要
oracle4engineer
PRO
2
7.9k
業務効率化をさらに加速させる、ノーコードツールとStep Functionsのハイブリッド化
smt7174
2
140
そのWAFのブロック、どう活かす? サービスを守るための実践的多層防御と思考法 / WAF blocks defense decision
kaminashi
0
200
incident_commander_demaecan__1_.pdf
demaecan
0
130
GoでもGUIアプリを作りたい!
kworkdev
PRO
0
140
React19.2のuseEffectEventを追う
maguroalternative
0
220
リセラー企業のテクサポ担当が考える、生成 AI 時代のトラブルシュート 2025
kazzpapa3
1
330
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3k
エンタメとAIのための3Dパラレルワールド構築(GPU UNITE 2025 特別講演)
pfn
PRO
0
320
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
8.8k
Featured
See All Featured
How GitHub (no longer) Works
holman
315
140k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Bash Introduction
62gerente
615
210k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
20
1.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
49
51k
RailsConf 2023
tenderlove
30
1.2k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
115
20k
Mobile First: as difficult as doing things right
swwweet
224
10k
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