MySQL: ストアドで度分秒変換

GIS関係のデータを探していると、緯度経度を表す数値として、度で表されているものと、度分秒で表されているものがあります。MySQLで扱えるのは、度(「35.65810012度」のような数字)です。度分秒(「35度39分29.172秒」のような表現)で公開されているデータを度単位に直すのが意外と面倒くさいので、こんなストアドを試しに作ってみました。

delimiter //
CREATE FUNCTION dfb2deg(d float, f float, b float)
                RETURNS float DETERMINISTIC
  RETURN d+f/60+b/60/60
//
delimiter ;

こうやって使います。

mysql> SELECT dfb2deg(139, 44, 28.8869);
+---------------------------+
| dfb2deg(139, 44, 28.8869) |
+---------------------------+
|        139.74136352539062 |
+---------------------------+

 ちょっとした手作業の中で、度分秒を少数単位に変換したい場合は、上のような使い方で得た数字をコピーするなどして使えば良いですし、もう変換しながら処理に供したいような場合は以下のように、一旦変数に入れて ST_GeomFromText() かける方法がありそうです。(この例自体は、一旦内部バイナリに変換したものを、そのままテキストに戻しているだけなので意味はありませんが、利用法の例として)
 なおこの緯度経度があらわすのは、日本経緯度原点の十字の交点です。

mysql> set @lon=dfb2deg(139, 44, 28.8869);
mysql> set @lat=dfb2deg( 35, 39, 29.1572);
mysql> set @mypointwkt=CONCAT("POINT(",@lat," ", @lon, ")")

mysql> SELECT ST_AsText(ST_GeomFromText(@mypointwkt));                                                                         
+---------------------------------------------+
| ST_AsText(ST_GeomFromText(@mypointwkt))     |
+---------------------------------------------+
| POINT(35.65810012817383 139.74136352539062) |
+---------------------------------------------+


 MySQLでストアドを日常的に使っている人はあまりいないかもしれませんが、こうやって使うと便利だよという例としても、紹介いたしました。

OSC2019 .Enterprise に少し参加

OSC2019 .Enterprise に少しだけ顔を出してきました。単なる参加記録として。

www.ospn.jp


OSC.Ent は、いつも平日の開催なので、例年ならば私は、日中に別の用事を都内で済ませてから夜の懇親会だけ参加するパターンでした。
今回は、yoku0825 さんが、朝イチでセミナーをやられるので、これだけを目的に参加してきました。普段は個人として、ユーザ会のメンバとしての活動をされているので、会社名を出しての講演は、結構珍しいです。
『約1名で300台のMySQLを管理する技術 ~GMOメディアを支える技術をご紹介~』

www.ospn.jp


 「今まで大変だったうちの8割の部分を、2割の労力をかけて改善する」「ラクするために苦労する」「条件分岐の複雑なスクリプトを書くくらいなら、(バージョンごとに)ファイルを分けちゃう」「ログは、見たいものをピックアップするのではなく、確実に問題のないものを除外した残りを見る」など、私が普段から言っていることと被る事が多くて、とても共感しました。

f:id:sakaik:20191010094719j:plainf:id:sakaik:20191010100228j:plain

OSC2019-Niigata参画

オープンソースカンファレンス2019新潟(OSC2019-Niigata)に参加してきました。

ospn.connpass.com

 今まで私は、同じ場所を1年に2度訪れることはあまりなかったのですが、今年は、OSCとFOSS4Gに参加していたこともあって、何故か札幌2回、新潟2回。どちらも食べ物や飲み物がおいしいところなので、ウェルカムな一年になりました。
 OSC新潟は、新潟市で開催される場合と、長岡市で開催される場合があるのですが、今年は新潟市。新幹線組は少しだけ東京から遠い位置になりますが、飛行機組には新潟空港から近くて良い場所です。海も近いし。

 OSC新潟は他の地域の多くのOSCに比べてかなり小規模で、セミナーはワントラック、ブースもセミナールームの中に一緒にある、という作りです。普段のOSCはセミナーが各部屋に分かれて複数トラック実施されているので、聞く人は自分の聞きたい話題の部屋に移動して話を聞けるメリットがありますが、新潟方式(浜松も)は、一回座ったら、興味のある話題も興味のない話題も次々に流れてくるので、普段聞けない話を聞けるという利点もあります。いつも一緒にブースを出しているけれどもセミナーを聞くことがない仲間たちの話を聞けるのは楽しいですね。
