MySQL認定資格試験に挑戦(MySQL 5.7 Database Administrator(1Z0-888-JPN))

 今、MySQL界隈で話題沸騰の MySQL認定資格試験を受けてみました。 現在日本語で受けられるのは、「MySQL 5.7 Database Administrator (1Z0-888)」一科目のみです。 全75問を120分で解くCBTによるテストです。いつでも受けられます。58%で合格。

https://education.oracle.com/ja/mysql-57-database-administrator/pexam_1Z0-888


 MySQLな仲間たちが続々受けていて、当然のように続々受かっていたので、そりゃそうだよな、と私も軽い気持ちで受けてみた、平成最後の春。
結果は・・・・・



 実はこの時「再受験支援キャンペーン」だったかな、落ちた場合はもう一回、タダで受けられますよ、というキャンペーンをやっていました。そりゃぁ、2回受けられるほうを選びますよね。そのほうがお得なんですから!!
 ・・・すいません、悔し紛れです。実力なんです。


 そして、令和になって初めての七夕明けの日。無料再受験の期限があと数日に迫っていたので、慌てて受けてきました。 だって、そのほうがお得なんですから!! 前回の受験で「なるほど、こういう所を攻められるのね」と感覚的には掴んだものの、試験勉強のためのテキストがあるわけでもないので、明らかに自分がニガテだった部分について軽く調べてみたりした程度で、結局実際にコマンドを多く叩いて試してみる時間も取れないまま、暗澹たる気持ちで試験会場に向かいました。
 前回は途中で集中力が切れてしまった反省もあるので、今回はのんびりと。 疲れたら目をつぶってゆったりと(そのまま寝ちゃいそう)。集中力持続作戦が奏功し、部屋を出たのは終了5分前。ゆっくりしすぎた(笑)。
 結果はその場では分からず、しばらくしてからサイトのほうで発表されます。帰路の電車に乗って確認した、その結果は・・・・



 わぁい! 
 今回もダメだったら、MySQL引退かな、とも思っていたくらいなので、ほっとしました。 ぎりぎりでも満点でも合格は合格(笑)。



 前置きはこれくらいにして、自分がこれほどに苦労した事の分析とともに、どんな試験かを簡単に紹介したいと思います。試験内容については、確か「あんまり色々書いちゃいけないよ(意訳)」という規約があるので、試験内容には直接は触れませんが、本稿冒頭で紹介したリンク先(公式サイト)にある「試験内容 チェックリスト」に言及する範囲は許されるかと思うので、そんな感じで。

 まず、この試験は試験名称をよく見ると分かるとおり、MySQLの "Administrator" の試験です。 インストールしたり、レプリケーション設定したり、レプが止まったら的確に再開したり、バックアップ取ったり戻したり、接続ユーザを管理したり、最高のパフォーマンスを引き出すためにメモリをはじめとするパラメタをいじったり、何か変なことが起こったら気づけるように監視のしくみを考えたり、セキュリティに気を配ったり、そういった諸々が、MySQLの「サーバ管理者」の知識として求められます。
 一方の私は、最近は実際の業務でのMySQLの管理はしていないこともあり、全体の話題の中で、最新バージョンにどんな機能や工夫があるのかは知っていても、実際のパラメタ名や設定内容については、ぼんやりと見たことがある程度です。つまり私は「MySQL管理」のプロではない、というか素人以下*1。 試験では(私にとっては)見たこともないパラメタが出てきたり、名前を聞いたことがある程度の周辺ツールが出てきたり、やはり「真剣に現場で触っていない」ことのハンデは大きいな、と感じました。 逆に、上に書いたようなこと(そして公式サイトの「試験内容チェックリスト」の内容)を普段の業務でやられている方ならば、比較的ラクに合格できるんじゃないかな、と思いました。58%の正答でいいんですし。 ぜひ挑戦していただきたいと思います。 そして「坂井なんかとは違って、自分は1回で受かったぜ!」と自慢していただければ(笑)。

 これで私も、MySQLの「管理」には詳しくないことが公になったので、またちょっと気楽に色々「試してみた」レベルの日記でも書けたらな、と思います。なんとなく自分の中に、今更感があって「久々に自分でレプリケーション動く環境作ってみた」とか「改めて、バックアップ色々試してみた」のような、無邪気にたのしー、という感じのものは書きにくくなっていたのですが、詳しくないことを表明した今、怖い物はないので、無邪気にまたMySQLと戯れて、他愛もない「たのしー」を公開して行けたらなと思います。
 詳しい皆様、いろいろ教えてください!


 
 

