CodeZine(コードジン)

特集ページ一覧

「MySQLコミュニティのユルさは貫きたい」~MySQL Technology Cafe #6はMySQL GIS機能特集

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2020/01/14 12:00

 夜のオラクルで行う開発者向けコミュニティ「Oracle Code Night」ではオラクル技術に限定せず、幅広いテーマを取り扱い、開発者同士の情報共有やミートアップの場になっている。2019年2月からはMySQLをテーマとした「MySQL Technology Cafe」が始まり、12月には6回目が開催された。どんな雰囲気なのか。

MySQL Technology Cafeで新しい人を呼び込みたい

 MySQLとコミュニティは切っても切り離せない。参加者の多くが会社やビジネスとは関係なく自主的に活動し、コミュニティだけではなくプロダクトも支えている。

 「こんな機能が必要だ」と思えば自発的に作る(言い出しっぺの法則)。便利なツールを見つけたら、みんなと共有する。受けいれる側の寛容性も大きい。誰かが「やってみたい」と提案すれば、「どうぞどうぞ」と快諾して背中を押す。日本MySQLユーザ会(MyNA)が温和な文化なので、派生するコミュニティも似た文化が波及している。

 位置づけで見ると「MySQL Technology Cafe」は「Oracle Code Night」の一環となる。オラクルが主導する開発者向けの勉強会「Oracle Code Night」が始まり、「それならMySQLも」という流れで発足した。

 企画の中心で動いているのが日本オラクル MySQL GBU 梶山隆輔氏。テーマの策定や発表者のスカウトなどしている。もとはMySQLのユーザーだったが、2008年から「中の人」となった。今ではソリューションエンジニアリングチームとして顧客企業にMySQL導入の支援を行っている。

日本オラクル MySQL GBU 梶山隆輔氏
日本オラクル MySQL GBU 梶山隆輔氏

 あらためて整理すると、日本におけるMySQLコミュニティの中心となるのがMyNA(日本MySQLユーザ会)。2020年には20年周年を迎える。コミュニティが長く続くと、コミュニティ参加者の知見が深まるものの、新しく参入する人にはハードルが高くなりがちだ。メンバーの固定化にもつながりかねない。そこで気軽にMySQLを語り合うための場となる「MySQL Casual」もある。

 ここに新たに「MySQL Technology Cafe」が加わった。2019年2月に初回、2019年12月5日には6回目を開催した。夜7時に開始し、大抵2~3人が登壇し、最後にネットワーキングの時間を持つ。MyNAでは登壇者が缶ビールを「プシュ」と開けてから語り出すのがお約束になっており、「MySQL Technology Cafe」も登壇者は飲み物を片手に話すことが多い。話すほうも、聞くほうも気楽になれる。

ミートアップ当日は12月ということもあり、華やかなクリスマスツリーが参加者を迎えた。
ミートアップ当日は12月ということもあり、華やかなクリスマスツリーが参加者を迎えた。

 梶山氏は「MyNAやMySQL Casualもあるけど、さらに新しい人を引き込みたい。特に登壇者」と話し、新人の登壇者発掘に意欲的だ。

 企画の選定はテーマと登壇者、どちらが優先かと聞くと、梶山氏は「どちらもあり」と答える。できるだけこれまでコミュニティで扱わなかった新しい話題も提供できるようにしているという。

 例えば2回目は「JavaからMySQLをドキュメントデータベースとして使ってみよう」と題して、Javaと絡めたMySQLの使い方を紹介した。意外にも、MySQLコミュニティでJavaを扱ったのは珍しいそうだ。MySQLがかつてサン・マイクロシステムズだったことを知る人であれば「意外」と感じるだろう。ありそうで、なかったらしい。

 4回目にはかつてMySQLにいて、今ではFacebookで活躍している松信嘉範氏がFacebookにおけるレプリケーションと高可用性について解説した。今ではアメリカ在住なので松信氏の話はとても貴重で好評だったそうだ。

 3回目に登壇したビットキャッシュの金山和純氏、5回目の高野周哉氏は初登壇だったそうだ。高野さんは自作ツールの紹介で「マニアックなツールだからみんなの役に立つかどうか」と心配していたそうだが「いいよ、いいよ。話して」と周囲が激励して発表につながった。MySQLコミュニティ全体がこのようなノリなのだ。

 登壇者の選定は梶山氏や日本オラクルのMySQLチームが持つ人脈や機会をフル活用。イベントでは最後に「次に話したい人いる?」と聞いているため、そこで手が挙がることも少なくない。なお、イベントでは登壇者に、MySQLのマスコット、サキーラのぬいぐるみが贈呈される。これが好評だそうだ。

