読者です 読者をやめる 読者になる 読者になる

OSS貢献者賞を頂いたので昔話をします

MySQL

この記事は、おっさんの自分語りと昔話なので、あまり読む価値はないです。

もう1ヶ月くらい前になるのですが、OSS貢献者賞を頂きました。

最近はあまりOSSに貢献するようなことをしてる自覚はなかったので、なぜ自分が候補にあがったのか謎でした。OSS貢献者賞のページによると、

影響力のある開発プロジェクトを創造、運営した開発者やグローバルプロジェクトにおいて活躍する卓越した開発者及び普及に貢献した方を表彰するもの

ということらしいです。創造や運営してないし、たぶん卓越した開発者でもないので、「普及に貢献した」だろうと思い、じゃあ最近のことじゃなくて過去の実績が評価されってことならいいかと、受賞させていただくことにしました。

ちゃんとした受賞理由は発表のページに載るまで知らされてなかったのですが、予想通り MySQL 関係でした。

MySQLの初期の日本語化パッチを作成し、国内での普及に大きく貢献した。またその後立ち上がった日本MySQLユーザ会の代表を務めるなどコミュニティの成長にも貢献している。

他の貢献者賞の受賞者の受賞理由に比べると 1/3 くらいで一番短くて、貢献度の少なさを物語ってますね。

ペンネームがひらがなのおかげで受賞者の表記順が先頭でした。「50音順」って書いてあるけど違いますね、これ。

授賞式には諸般の事情で残念ながら出席できませんでした。出席したら何か喋らされたらしいのですが、自分は人前で喋るのがあまり得意じゃないので、まあ良かったのかもしれません。

授賞式で喋らなかった代わりに、自分の MySQL との関わりをここに書いておきます。

MySQL

20年近く前の話ですが、当時、私は某商用RDBMS にアクセスするための社内用ツールを C で書いていました。が、その RDBMS は C のコード中に埋め込みで SQL を記述するという変態的な API しか持っていなかったので、コーディングが非常に面倒でした。

RDBMS と言っても RDBMS らしい使い方はしておらず、プログラムからリモートサーバーにデータを格納&参照できれば十分だったので、フリーソフトでまともな C の API を持っている RDBMS を探したところ、MySQL と Postgres95 を見つけました。軽く試して見たところ当時は MySQL の方が遥かに高速だったので、MySQL を使用することにしました。

ドキュメント翻訳と日本語化パッチ (1997年10月)

自分は英語はとても苦手だったので(今でも苦手ですけど)、英語のドキュメントを日本語に翻訳しながら読んでいたのですが、読んでるそばから忘れていくので、翻訳した文を書きながら読むことにしました。かなりの部分を訳すことができたので、ウェブ上に公開すると自分以外の人の役に立つかもしれないと思って、MySQL の作者の Monty の許可を得て、ウェブ上に公開しました。

当時の MySQL は LIKE で日本語を正しく扱えなかったので、EUC-JP を扱えるようにするためのパッチも作って公開しました。

メーリングリスト (1998年1月)

日本語ドキュメントと日本語化パッチはわりと好評だったようで、いろんな人に使ってもらえたようです。

個人宛のメールで問い合わせに回答したりしていたのですが、メーリングリストが欲しいなぁ…とウェブページに書いておいたら、メーリングリストを作ってもらえました。

マルチバイトパッチ (1998年5月)

私が作った日本語の ujis(EUC-JP) と sjis(SHIFT_JIS) パッチが MySQL 本家に取り込まれました。これは、ただ EUC-JP と SHIFT_JIS に対応させるだけではなく、マルチバイト文字セットを扱うための汎用的な仕組みも含んでいました。

現在 MySQL を日本語で使えてるのは私のおかげなので、みなさん私に感謝してもいいのですよ。

(実は4.1でマルチバイトまわりの実装は大きく変更されたので現在使えてるのは私のおかげではないです)

MySQL/Ruby (1998年6月)

Ruby から MySQL を使うための拡張ライブラリ MySQL/Ruby を作成して公開しました。

Ruby を使い始めたのは、スクリプトで Solaris 上で Motif GUI アプリを作ろうとしたのがきっかけだったと思います。当時は Perl を使っていたのですが、Perl の Motif ライブラリがなかったので、自分で作ろうと思って挫折しました。Ruby にも Motif ライブラリはなかったのですが、試しに作ってみたら非常に簡単に作ることができました。それから Ruby を本格的に使い始めました。

ということで、私が Ruby を使い始めたのは拡張ライブラリが簡単に作成できたからです。