*1:素人は知ろうとするから楽しいのです

測量士補試験を受けてみた話

 MySQL 8.0 で GIS の機能が本格的になった(測地系の概念が入った)ことをきっかけに、位置情報的なものに興味を持った私です。最近はもう、MySQLの機能とは関係ないところで*1、緯度経度がどうやって決められているかとか、地図作るのにどうやって正確に場所を特定したり写真を上手に補正したりするんだろうという所に興味を持ったり、蘊蓄を語りたくなるポイント(地図学の聖地と呼んでいます)を訪問して密かに感動してみたり、勝手に盛り上がっています。
 そんな中で知ったのが「測量士試験」と「測量士補」試験。いや、存在は昔から知ってたんですよ、たぶん。でも全然眼中になかったというか、自分とは関係ない世界の話だと思っていたのです。そんなわけで、とりあえず「測量士補」。ぱらぱらと本屋さんで参考書を見てみると、興味を持っている分野を多く含んでいるので、おもしろそう! ということで、受けてきました。この日記では、そんな測量士補試験の紹介と、感想などを綴ります。

f:id:sakaik:20190520225100j:plain
写真は測量士補試験

測量士補試験とは

 測量士の作製した計画に従い測量を実施する「測量士補」になるための資格試験です。本気で測量のお仕事をするならば、実施計画も立てられる「測量士」を目指すべきなのでしょうが、私のような趣味の延長である部外者にとっては、ちょうど良い感じです。国家資格です。
試験は年1回だけ。 28問の5択問題が出され、18問以上で合格となるようです。

f:id:sakaik:20190519120325j:plain
国家資格

レベル感(主観)

 難易度的には、情報処理試験で言うところの、旧2種(基本情報技術者)に相当するくらいの位置付けかなぁという印象を受けました。部外者にとってはそれなりに難しい問題もありますが、業界内ではこの程度の知識は持っていて当たり前、と思われてるんじゃないかなぁ。知らんけど。

おべんきょう

 私はいろんな事に興味を持っては、その業界の試験を試しに受けてみて玉砕しているのですが、自分でも理由は分かっていて(能力がないということは脇に置いて)、試験の勉強をしないんですよ(笑)。 その世界の内容に興味を持ったから本を読んでみたり調べたり勉強したりしているのであって、試験に受かるために勉強しているわけじゃぁない、という矜持のようなものがあるからなのですが、今回はなんだか受かりたい気分になり、珍しく「試験のための勉強」をしました。 
 数ヶ月前、試験を受けてみようかなと思い始めた頃に、まず3年分の過去問をPDFでダウンロードして、電車内で全部眺めました。常識的な設問もありますが、大部分は意味がわかりません。当然です。
 次に、試験対策本を1冊手に入れて、電車の中で読みます。眺めている過程で「計算問題」がキモになりそうだと分かってきたので、計算問題に特化した本を途中で1冊追加。結局、試験対策としては以下の2冊を使ったことになります。
建築土木教科書 測量士補 合格ガイド 第2版 測量士補 計算問題の解法・解説 (国家・資格シリーズ B7)
 主な勉強時間は電車の中だけなので、ほとんど実際に手を動かして書いてみることをしていません。褒められません。
 こりゃいかん!と本気を出しました。 かなり気合いを入れて猛勉強しました。 金曜夜から・・・。エンジンかかるの、遅すぎ。
測量士補は電卓を使うことができず、それでも時に三角関数の値を使った4桁の割り算などが出てきたりするので「筆算」をするわけですが、何十年ぶりだろう、手でこんな計算をするのは。 自分でも驚くくらいに 繰り上がりとか繰り下がりとかでミスをするのが可笑しかったです。 
 金曜夜、土曜終日*2と、上で紹介した計算問題の本(そう、この金曜日に始めてちゃんと開いたんです)、過去問3年ぶん、少し理解しにくかった点をWebで情報収集して理解、の三点セットで実施しました。 ひたすら鉛筆で解くこの感覚、懐かしい気がしました。