MySQL Technology Cafeの登壇者にはサキーラのぬいぐるみが贈呈される
MySQL Technology Cafeの登壇者にはサキーラのぬいぐるみが贈呈される

 全体として「MySQL Technology Cafe」はいい意味でとてもユルい場となっている。気負うことなく、打ち解けた雰囲気がある。厳密なルールはない。梶山氏に今後の意気込みを聞くと「いきごまない。このユルさは貫きたい」と笑う。

「位置情報は楽しい」MySQLで位置情報を扱う時の基本

 2019年12月5日の「MySQL Technology Cafe #6」では位置や空間情報をテーマに開催された。最初に登壇したのはMyNAでは副代表を務める坂井恵氏。近年、坂井氏はすっかり位置情報にはまっているらしく、日本水準原点など地理情報の名所を次々と訪問し、国家試験の測量士補にも合格するほど。「位置情報は難しくない。楽しい」と熱く語る。MySQLで位置情報を扱う時に知っておくべきポイントをまとめてくれた。

日本MySQLユーザ会 坂井恵氏
日本MySQLユーザ会 坂井恵氏

 坂井氏は「MySQLにおいて位置情報とは、型がひとつ増えただけ」と言う。文字列型や数値型などの型に並び、空間情報型という型があると考えればいい。

 MySQL 8.0の大きな特徴にGIS機能強化がある。厳密にはそれまでも位置情報を扱うことは可能だったものの、MySQL 8.0からは地球の丸さを考慮した実用的なものになったそうだ。コミュニティでは「MySQLは8.0で地球が丸いことを知った」と語り継がれている。

 空間情報型には何種類かある。緯度経度の1点を表すのが「POINT型」、点をつなげた線が「LINESTRING型」、さらに始点と終点がつながり面(領域)となるのが「POLYGON型」だ。これらのいずれにも対応する「GEOMETRY型」があるため、最低限「GEOMETRY型」だけ覚えておけばいいそうだ。

 表記は緯度経度の数値を並べる。例えば「POINT(2 7)」となる。カンマを入れたくなるが、点における表記はスペース区切りだ。複数の点をつないで線を表すには「LINESTRING(1 3, 2 4)」というようにカンマでつなげる。こうした表記は人間が読むときのもので「WKT(Well Known Text)」と呼ばれる。実際にMySQLに格納する時にはバイナリ形式「WKB(Well Known Binary)」にする。それぞれの表記方法を変換するための関数がある。

 ところで測地系は1つではない。ここには歴史やいろんな奥深い事情がある。日本では「Tokyo」(今ではほとんど使われない)、「JDG2011」、「WGS 84」などが使われている。また、地球上の位置を緯度経度で表す地理座標系と、平面に投影して地図上で定められた基点からの距離で表す投影座標系があり、測地系と座標系の組合せで空間参照系が定義されている。一般的に、空間参照系を識別するために、SRIDというIDが割り振られているため、MySQLでも使用する空間参照系をSRIDで指定する必要がある。

 また日本では平面直角座標系という投影座標系を用いることもある。日本全体を19のエリアに分割し、各エリアにおける原点からの距離を「北に何メートル、東に何メートル」と表記する。ちなみに日本オラクルがある青山のビルのすぐ近くには3級基準点があるそうだ。