現在 Rails 等から MySQL を使えてるのは私のおかげなので(ry

(実は最近の Rails は mysql2 ライブラリを使ってるので現在使えてるのは私のおかげではないです)

日本MySQLユーザ会 (2000年3月)

日本MySQLユーザ会が発足しました。

メーリングリストのログをウェブで公開したい→サーバーを借りる→ドメインを取ろう…という流れでした。話の流れで、私がドメイン所有者として代表になりました。

日本MySQLユーザ会の略称は MyNA ですが、これは、当時 PostgreSQL に比べてマイナーだったからです。

ユーザ会の代表の作業は、毎年ドメイン使用料を払うことと、時々くる「過去にメーリングリストに投稿したメールで所属と名前が公開されてるのは困るので消してくれ」という依頼に対処することくらいの簡単なお仕事です。

MySQL徹底入門 (2000年12月)

書籍「MySQL徹底入門」が出版されました。「MySQL徹底入門」は、おかげさまで第三版まで発行される人気書籍になりました。

この書籍は共著なのですが、私の書いた分量は、第一版 約20% → 第二版 約10% → 第三版 約5% と順調に減りつづけているので、もし第四版が出たら1ページも書かないかもしれません…。

MySQL徹底入門―ウェブに最適な高速フリー・データベース・サーバー

MySQL徹底入門―ウェブに最適な高速フリー・データベース・サーバー

MySQL 徹底入門 第2版

MySQL 徹底入門 第2版

MySQL徹底入門 第3版 ?5.5新機能対応?

MySQL徹底入門 第3版 ?5.5新機能対応?

ちなみに、表紙は Myna っていう鳥らしいです http://en.wikipedia.org/wiki/Myna

Ruby/MySQL (2003年7月)

MySQL/Ruby は libmysqlclient という C のライブラリを使用するためのラッパーだったのですが、Ruby だけで書いた MySQL と通信するためのライブラリ Ruby/MySQL を作って公開しました。

MySQL/Ruby は、外部ライブラリを使用しているので、MySQL にクエリを投げてから結果が返ってくるまでの間、Ruby プログラムの全スレッドが停止してしまうのですが、Ruby/MySQLRuby で書かれてるので、他スレッドは停止しないというのがメリットです。

あと、MySQL のネットワークプロトコルの動くリファレンスになればいいという思いもあって作りました。

なお、MySQL/RubyRuby/MySQL の名前が紛らわしいのは仕様です。

その後

その後は MySQL に関して特に目立った活動はしてないですねぇ…。MySQL/RubyRuby/MySQL のメンテとか、OSC やデブサミにブースを出すくらい。

あらためて振り返ると、自分のピークは10年前だったということに気づいてしまいました…。この10年間なにやってたんだろう…。

日本MySQLユーザ会について

発足の経緯からして、ユーザ会はメーリングリストがメインの活動です。というかメーリングリストがユーザ会です。

当初は、メーリングリストがあれば、自分よりも知識がある人があらわれて、自分の疑問にも答えてくれるに違いないと期待していたのですが、最初のうちは自分が答えてばかりでした。それが今となっては、自分より詳しい人がたくさんいて嬉しい限りです。

自分は MySQL の文法とか機能面はそれなりにわかってるつもりなのですけど、ちゃんと運用したことはほとんどないので、大規模なサイトでの運用とかの話は勉強になります。

メーリングリストの月ごとの投稿数をグラフにしてみました。

f:id:tmtms:20130326022003p:plain

投稿数が上昇しているのは、そのまま MySQL の日本での普及度を反映していると思います。投稿数が減少しているのは、MySQL とは関係なく、メーリングリストという媒体の衰退を表しているんじゃないかと思ってます。

ピーク時は300件/月くらいの投稿数だったのに、もはや風前の灯火…。

MySQLのバージョンをグラフにして重ねてみたら何か見えるかもしれないと思って重ねてみました。

f:id:tmtms:20130326022009p:plain

これと言ってとくに何も見えませんでした。見えたのは 5.0 と 5.1 は寿命がとても長くて 6.0 は悲しい出来事だったということくらいですね。

今後

日本MySQLユーザ会の目的は、

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

ということになっています。

1番目のMySQLの普及については、既に達成されたといっていいでしょう。

3番目の日本語化についても今はもう問題ありません。 MySQLのマニュアルの日本語版がないのは問題かもしれませんが、MySQLのマニュアルはフリーではないので、ユーザ会として解決すべき問題かどうかビミョーな感じです。

ということで、現在の主な活動は2番目のコミュニケーションです。

コミュニケーションについては、不定期に MyNA会とか、Beginners Talk とか Casual Talks とか開かれていて活発ですね。自分は東京から離れたところに住んでいるので、ほとんど何もできていないのですが…。

4/17 にも MySQL Casual Talks vol.4 がありますね。近所の方は行ってみるといいと思います。