試験当日

 試験当日の勝手がよくわからなくて不安だったので、これから受ける人のために情報を箇条書きで。

  • 測量士補の試験時間は案内されているとおり3時間
  • 90分経ったところで途中退出が可能(最後の15分は退出不可)
  • ただし、途中退出時には問題は持ち出せない。回収されます。退室せずに試験終了時刻までいれば試験問題を持って帰ることができます
  • 問題用紙はホチキス留めされた冊子。用紙の片面だけに問題が印刷されていて、裏面は白紙です。 ただ、見開きにしたときに、右ページに問題、左ページが白紙、という、空白部分を計算用紙として使うには、やや使い勝手の悪い作りになっています(右利きの場合)
  • 試験会場へは、試験開始時刻の1時間前から入ることができます。開始時刻の30分前には着席していること。ただ、30分前に試験官が部屋に入ってきますが、実際に説明開始したり用紙の配布を行うのは15分前になってからでした。それまではトイレに行ったりすることはできます(とは言え、混むこともあるので、そんなギリギリをアテにせず、余裕を持って色々済ませておきましょう)

試験内容の感想

 概ね、過去問をしっかり解ける状態になっていれば受かるんじゃないかなと感じました。ただし今回(R1)は新問も登場したので、事前に捨ててる分野があってギリギリな人は、そこが命運を分けたかもしれません。 新問と言っても、要約すると、数値と計算式が与えられて、その計算結果は幾ら?みたいなもので、知識を問うというよりも、書いてある内容をちゃんと読み取れるかな?ということが試された問題のようにも見えました。個人的には、解いている時には「え!?これでいいの?」と不安になりましたが、冷静にあとで考えると、文章理解力が試された良い問題だったように思います。

さいごに

 解答速報が一番早かった アガルートさんに感謝。帰宅したら既に解答例速報がアップされていて、その後ごはんを食べ終わったら「ざっと解説」の動画が公開されているスピード感。 火曜日には全問の(?)解説が公開されるそうで、楽しみです。 
 今回、興味本位で受けてみましたが、久々に、パズルを解くような楽しい試験時間でした。 さて、私はいったいどこに向かっているのでしょう(自分でもよくわからない)。




以下は、「おべんきょう」を始める前に興味を持って読んでいた本の一部(読みやすかったもの)
新装版 劒岳 ―点の記 (文春文庫) マンガでわかる測量 絵で見る 基準点測量 絵でわかる地図と測量 (KS絵でわかるシリーズ)

*1:だって関数がなかなか増えないんだもん

*2:実際には半日プラスアルファ程度