f:id:sakaik:20191005112902j:plain


 私も15分の枠をもらってMySQLの話をしてきましたが、内容は先日の OSS推進フォーラムでのお話(認定試験+GIS)をコンパクトにまとめたものに、そもそもデータベースとは何かという話を冒頭に付け加えた程度のものなので、今回の資料公開はしない予定です。OSS推進フォーラムの資料を参照ください(slideshare)。

 今回のOSC新潟は昨年までとは異なり、運営になるべく事務局の手が入らない形の「自主運営」的な開催でした。私は運営メンバではありませんが、経過をずっと見守り、時々クチは出せる立場にいて、ギリギリまで実は結構やきもきしていました(笑)。
 でも翻って考えてみると、つまり、最近のOSCは非常に高度に効率化されていて、適切なタイミングで適切な事項がばしばっしっと決まっていく、実施されていく、そんな「しっかりした運営」ができているってことなんですよね。 今回のOSC新潟は非常に手作りな感じがあって、なんだか懐かしい感覚とともに、「そうだよ。これ!これでいいんだよ!」という安心感も得たことも事実です。すっごい楽しかった。
 手作り感の極みとして、ブースに張り出す団体名の紙も「手書きしてもらえばいいよ」という案が出ていたのに対して、私は「OSCとして」それはイヤだなーと思ったので、勝手に団体名を印刷した紙を用意していき、使ってもらいました。 「こうしたい」を持っている人が提案して、それが会の一部として取り入れてもらえる、こんな空気を持ったOSC新潟、素敵だったなぁと思います。楽しかった~。 来年は、もし、もっと協力できることがあれば運営面でも協力したいと思うので、宜しくお願いします。

f:id:sakaik:20191005122653j:plain
名物 政ちゃんのたれかつ
f:id:sakaik:20191004223305j:plain
前夜祭の二次会で食べたへぎそば。かなり一次会で呑んで記憶怪しく、ホテルに帰った私の胸ポケットには何故か蕎麦やさんの箸袋が。

Python Code Reading #00 ~みんPy著者の勉強会~に参加

Python Code Reading #00 - 定番入門書「みんなのPython」著者主催の勉強会』に参加してきました。
peatix.com

今回は『会の雰囲気を掴んで頂くため「イントロダクション」と「ウォーミングアップ」の二本をお届けします。』ということで、大きな全体像のお話をされたあとで、「微分積分」を例に、実際にPythonのコードが動く体験をする、という流れでした。 いやその、、わからないPythonを学ぶのに、わからない微分積分を使うというのは、、その、、あの、、、と思っていたのですが、学生時代に公式を覚えることに終始していた(そして今はすっかり考え方も公式も忘れてしまっている)微積について、今までとは違う角度からお話が聞けたのは面白かったです。まさに「分割」を大きいものから小さいものまで自由に変更できるのがプログラムの強みですよね。

 印象的だったのが、参加者のバックグラウンドの広さ。会のタイトルだけを見ると、どう考えても、プログラムをやる人が集まってきそうなものですが、そうでないお仕事、いわゆる「文系のお仕事」という方がかなり多く参加されていました。atsさんの普段の活動範囲の広さを見せつけられた気分です。すごい。 今、直接にはプログラムには関わっていないようなお仕事の方が、自分で書いてみたい、と興味を持って手を動かすのは、本当に素敵な事だと思うので、ますます広がるといいなと思いました。

 atsさんと会うのは非常に久しぶりで(もしかしたら10年くらい会っていないんじゃないかという気も)、お会いできたのも嬉しいことでしたし、相変わらずの落ち着いた語り口かつ、他の人たちよりも一段広い領域をベースにしたわかりやすい説明は健在(というより益々パワーアップ)で、良かったです。

 今回、会場で行ったビアバッシュ(懇親会)に飲み物が届かないというアクシデントがあり、急遽買い出し部隊を結成して調達してきました。こういうときに比較的イベント慣れしている私みたいな人が機転を利かせて動くのはある意味「当然のおつとめ」と考えているのですが、買い出し部隊にぱっと手をあげてくれた3人の皆さん、特にその中でひとり学生さんが「僕もいきます!」と言ってくれたのが、とても嬉しかったのです。ありがとうございました。Facebookでつながろうねと言ったけど申請来ず(こちらからは相手の情報はわからないw)、これをお読みになりましたらぜひ(笑)。

 次回 #01 は 11/21。ちょっと個人的に微妙な日程で、参加できるかわかりませんが、今後も会の継続と発展を楽しみにしています。