MySQLでGIS機能を使う時はこうする チュートリアルやデモで紹介

 続いて、日本オラクル 山﨑由章氏がMySQL 8.0におけるGIS機能の扱い方を解説した。

日本オラクル MySQL GBU 山﨑由章氏
日本オラクル MySQL GBU 山﨑由章氏

 まずは事例から。MySQLのGIS機能を活用したものの例として、国産のCMSとなる「a-blog cms」がある。a-blog cmsでは、記事を投稿する時に属性として位置情報を持たせることができる。この機能を活用し、名古屋地区などの情報サイト「SpyMaster」では近隣のスポット情報を表示したり、住宅資材の「圓屋」では現在地から近い順に店舗を表示したりなど、位置情報を活用したWebページ作成が可能になっている。他にも登山記録の「ヤマレコ」では空間インデックスを使用し、山行記録を高速に検索できるようにしている。

 MySQLにおける位置情報型は坂井氏が解説したように、「POINT型」、「LINESTRING型」、「POLYGON型」、「GEOMETRY型」がある。それぞれが緯度経度の点、ルートの線、市区町村の区画などで使われる。集合になると「POINT」は「MULTIPOINT」、「LINESTRING」は「MULTILINESTRING」、「POLYGON」は「MULTIPOLYGON」となるが、「GEOMETRY」は「GEOMETRYCOLLECTION」となるので注意が必要だ。

 山﨑氏はMySQL 8.0 GIS機能を試すためのチュートリアルを作成し、それをGitHubで公開している(MySQL-GIS-Tutorial)。手を動かして覚えるにはとても有用な教材となる。最初はテストデータの入力から始める。緯度経度となるデータを1件ずつ入力したり、集合の状態で入力したりする。さらに線の入力や、領域の入力も行う。

 データを入力したら、MySQLのビジュアルツールとなるMySQL Workbenchで確認する。MySQL Workbenchには空間情報に対応した「Spatial View」もあり、空間情報を視覚的に確認できる。格納した緯度経度が指す点をOpenStreetMapで表示することも可能だ。MySQL Workbenchの設定を変更すれば使用するマップを別のもの(例えばGoogleマップ)にすることもできる。

 他にも山﨑氏は2点間の距離を計算する「ST_Distance()」関数や外部ファイルからデータをMySQLに取り込む方法なども示した。1時間に満たないセッションの間に基本的なGIS機能が一通り紹介された。

 さらに山﨑氏は個人的な活動としてMySQLのGIS機能を手軽に試せるように、MySQLに取り込み済みのGISデータ配布を行っている。手始めに政府統計の総合窓口でオープンデータとして公開されている都道府県の境界データを公開している(MySQL-GIS-Data-Japan-eStat)。熱意が伝わってくる。

 最後に梶山氏からのメッセージを記しておこう。「どんな内容でもいいし、短いセッションでもいいです。『チューニングをここまでがんばったけど、これでいい?』とみんなに問いかけるものでもいいです。ぜひ登壇にチャレンジしてください。場を繋げますし、登壇の支援もします。登壇したらサキーラぬいぐるみも贈呈しますよ。ここでユーザー同士のネットワークが広がることを期待しています」

 次回は1月17日。MySQL ShellというMySQLの新しいクライアントツールについてのセッションを予定している。

MySQL Technology Cafeは次回1月17日開催!

 MySQL Technology Cafe #7では、MySQLの新しいクライアントツール「MySQL Shell」の機能を紹介します。MySQL Shellの機能を把握した後は、実際にMySQL Shellの拡張機能を使ってプラグインを作るもくもくタイムも。ぜひご参加ください!

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 加山 恵美(カヤマ エミ)

    フリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Onlineの取材・記事や、EnterpriseZine/Security Onlineキュレータ...

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5