「標準的なバスフォーマット(GTFS-JP)」勉強会#1 参画

 「標準的なバスフォーマット/GTFS 勉強会」(https://gtfs-jp20190420study.peatix.com/)に参加してきました。GTFSは、バスなどの交通機関の停車場や時刻などの記述方法を定めたもので、このフォーマットで作成したファイルを Google駅すぱあと や 乗換案内 などの会社さんに提供することで活用されます。分かりやすいところでは、Googleの経路検索などでの活用で、例えば遅延情報や臨時便/迂回運行などの情報をGoogleにアップロードすることで、即座に検索結果に反映されるというフットワークの軽い情報提供が可能になります(事前の契約は必要)。
 バス事業者とCP(Contents provider)の間でクローズドにやりとりされるだけでなく、同じデータをオープンデータとして公開しているバス事業者さんも、まもなく100社にならんとする勢いで、岡山をはじめ全国に広がっているとの印象を受けています。

 「なんで私がバスデータの勉強会に!?」と自分でも不思議に思うのですが、話せば長く、書いても長いのですが、かいつまむと、MySQL 8.0 で位置情報について興味を持った→ジオ系(位置情報、地図、測量等)のイベントに参加してみた→バスロケのお話を聞いて面白そうだと思った→バスロケの勉強会に参加してみた(今年2月)→今回 という、面白い具合にご縁が繋がっての、今回の参加となった次第。


 前回参加したイベントは、どちらかというと実際にデータを提供するバス事業者さんが中心といった雰囲気のものでしたが、今回はIT系なトラックも設けるとのことで、色々聞かせてもらうのを楽しみに、参加を申込みました。
 ・・・・が、直前になって「LT枠に、まだアキがあるけど、何かやる?」とお誘いをいただき、この分野まったくの初心者であるにも関わらず、お話をさせていただきました。しかも、結構余裕がありそうだったので2枠やらせてもらうことになったり、その後結構埋まってきた様子だったり、しかも私の話、ぜんぜん5分に収まらなかったり、なんかすいません。(2本目、15分くらい喋ってましたよね(^^;))
 結構怖かったし、至らぬ部分も多くあった発表でしたが、聞いてくださった皆さんの反応も良く、色々教えていただいたりもして、とても良い経験をさせていただきました。ありがとうございました。私のトークについては、後述します。


 午後の実習コースでは、postgreSQLに入れたバスデータをQGISから参照して、あれこれ見栄えや表示条件を変更したりする方法を体験しました。この1年くらい、QGISを触りたいのにインストールすらしていない「やるやる詐欺」状態となっていましたが、こうして缶詰にされて、ようやく初インストール(笑)。数日前にメールで環境準備について連絡が来ていたのを私が見落としていて、あわててインストール(前夜にサイト上の案内は発見していたので、ソフトのダウンロードだけは済ませていたのは、我ながらナイスリカバリ)。
 今回触ったのは、おそらく機能の極極ほんの一部だと思いますが、点や線の集合であるDBデータを、手軽に視覚化できることに感心しました。これはすごい。
 人それぞれの環境の差や、ちょっとした操作ミスまたは抜けなどに起因すると思われるトラブルも結構多く、講師/運営 の皆さまとも大変そうでしたが、ひとつひとつフォローされていて、

 GTFS-JP v2 で加わった、バス運行リアルタイム情報(GTFS-RT)についても沢山の話を聞くことができ、いまひとつピンと来ていなかったGTFS-RTが少し身近になった気がしました。-RTは 独立したフォーマットだと思っていたのが私の勘違いで、GTFS-JP のデータがあってこその -RTである(具体的には、-RTからは -JPのほうで定義されているIDを参照するよとうこと)ことが、納得ポイントでした。

 そのまま会場で行われた懇親会でも、色々な方にバス運行を取り巻くお話から、データ整備の実情から、様々な武勇伝から、たくさんの話を聞かせていただいて、たいへん充実した一日でした。どうもありがとうございました!


 以下、私のトークについて:

「バス停の位置情報も格納できる!」MySQL 8.0 の紹介

www.slideshare.net

 GTFSには、バス停や経路をあらわすための位置情報(緯度、経度)が含まれています。しかも必須項目。こういった項目を RDBMSに格納するには、まぁ緯度と経度を別々のカラムにそれぞれ数字で持たせておいても良いのでしょうが、それだと活用がしにくい(距離計算とかたいへん)ので、普通は 「緯度+経度」として扱える専用の型を持ったカラムに格納したくなるものです。 こういった場合に、業界標準としては PostgreSQLPostGIS を追加して使用するのが一般的でした。 MySQLでは測地系を考慮した位置情報をこれまで扱えなかったからです。 しかし、2018年4月にリリースされた MySQL 8.0 では、ついに「ちゃんと丸い地球(つまりは測地系)に対応した」空間情報を扱えるようになりました。業界の方でもまだ知らないかたが多いので、その紹介と、今回はバリバリの業界人でない方も多いと伺っていたため、そもそもDBMSという役割を持ったソフトウェアがあるんですよ、という話も含めてみました。
 「MySQLで位置情報」という話に、ほぅ、と反応してくれる人がいて、「オモテからは見えないけど、データベースというソフトが裏側で頑張っているんですよ」の話に、へぇぇという顔でメモを取る方も多くいて、レベル設定としては良い感じにハマったのではないかな、と少し気分が良かったです。 面白かったのが、前者の話に反応する人は前のほうの席に、後者の話に反応したのが後ろ三分の一くらいに多かったのが印象的でした(笑)。
 まだまだ GIS 関係の、とくに集約や分析系の関数が不足しているMySQLですが、ぜひ今後の選択肢のひとつとしてお試しいただければと思います。

「なんじゃこりゃぁ」DB屋が見たGTFS-JPファーストインプレッション

www.slideshare.net
 GTFSのフォーマットを、DBのテーブルだと思って眺めた時に感じた違和感(カルチャーショック)を語らせていただきました。仕様書を眺めていて「なんじゃこりゃ」と思っていても、特に今まで誰と議論する機会もなく、そんな状態での発表でしたが、初々しく受け取っていただけたでしょうか。さすが何十ヶ月もこのフォーマットに触れてきた皆さん、私が感じた違和感は既にお考えでしたし、私が感じた問題は既に解決済でしたし、たいへん勉強になりました。
 これまで、なんとなく仕様書を眺めていて、なんとなく「へんなの」と思っていたものを、発表の機会をいただけたことで改めて真剣に読み込み、真剣に考えることができました。少しステップアップできた気がします。まだ理解不足なところが多いですが(料金関係は手つかず。TripとRouteの違いがよく分からない等)、少しずつ学んでいけたらと思います。




参考リンク:
www.mlit.go.jp


イベント中に紹介された書籍(同人誌):
 関係者の皆さんで作成し、先週の「技術書展」でも飛ぶように売れたという本。GTFSに興味を持ったなら必読!だと思う(たぶん)。私もこれから買うところなので(笑)。
booth.pm

f:id:sakaik:20190420094135j:plain

OSC award を受賞しました

これまでのOSC開催に多大な貢献をしたので、このたび「第6回 OSC アワード」を受賞いたしました。ありがとうございます。

www.ospn.jp

それはなに?

 日本各地で開催されている「オープンソースカンファレンス(OSC)」に【多大な貢献】をした人に贈られる賞です。

公式サイトの案内より:

オープンソースカンファレンスは2004年9月の開催以来、全国各地で開催を重ね、通算160回以上を開催して参りました。
そして、2014年2月の第100回開催を記念して、これまでのOSC開催に多大な貢献をされた方を表彰する「OSCアワード」を設立し、過去に5回の表彰をしています。

どんな貢献をしたの?

 困ったことに、「貢献をしたぞ」と思えるような自覚症状が、ありません。勝手に、各地で開催されるOSCへと参加していただけです。モットーは「自分が楽しむ」であり、先日、OSCの主催者から「坂井さんが各地のOSCに参加するモチベーションって、なに?」と聞かれたときにも、「おいしいもん食べたいしー」「いろんな人に会えるしー」挙げ句には「OSCどーでもよくて、その前後がたのしー」なんて言い出す始末です。 
 とは言え、数は力で、結果としてOSCの盛りあがりの一部を構成していた面はあったのかもしれませんので、今回のご評価、ありがたく頂戴することにいたしました。

受賞理由(公式)

◆受賞者:日本MySQLユーザ会 坂井 恵
受賞理由:日本MySQLユーザ会として、全国各地のOSCに出展し、MySQLの認知・普及に務めるだけでなく、他のプロダクトとの交流を積極的に行い、オープンソースコミュニティの活性化に寄与しているため。

 とのことです。日本MySQLユーザ会(MyNA)として各地のOSCでブースを出展し、セミナーを開催してきたことを中心に評価をいただきました。
嬉しかったのは、「だけでなく」以降の部分です。

 コミュニティ活動というのは、ついウチにウチにと閉じこもりがちな面があります。そのほうが活動を続けていくうちに「おうち感」もできて来て気楽に感じるからです。多くの話が「承前」で通じる。そんな空間はとても居心地が良いのですが、一方でそういったコミュニティは、コミュニティとして成長しないと感じています。特に、前提をまだ共有できていない新しい人への対応は面倒くさく感じるものになるでしょうから、そういった空気を感じ取って、新しい人は入ってこない状態となります。入りたくても、定着しない。DBコミュニティ全体として、ただでさえ新しい人が増えにくい傾向がある中で、そうならないためには、前提条件を共有できていない人たちとの交流を普段から行っていることも一助となると考えています。

 また、あるターゲットを理解しようと思ったら、そのターゲット以外のことを知ることがとても有効です。外の世界を知ることで、そのターゲットの優れている点、不足している点、異常/特徴のある点などが初めて分かります。MySQLを知りたければMySQL以外を知れ、です。MySQLを隠すならDBMSの中に隠せ、です(ちょっと違う)。

 そんな考えから、「中に閉じないコミュニティ」は常に意識し、大切にしていた部分ではあるので、その点をしっかり見ていただいて評価をいただけたことを、本当に嬉しく思いました。

いっぱい行ったって、いったいどれくらい行ったぃ?

 2004年の東京(大久保)で開催された第1回の「オープンソースカンファレンス(OSC)2004」から、160回近くのOSCが開催されてきました。その中で、自分が確実に参加したと判明しているものだけを数えたところ、60近くありました。これが多いのか少ないのかは判断つきませんが、感覚的には「比較的多めのグループに入るんじゃないかなぁ」という気はします。
 初めての遠征(東京以外の地域のOSCへの参加)は、2007年に福岡の第1回が開催された時でした。このときの懇親会やOSC本編の中で、沢山の地元の方と仲良くなったのは勿論ですが、予想外の効果として他の地域から来た人たちとも「遠くからわざわざ来た奇特な仲間」という意識なのか、親密さが増したことがありました。これに味をしめたのでしょうね。年々、行く先が増えていきました。 行った先で会った地元の方が、今度は別の地域のOSCに参加してくれるようになるシーンにも何度も出会い、嬉しかったものです。こんな「横の交流」に魅力を感じるところも、私らしいな、と、受賞理由をいただきながら思いました。

余談: SD誌 最多出場?

 ブラタモリのテーマ風に言えば「OSCの楽しみは ゼンゴ にあり!?」。
現地には前日入りすることが多いので、当然「前夜祭」があります。公にはない場合もありますが、その場合は遠方から参加する人どうしで連絡を取り合って、勝手に前夜祭をやります。これがまた楽しいんだ。わざわざ遠方から参加するような人たちですから、経験も話題もたくさん持っていて、色んな話を聞かせてもらえるし、地元のおいしいお酒も飲めるし、比較的少人数なので、ガッツリ交流もできます。 あまりに前夜祭が楽しいので、前夜祭終わりかけの頃になると「いや~今回も、いいOSCだった~!!」と口に出すのが恒例のようになってしまったくらいです。 (そして「まだ終わってない!っていうか始まってないから!」とツッコんでもらうまでがお約束。 でも最近は、ちょっと言い過ぎているかなと思うところもあり、少しだけ、自粛していますw)

 前夜祭や、当日懇親会後の二次会など、大概は、主催の宮原さん*1 とも一緒に行動することが多いのですが、宮原さんの選店眼にはいつもうならされます。私なら絶対に選べないようなお店をぴたっと見つけてくる。本当に素敵なお店ばかり。
 宮原さんは Software Design 誌に「オープンソース放浪記」という連載をしていて、そこでは、OSCやその他のイベントで訪問した各地の、観光や飲食を中心に紹介しています。呑んだお店での自撮り写真を掲載するので、一緒に行動している私も写真に写り込んだりすることが多くあり、宮原さんからも「SD誌最多登場」のお墨付きをいただいてしまいました(ちゃんと数えてはいませんが、確かにダントツで多い気はします(笑))。たいへん光栄なことです:-)
 