peatix.com



f:id:sakaik:20191003185901j:plain

OSS推進フォーラム勉強会でお話してきました

日本OSS推進フォーラム アプリケーション部会で MySQL 三昧ナイトな勉強会を開きたいということで、お話をさせていただく機会に恵まれました。
勉強会のタイトルは「改めて聞きたい!MySQL ~最新MySQL8も紹介~」

ossforum.connpass.com


 普段の会合とは全然違う層が聞きに来てくれることを想定して、今まで他の場所でもお話したことがある内容をベースにして、わかりやすいように前提や背景の説明を加えたものを用意して行ったのですが、行ってみたら、普段よく顔を合わす人もたくさんいて(そして終了後の交流会に残ったのは、そのメンバー(笑))、ちょっと切り口を変えて持って行ったのが救いでした。

 今年しか言えない「令和元年の」をキーワードにしたかったので、MySQLの2つの「元年」をお話しました。
・認定試験元年(いままでもあったけど、改めて、これから来るぞ!」
GIS元年(正確にはもう1年くらい前からなんだけど、まだ盛り上がりに欠けるので、これから来るぞという意味での元年)


どちらも、少しでも興味を持たれた方がいたら、お試しいただければと思います。


www.slideshare.net


f:id:sakaik:20191002182304j:plain

FOSS4G 2019 Niigata 参画

FOSS4G Niigata に参加してきました。この分野は新参者だし、趣味で素人なので、ひっそりと一参加者としてです。
とは言いつつも、懇親会ではライトニングトーク(LT)の枠も頂戴して、趣味全開のお話を披露させていただきました(後述)。


f:id:sakaik:20190914093501j:plain
www.osgeo.jp

前日(=ハンズオンデイ)日中

 私は今回、ハンズオンには参加しないのですが、前夜祭が開催されるということで、いわゆる「前日入り」をいたしました。前夜祭だけのために前日入りしてもバチは当たらないと思いますが、折角時間があるので、と、LT用のネタ集めに時間を使うことにしました。 市内の、「カジュアルに見に行ける(=山の上とか森の中とかではない)」三角点の訪問です。 阿賀野川を越えたところにある一等三角点から、市内の二等、三等、四等三角点数カ所を回りました。 アシとして使ったのは、観光タクシー。 新潟の万代タクシーのホームページには、観光タクシーの案内が分かりやすく掲載されており、お願いできることのイメージ、利用料金、なんだか親しみを持てて、気軽にお願いできる雰囲気を感じたので、上野で新幹線に乗る前に電話してお願いしてみました。 普通は市内の名所を案内して回ってくれるのですが、今回は「マニアックなお願いなのですが・・・」と持参のラフ地図を元に、三角点を回っていただきました。見つかりにくい三角点を一緒になって探していただいたり、通り道でちょっと寄れる名所を教えていただいたり、至れり尽くせりの2時間でした。万代タクシーのHさん、どうもありがとうございました!
 
  写真は新潟市内の「道路元標」。市内の交通量の多いところなので、止まってもらって見学するのは難しいかな、と思っていたのですが、よく案内するポイントなのか、一旦私を下ろしてぐるりとひとまわり回ってきてくれる、というワザで、交通にも迷惑を与えずにじっくり見学することができました。観光タクシー、すごい便利!
f:id:sakaik:20190913142729j:plain
 2時間で10,600円という料金を高いとみるかは、状況次第ですが、フットワークの軽さと、地元を知り尽くした歩くオンライン辞書(笑)が一緒にいてくれること、そして今回についてはネタ収集したLTでモトを取った気分でもあることから、十分に理にかなった料金だと私は感じました。 タクシーなので、何人で利用しても同じ(つまりワリカンが効く)なので、ちょっと時間が空いたので見てまわりたいなーという時には利用を検討すると良いと思います。

前日夜の前夜祭

 FOSS4G Niigata の前夜祭は、野外にて。 信濃川の河川敷にある、バーベキュー屋さんっていうんですかね、ここは。 お店の人が全部やってくれてラクな感じでした。 野外は天気のリスクがありますが、この日は程よい風が吹く程度の良い天気で、川辺でとても心地よい時間を過ごしました。 知っている人がほとんどいないアウェイな場なのですが、すぐに会話に混ぜていただけて、FOSS4Gのフトコロの広さを感じました。
 MySQLGISデータを扱う機能が入って(正確には充実してきて)ね、という話をしていたら、「2年くらい前の新潟のOSC(長岡でやったやつ)のセミナーで、その話を聞きました!」と言う方がいて、「いや、そのセミナー、話していたの私です・・・・」というのが、今回のハイライト(笑)。 聞いていただいてありがとうございます(2年越しのお礼)。
f:id:sakaik:20190913190249j:plain

 きっとみんな1次会だけで満足しきらないだろう、と幹事さんの暖かい配慮で、最初から2次会が設定されているFOSS4G Niigata、すごい。 1次会ではお酒(=日本酒)がほとんどなかったので、二次会で、日本酒尽くしのお店に連れて行っていただきました。新潟県内八十八蔵ぜんぶのお酒が飲み放題なお店で、とても素敵でした。 宴会幹事ってすごく大変なのですが、至れり尽くせりの前夜祭、どうもありがとうございました! すっかりみんなとお友達になった気分でお宿へ。(でも顔を覚えないので、誰が誰だかよくわかっていないw)
f:id:sakaik:20190913225409j:plain

FOSS4G Niigata コアデイ 日中

 前夜祭でかなり呑んだにも関わらず、すっきり目覚める朝。 新潟のお酒はやっぱりきれいです。
講演内容ひとつひとつの感想をここで上げていると、いつまでも書き終わらないので、全体的な感想と特に印象に残ったものについて。

 FOSS4G では sli.do というシステムを使って講演者に質問ができる仕組みを採用しています。「これはどういうことだろう」とか「もう少し具体例を聞きたい」と思ったときに質問を登録できるので、うまく運用すればこれがなかなか効果的な仕組みです。 書き込んだ質問に対して、他の参加者が「賛同」の表明をすることもできるので、私もいくつか質問を登録させてもらいましたが、この「賛同」が集まるとやっぱり少し嬉しい気分になります。そして、講演者が質問の意図をしっかり理解して、知りたかったことを説明してくださったときの、かみ合った気分はなんとも言えません。 惜しむらくは、質問を直接講演者が見るのではなく、進行役の人がピックアップして読み上げ(時に自分の言葉にアレンジ)するので、進行役の裁量やセンスに左右されてしまう面があることでしょうか。 各地で開催されたFOSS4Gの中では、進行役が折角の会場からの良い質問を生かせずにモヤモヤしたこともありましたので、質問のピックアップに自信がない場合は、講演者に直接質問リストを見せる等、柔軟に工夫をしていっても良いのではないかと感じました。

 講演内容については、いくつか特に印象に残ったものを簡潔にまとめると:

(1)ベクタタイル、これから来るよね~。というか当たり前になっていくんですよねきっと、という印象を受けました
(2)軽トラMMSすごい。何がすごいって実車を長野から高速道路乗って持ってきて、お昼休みに駐車場で実物を見せていただけるところが。(お昼食べていたら間に合わず機材は撤収した後でしたが、それでも実車を見られて興奮しました)
(3)基調講演の政府CIO上級補佐官の平本さん。既存の組織を変えていくのは大変だなぁという当たり前の現実を突きつけられ、それとどのように戦って、より良くなるほうへと進行させているのか、感銘を受けました。セミナー自体も引き込まれたのですが、懇親会の二次会でも沢山お話をきかせていただいて、いやもう本当にパワフルで、でもユーモアと余裕があって素敵だなと思いました。
(4)月や小惑星GIS。回転楕円体を前提としない小惑星の上の形と場所を特定する表現(まさに今話題のリュウグウとか)や、月の表現(こちらは、極半径と扁平率を定義した回転楕円体でいいんじゃないかという気もしました)などのお話が、地球上の位置を特定することだけを考えていた自分の頭の固さを思い知らされました。わくわくする話題です。
(5)その他、林地、農地などの管理や災害{予測|被害確認}の話題も、分からないなりに興味を持って聞かせていただきました。


 というあたりが、特に印象に残りました。

f:id:sakaik:20190914124344j:plain



 今回あまりなかった話題としては、データの収集や選別、加工、分析の工程について、具体的な課題やその解決などのテクニックについて聞いてみたいな、と思いました。

大懇親会

 お待ちかね(笑)大懇親会は、駅の近くのホテルの宴会場にて。 新潟の名産品尽くしの、素晴らしいパーティでした。
f:id:sakaik:20190914185919j:plain
f:id:sakaik:20190914190154j:plain
f:id:sakaik:20190914191107j:plain

 
 たくさんの人とお話をさせていただきました(でも、私の顔認識センサーがイカれているので、次に会ったときにすぐには認識できないかもしれません、すいません)。講演した方の講演内容についての感想をお伝えしたり、さらにツッコんだ話を聞かせていただいたり、講演していない方とも普段やられていることや興味を持たれていることなどについて伺ったり。 やっぱり懇親会あっての大イベントですね。 会場の手配や会場との打ち合わせ等、スタッフさん大変だったと思います。おかげで素晴らしい懇親会を気楽に楽しめました。ありがとうございます。

 大懇親会ではLTのコーナーもあり、私も本日記の冒頭で書いたような渾身の準備をしたLTを発表いたしました(一応OSC Niigata と MySQLの宣伝もちょびっと)。 分量的に、時間が足りないことが分かっていたので、巻き巻きで進行していたら、どこか大切なポイント(じっくり時間をかけて説明したかったポイント)をすっ飛ばしたようで、予定より前倒しで進行してしまい、つまりはぴったりと時間内に全部おさまりました(笑)。 いくつかウケも取れたようなので、満足です。
 実はこの発表、FOSS4G Hokkaido での LT 発表の続編的な面もありまして、たぶん前提条件というか背景の説明が不足していたことと思います。 要約すると「位置情報に興味を持った」→「日本の位置を決めてきた三角点に興味」→「実物を見てみよう」→「険しい場所に配置されているものが多くてたいへん(北海道では薫別の一等三角点を断念)」→「でも平地にある一等三角点もあるんだ!」→「よし、私のテーマは "カジュアルに見に行ける一等三角点" にしよう」 というもので、今回の新潟行きにあたって調べてみたら、通常は徒歩30分や1時間くらいかかる山の上にあるような一等三角点が、平地(神社の裏)にあるらしい、つまり「カジュアルにいける三角点」であることがわかり、訪ねてみた次第。
 ちなみに 次回のFOSS4Gが開催される神戸付近をざっと調べた見たところ、最寄りの一等三角点は山の上にあり、ちょっとカジュアルじゃないことが判明しました。

今回のLT発表資料、そして FOSS4G Hokkaido での LT 発表資料も併せて、以下に貼っておきます。

www.slideshare.net


www.slideshare.net


コアデイ懇親会二次会

 幹事さんが予め設定しておいてくれた二次会。もうこの頃になると酔いも回って、撮った写真は一枚のみ(笑)。 盛り上がりました。お店の方の対応も良くて、素敵でしたね。 幹事さんナイス選定です! そろそろ書き疲れてきた(結構長いんじゃないか、これ)こともあるし、まぁ気分よく酔ったことでもあるので、二次会についてはこれくらいで。 一番ぶっちゃけ話をできる場が二次会であることは、こっそりと強調しておいてもいいんじゃないかと思います(笑)。

f:id:sakaik:20190914232239j:plain

帰り

 ということで、前日入りのネタ集めから、前夜祭の1次会2次会、FOSS4G本体、大懇親会、2次会 と、びっちりの2日間で大満足したのか、通常なら一泊したあと少し周辺を見て回ってから返ったりする私が、朝の新幹線で帰路の人となりました。 人との出会いや情報との出会いなど、たくさんの出会いがあり、参加して良かったです。 運営スタッフのみなさん、ありがとうございました。
 ひとつ心残りだった「旅先なのにラーメンを一杯も食べなかった!」は、朝9時からやっている、新幹線改札前のラーメン屋さんんで煮干しラーメンをいただくことで解消されました。追加料金で「追いにぼし」をつけてもらってちょうど良かったくらいなので、標準だと私には物足りなかったかな、と。 今後のために一応メモ(笑)。 もしかしたら、追いにぼを2枚買ってもよかったんじゃないか。
f:id:sakaik:20190915094326j:plain
 




おまけ: 帰りの新幹線の向かいのホームに停まっていた 現美。
f:id:sakaik:20190915100221j:plain