今後

 色々と少し増やしすぎたとの感もあり、少し活動の種類を落ち着かせる予定です。実は昨年末に周りの人たちにも「少し減らす予定」と伝えたところだったので、今回の受賞の連絡をいただいたときには「いままでご苦労さん、の、卒業記念の意味合いもあるのかな」などと頭をよぎったのですが、何のことはない「もっとやれ」でした(笑)。

 とは言え、時間の面、経済的な面での負担も感じるようになってきたことと、概ね代わり映えしない事も増えてきたので、活動のフレームを少し変えていこうと考えています。

 OSCについては、最近は「とにかく行く!」をデフォルトとして行動して来た面があるので、今後はもう少し目的意識を持っての参加をするつもりです。
2019年は以下の条件に合致する場合に参加を検討する感じにする予定です。

  • どうしても伝えたい内容がある場合(2018年の GIS入門的な)
  • どうしても会いたい人がいる場合(そのタイミング、その場所でないとならない場合)
  • 前後の日程で、お仕事に関係する話がその地域である場合(お引き合いお待ちしています)
  • 前後にとっても「寄り道」したい場所がある場合
  • 北海道


 OSC以外の活動については、MySQLユーザ会自体のイベントに充てられる時間をもう少し増やしたいなと考えています。私が魅力を感じているのは、交流を中心としたもので、つまり、参加者が一度も口を開かないで帰るようなものではなく、おしゃべりして帰ってもらえるようなものなので、そういうのをやりたいですね。昨年末に赤坂で開催したような「呑み交流会」も、またやりたいです(費用面でドキドキするのですが、前回はドタキャン/無断キャンが1人もなく、大変助かりました!ありがとうございます!今後の開催でも宜しくお願いします!)。
 あと、今回受賞理由にもなっている「横のつながり」は、やっぱり楽しいので、「RDBMS的な会食」も具体的に検討をはじめています。開催の折にはご参加/ご協力よろしくお願いします。

まとめ

 思うままに書き綴ったので、全然まとまっていませんが、根底にある思いを個条書きにすると:

  • 技術イベント(特にここではOSC)、楽しいよ。参加したことがない方はぜひ覗いてごらん
  • 既にイベントに参加している方は、他のコミュニティ、他の地域などを覗いてごらん
  • MySQLユーザの皆さんは、OSCブース番、やってみませんか。更にはMySQLユーザ会の枠でセミナー担当してみませんか(twitter @sakaik まで連絡ください。一応条件としては「MySQLをそこそこ好きであること」「(セミナーの場合は)MySQLの魅力を伝えたいと思っていること」くらいです)
  • 宮原さんいつもおいしい料理をありがとう!


 そんなわけで、ちょっと違うことをやりたいなと暖めている事もいくつかあり、今後とも引き続き、よろしくおつきあいの程をお願い申し上げます。
ありがとうございました。
f:id:sakaik:20190224145243j:plain

*1:そういや宮原さんを語るときの肩書きがいつも迷います。「主催者」「事務局トップ」「発起人」など時に応じて色々ありますが、まぁ親しみを込めて「ボス」といったあたりでしょうか

OSC2019-Tokyo/Spring 参画

オープンソースカンファレンス2019東京・春(OSC2019-Tokyo/Spring)に参加してきました。
www.ospn.jp

 OSC東京の会場は、千葉県に住む私にとっては非常に遠いので、参加には毎度なかなか後ろ向きなのですが、理由あって今回も参加することと相成りました。いつも通り、日本MySQLユーザ会(MyNA)としてブース出展とセミナーを1枠開催。

f:id:sakaik:20190223160143j:plain
写真はyokuさん



 セミナーでは、@yoku0825 さんと一緒に、みんなの前で「雑談」をしてきました。

オープンソースカンファレンス2019 Tokyo/Spring - イベント案内 | 2019-02-23 (土): MySQL 〜 yoku0825 と sakaik が語る最新情報と周辺情報〜

 参加者からのツッコミや情報提供などをいただきながら、台本なしのトークを繰り広げる趣向です。 yokuさんと一緒に好き勝手雑談をしたので、私自身は最高に楽しかったです。 話題の背景が分からずに置いていかれる人が多くならないよう、適宜補足説明を行う等の工夫はしたつもりですが、配慮の行き届かないところがあったら、すいません。
 楽しかったので、またやりたい。yokuさん、ありがとうございました!
 みんなにも、もっと良心を持ってほしい(内輪ネタw)。



 ブースのほうは、今回は「ユーザ会の中の人」がたくさん来てくれたので、私はほとんどブースに居ずに、他のブースをぶらぶら。久々の方から2週間ぶりの方まで、多くの人とお話できて、良かったです。随分とラクをさせてもらいました。いつもこうだと良いなぁ。

 その後は、私にしては珍しく閉会式まで参加してから、帰宅。
 



 

OSC2019-Hamanako参画

オープンソース浜名湖(OSC2019-Hamanako)に参画してきました。


f:id:sakaik:20190210112037j:plain

www.ospn.jp

 いつもどおり、日本MySQLユーザ会(MyNA)として、セミナーを1枠もらってのお話と、ブースの出展とで。
申し込みが遅かったので、セミナー枠は埋まっているかな、と思っていたところ、朝イチの枠が空いているとのことで僭越ながらオープニングの枠を務めさせて頂きました。

 OSC浜名湖セミナーは、ワントラックで、来場者全員が(同部屋に併設のブースを見ることもできますが)座ったままですべてのセミナーを聞けるスタイルです。なので、まぁMySQLに特に興味があるわけじゃない人も多いだろうな、と、「データベースってなに?」という層を今回はターゲットとしてみました。 まぁレベル設定はなかなか難しいですね。。分からなくてもいいから最先端の話を聞いてみたいという人も少なくないようで、まだまだ私にとっても、開催スタイルによる話題やレベル感の選定は悩みだらけです。

 浜松は、測量で使用する「三角点」という面からは、日本で2番目の基線が設定された場所でもあり、LTなどではそれをネタに2年連続、お話をさせていただきました。何人かの方には面白がっていただいたり、実際に三角点に興味を持って頂いたり、ささやかな広がりを感じることができました。

 お会いしたかった方とたくさんお話できたり、音楽関係のお話をいっぱい教えてもらえたり、充実のOSC2019-Hamanakoでした。
ランチは、いつもどおり、うなぎ。

f:id:sakaik:20190210124852j:plain
写真はうなぎ


LT発表資料:

www.slideshare.net

MySQLのSpatialでのPOLYGONの同一性

boiledorange73さんのこの記事を見て、むくむくと疑問が湧き上がったわけですよ。本題とは全然関係ないところで、単に「右回り左回り」というキーワードだけに反応して、妄想全開モードになっただけなのですが。
qiita.com

MySQLは 記述方法の違うポリゴンを同一と見なしてくれるのか

 点A、点B、点C、点D からなるポリゴンって、A-B-C-D-A とも、B-C-D-A-B とも、B-A-D-C-B ともあらわすことができますよね。感覚的にはこれらはすべて同じと見なして欲しいな、と思うのですが、実際にはどうなのだろう。というのが今回の疑問です。
 以降、だらだらと例示が続くので結論を先に書いちゃうと、ちゃんと同じと見なしてくれます。

同一性の確認方法

 MySQLには、ST_Equals() という同一性判定の関数があります。
POINT を例に見ると、以下のように、同一の点であれば「1」が、異なる点であれば「0」が返ってきます。

mysql> SELECT ST_Equals( ST_GeomFromText('POINT(1 1)'), 
    ->                   ST_GeomFromText('POINT(1 1)') ) res;
+------+
| res  |
+------+
|    1 |
+------+

mysql> SELECT ST_Equals( ST_GeomFromText('POINT(1 1)'), 
    ->                   ST_GeomFromText('POINT(1 2)') ) res;
+------+
| res  |
+------+
|    0 |
+------+

LINESTRINGの場合は

 同様に、LINESTRING の場合を見てみます。点Aから点BへのLINESTRINGは、A-B とも B-A とも表せますが、これらを同じ物と見なしてほしな、という実験です。

mysql> SELECT ST_Equals( ST_GeomFromText('LINESTRING(1 1, 1 2)'), 
    ->                   ST_GeomFromText('LINESTRING(1 1, 1 2)') ) res;
+------+
| res  |
+------+
|    1 |
+------+

mysql> SELECT ST_Equals( ST_GeomFromText('LINESTRING(1 1, 1 2)'), 
    ->                   ST_GeomFromText('LINESTRING(1 2, 1 1)') ) res;
+------+
| res  |
+------+
|    1 |
+------+

 はい。「1」が返ってきたので、MySQLはこれら2つの線を同じ物と認めてくれたことがわかりました。
なんかユルユルに、なんでも「1」を返してるんじゃないの?という疑問を消し去るために、明らかに違う2つの線で試してみます。

mysql> SELECT ST_Equals( ST_GeomFromText('LINESTRING(1 1, 1 2)'), 
    ->                   ST_GeomFromText('LINESTRING(1 1, 2 1)') ) res;
+------+
| res  |
+------+
|    0 |
+------+

 ええ、ちゃんと「違う線である」と判断してくれました。

いよいよ本丸のポリゴン

 ちょっとわかりにくいのですが、A(1,1)、B(1,2)、C(2,2)、D(2,1) としたときに、
最初のは、A-B-C-D-A どうしを比べたもの。
2番目のは、A-B-C-D-A と、B-C-D-A-B を比べたもの(記述上の起点が異なる)。
3番目のは、A-B-C-D-A と、D-C-B-A-D を比べたもの(記述上の起点が異なり更に逆回転)。
いずれも「1」(同一)と判定されました。

mysql> SELECT ST_Equals( ST_GeomFromText('POLYGON((1 1, 1 2, 2 2, 2 1, 1 1))'), 
    ->                   ST_GeomFromText('POLYGON((1 1, 1 2, 2 2, 2 1, 1 1))') ) res;
+------+
| res  |
+------+
|    1 |
+------+

mysql> SELECT ST_Equals( ST_GeomFromText('POLYGON((1 1, 1 2, 2 2, 2 1, 1 1))'), 
    ->                   ST_GeomFromText('POLYGON((1 2, 2 2, 2 1, 1 1, 1 2))') ) res;
+------+
| res  |
+------+
|    1 |
+------+

mysql> SELECT ST_Equals( ST_GeomFromText('POLYGON((1 1, 1 2, 2 2, 2 1, 1 1))'), 
    ->                   ST_GeomFromText('POLYGON((2 1, 2 2, 1 2, 1 1, 2 1))') ) res;
+------+
| res  |
+------+
|    1 |
+------+

まとめ

 非常にシンプルなサンプルですが、線の順序やポリゴンの回転方向などの記述方法の如何に依らず、MySQL の ST_Equals() は正しくその形の同一性を見て判断してくれることがわかりました。めでたしめでたし。