ジオイド2024(試行版)が公開された!

2024年3月27日に国土地理院から『「ジオイド2024日本とその周辺」(試行版)』が公開されました。
日本における各地点の「高さ(標高)」を知る上で大きな進化であり、旧来の苦労して実施していた(らしい)基準点から繋げてきた水準測量からの開放を意味するパラダイムシフトであると感じ、大変興奮しています。
www.gsi.go.jp

なお、このエントリは私の「おべんきょう」の結果を整理するとともに、まだこの情報に触れてない人に概要が伝わったらいいなとの試みとして書いているものです。誤りや思い込みを含んでいるかもしれません。正確かつ詳細な情報は上記リンクで公開されている各種情報を参照いただけたらと思います。

前提知識:標高って何?

 あの山は標高何メートル、この場所は標高何メートルと言いますが、意外と正確に知らない人が多いのが、この「標高」というものです。

  • 標高が同じ2地点間では水は流れない
  • 標高が異なる2地点間では、水は標高が高いところから低いところに流れる

当たり前ですね。この当たり前を一旦、頭の中に置いておきましょう。

標高、というと「ゼロメートルはどこ?」という話をする必要があるのですが、これは後でお話するとして、「2地点間の高さの差」を求める方法について簡単に書くと、比較したい2地点に長い定規を立てて持ってもらって、真ん中くらいの地点から平行にそれぞれの定規の目盛りを読めば、2地点間の高さが分かります。これを繰り返していって日本中の標高が決まるのです。
この測量のスタート地点は「日本水準原点」24.3900メートル(2024年3月現在)です。

余談:海抜ゼロメートルはどこ

「海面の高さがゼロメートルです」と言っても、1日の中でも変動するし、月の中でも変化しますよね。日本では「東京湾平均海面」をゼロとすると定められています(法律上は「東京湾平均海面上二十四・三九〇〇メートル」を原点とすると定められていますが、つまり平均海面をゼロメートルとする、という意味です)。明治初期に6年位かけて観測し、決定されました。
隅田川の河口にある霊岸島で測られていたのですが、その後の都市開発で(当時は海だったのに)今は全然海じゃなくなって川の途中みたいになってしまったので、今は神奈川県の油壺で検潮しています。


前提知識: 「平ら」は平らじゃない

地球を回転楕円体としてモデル化しましょう。高さの差の測定は、先ほど「平行にして(2地点の)定規の目盛りを読」む、と書きました。実はこの「平行」というのがクセモノです。回転楕円体表面の曲面を無視して平面として扱える局所的な話として考えてみます。先ほどの「平行」とは、この平面に対して平行なのでしょうか。
いや、当たり前すぎることを質問されて意味がわからないだろうなと思います。平行なんだから平行でしょう、と。平行じゃないのは平行と言わない。・・・ですよね。  ところが違うんです。

地球というのは、場所によって重い物質や軽い物質が不均一に存在しています。そして、重い物質がある場所はより強い重力となります。私たちが「平行」だと判断する根拠は何かを考えみましょう。そう、重力ですよね。自分の右側のほうの地下に赤色物質(あるいは超小型のブラックホールのようなもの)があるとすると、そちら側に引っ張られるので、立っていても右斜め下のほうが「真下」と感じるはずです。重りを付けた紐を手に持っても右下のほうにひっぱられます。
といいつつ実際には、感覚的には「真下(と自分が感じる方向)にちゃんと重りの糸が垂れ下がってる」というだけなのでまったく違和感は感じません。単に、回転楕円対面とは平行ではない、というだけのことです。私たちは地球表面に居て、ただ重力のベクトルが向く方向を「下」だと思っているだけなのです。

前提知識:同じ標高面は回転楕円体面に対してでこぼこしている

そんなわけで、地球内部のあちこちに小さな赤色物質があると想像すると、「同じ標高を結んだ線」は回転楕円対面のように滑らかにはならずに、でこぼこしたものになります。このでこぼこの形を知るための数値が「重力」です。 実際には「右斜め下に重力が強い部分がある」という測定をするわけではなく、たくさんの「その場所」の重力を測定します。地図上にプロットすれば「自分より右側の方が重力強い場所なんだな」と分かりますよね。
日本では先ほど紹介した東京湾の平均海面を標高ゼロメートルとして、これと同じ高さを結んだ面を「ジオイド面」と呼んでいます。いわば「標高ゼロメートル面」です。回転楕円対面に対して結構デコボコしています。
「標高」というのは、回転楕円対面からの高さではなく、このジオイド面からの高さなのです。

これまでの重力の測定

あまり詳しくないので、今回の公開資料からの受け売りです。
重力を正確に測定するためには、今までは陸上の場合はその場所に行って実際に測定するしかありませんでした(海上は船で)。この正確な測定は「短波長な測定」と言うそうです。衛星でもある程度は測定できるのですが「長波長の測定」と言って、精度(有効桁数)が高くないとのこと。
どうしても山の中では観測ポイントは少なくなりますし、何度も測定に行けないのでかなり古いデータもあるのが現状でした。

今回のすごいデータ!

国土地理院では、航空機を用いて重力を測定しました。2019年から4年間に亘って、飛行距離約14万km、総飛行時間1300時間以上の測定を行ったそうです。測定の線数600本近く。これで日本周辺の重力を正確に知ることができました。
www.gsi.go.jp

測定は2023年の5月に終わったのですが、情報の整理や様々な資料を整備していたのでしょう。このたび2024年3月に公開されたのが、この測定結果を使って求めた「ジオイド面」のデータなのです。いやはや、ついに来た。網羅的に測定された重力データ(を元にしたジオイド面のデータ)。これは「高さの伊能図」と言って良いくらいの前進ですよ。すごい。しかも伊能図と違って国家機密でもなく、誰でもアクセスできるデータです。

ここ大事なので、今回の国土地理院「補足解説」資料から引用します。

今回公開されたジオイド面のデータ

GSIGEO2024beta.isg というファイルとして、北緯15度から50度、東経120度から160度の範囲のジオイド高の値が公開されています。東西は0度1分30秒ごと、南北は0度1分ごとの値です。まずは雰囲気から。

ヘッダ28行に続いて、北緯50度のジオイド高が西から東への順に並んでいます。1.5分ごとなので1行あたり約1600のデータがあります。
これが北から南へ順に各行1.0分おきの値として、2100行ちょっと続きます。大きなマトリックスデータですね。なお、EPSG:6668=JGD2011地理座標系です。
(日本国外に相当する部分の値はどこから得ているのだろうと疑問を持ちました。ご存じの方、教えてください)

任意の地点のジオイド高の求め方

緯度1分経度1.5分ごとのポイントにおけるジオイド高のデータは公開されましたが、自分の知りたいポイントがぴったり公開された座標に当てはまることは稀です。 自分の知りたいポイントのジオイド高を得るには、バイリニア補間を行います。2次元の線形補間です。
まず自分の知りたい点の近傍4点を特定し、タテ方向の線形補間、ヨコ方向の線形補間を行います。(計算式はそれなりにややこしいですが、直感的にはそういうことです)

具体的な計算式を、公開資料「ジオイド2024説明書」から引用します。


これらの計算を行うことができるWindows用とLinux用のプログラムも公開されています。 geoidcalc_win64.exe とgeoidcalc_linux_x86_64 です。
入力ファイルに緯度と経度のセットを何行でも書いておいてプログラムに喰わせると、その右側にジオイド高を追加して出力してくれるというものです。今のところ私は大量の地点のジオイド高を求めたいシーンがないのですが、必要になったときに便利に活用させてもらえそうです。(自動処理を考えるとファイルへの出力ではなく標準出力に出せるようにしてもらいたいところですが、まぁこれくらいなら使う側の工夫でもなんとか)

まとめ

こんな感じで、「かなり正確な」ジオイド高データが公開されると、衛星測位で得た楕円体高から即座にその地点の「かなり正確な」標高が計算できるようになります。測量業務的には、全国に1000カ所以上ある電子基準点を標高の既知点として使えるようになることが大きそうです。今まで東京にある水準原点からの高さを測量していたので、遠くに行けば行くほど誤差が蓄積する(と言っても一桁センチメートル内ですが)のが、重力(ジオイド高)+GNSSによる楕円体高 での算出になることで、水準原点からの距離に関係なく標高を計算できるようになったのは、大きな変化だと感じました。
改めて今回の「試行版」の公開は、「高さに関する伊能図」並の革命だと思います。

最後に現時点の電子基準点の所在地を、地理院地図より引用。全国これだけの点が高さの既知点になる!

北海道の緯度探訪(北緯45度から42度:OSC2023北海道参加に添えて)

昨年のオープンソースカンファレンス北海道(OSC 2024-do)に参加に合わせて、北海道の色々な地を巡りました。
「札幌のついでに稚内紋別襟裳岬?」 ええ、行きますよ。同じ都道府県内ですし。 ・・・嘘言いました。普通やりません。2023年はちょっと魔が差しちゃいました。そんな感じの旅程です。


その中から、北緯45度(東端西端2カ所)、北緯44度付近、北緯43度、北緯42度の地点を訪問または通過した話題を4本、リンクで紹介します。


note.com
note.com
note.com
note.com
note.com




緯度の話題を含む全北海道記録は以下のリンクからどうぞ。
note.com


OSC2023北海道の参加日記はこちらで。
sakaik.hateblo.jp

SmartHRさんがお好み焼きをご馳走してくれるツアーに参加

私の YAPC::Hiroshimaは、まだ終わっていない。

これはなに

 2月に開催された YAPC::Hiroshima で、SmartHRさんの展示ブースにて「お好み焼きのヘラ」を配布していました。
数量限定のこのヘラ。Twitterで「今から配布するよ!」の情報を得て、すっ飛んで貰いに行きました(笑)。ただのヘラじゃありません。SmartHRさんのロゴが入っています! 裏面にはソースで有名なおたふくのロゴも。 ・・・・いや、それも大事なんですが、それと同じくらい大切なのがヘラと一緒に入っている紙です。「お好み焼きを(東京で)ご馳走するよ!券」。 
そんなわけで本日開催されたのが、オフィス見学ツアー&お好み焼き食べ放題ツアー(食べ放題とは行っていないぞこら)でした。

オフィス見学ツアー

 まずは、ビルの17階にあるSmartHRさんのオフィス見学ツアー。もちろん執務室には入ることはできないのですが、とても広い共用スペース。このエリアは写真撮っていいですよ、と言ってもらっていたのですが、どうしても人が入ってしまうので、撮影も遠慮がちに。

天井の明かりが会社のロゴだったのが格好良かったです。

あと、伝説の「インターネットの椅子」(名前あってましたっけ?)

部活動が幅広く行われているということで、囲碁部、将棋部、バド部、スプラ部etc 同じ趣味を持つ人どうしで楽しんでおられるようです。職団戦とかに出られたりするんでしょうか。

いざ焼き焼きに!

見学の後は、お好み焼き屋さんに!
お店の調理も大変そうで、メインディッシュ(?)が出てくるのが遅めだったのですが、ブログではそんなの関係なくまずはすごそうな写真から、でーん、でーん。

昔のPCの話から、イベント運営の難しさやリスク、カンファレンス類へのスポンサーすることの話題など、幅広く盛り上がりました。
IT屋さんって、自分自身で経験できることなんて限られているので、他の多くの経験をしている人との会話を通して更に幅広い情報に触れることができるものです。例えば YAPC::Hiroshima のようなカンファレンスに参加することとか、その延長で今回みたいにお好み焼きを一緒に食べることとか。 そういう活動や行動を後押ししてくれる会社の仕組みがあるなら、それを使わない手はないわけですよ。面倒くさかったり不安だったり怖かったりするかもしれませんが、社外の人と会う機会をつかみ取って欲しいなぁ(そして社外の人と話をするにはあまりにも自分はプロじゃないと気づいちゃうかもしれないけど、それも成長のチャンス)などと、休日にカンファレンスに参加しても代休とかそんな仕組みがない私は思ったのでありました。 イベントや勉強会などがある時「ついて行っていいですか?」のヒトコトを言い出せるか、そんなことがその後の人生を大きく変えたりすることもあるかもしれませんね。(誰に向かって語りかけているんだw まぁ察してください)

隣のテーブルには知り合いが

 横並びだったので気づかなかったのですが、すぐ隣のテーブルに知人がいたことに途中で気づきました。この2テーブル+カウンターくらいの小さいお店なのに、なんたる偶然。
お互い顔を見合わせて「あれっ!?○○さん!」と言い合って笑う感じが、ここ何年も経験していなかった感覚でした(笑)。 PyCon JP 2024 の共同座長様でした。
こんなことあるんですね。

楽しいときは過ぎ往く

 話題があっちこっちに行きながら、つまり みんなの話題の豊富さ幅広さを表しているわけですが、気づけば良い時間。 ボリューミーな「広島の」お好み焼き(要するに焼きそば入り)を食べて満足の時間でした。実は私、今回のYAPCでの広島でお好み焼きを食べていないのです。前夜祭は頭痛でホテルで休んだ後ラーメン食べに行っただけだし、当日は日中から懇親会まで会場に釘付け、懇親会後はすぐに福山に移動してしまったので。。 そんなわけで、本日お好み焼きを食べたことで私の YAPC::Hiroshima もようやく完結したのでありました。

SmartHR さんも最近いろいろなイベントに協賛/支援等していただいてありがとうございます。いくつかのイベントで活躍を拝見していて、すぐに「このイベントに参加したから幾らの効果」と出るものでないのは当然なのですが、確実に知名度や良い印象が拡がって言っているな、と積み重ねの大きさを感じさせてもらっています。 今後もよろしくお願いします!

ゼンリンミュージアムの赤水&忠敬展が最高だった

ことの発端

2023年12月。ゼンリンミュージアムさん(以降敬称略)が、こんなツイートをしていました。


2024年の1月中旬から5月中旬まで「赤水と忠敬を一緒に並べる企画展」をやるぞ、と。これが私のアンテナにピピピッとひっかかったわけです。

以前より少し気になっていたゼンリンミュージアム。小倉にあるこのミュージアムは千葉県在住の私にとって「ちょっと面白そうだから行ってみよう」というには遠すぎました。しかし、赤水と忠敬が揃って待っているなら、モチベーション100倍アップ。さすがにミュージアムのためだけに九州まで行くわけにはいかないので、何かの予定とカップリングできないかと、そこから模索の日々が続きました。

チャンス到来(というか無理矢理作った)

 最初に候補に挙がったのは、1月末の OSC2024-Osaka のついでに訪問するという案でした。かなり本気で旅程を検討して、、、いやちょっと待って。どう考えてもおかしいでしょ。大阪のついでに小倉に寄ってきましたって。前後のスケジュールを確保しにくかったこともあり、ボツとなりました。
 次のチャンスが 2月の YAPC::Hiroshima。もともと参加を迷っていたイベントだったのですが、赤水とセットになるなら行かない理由はないと、急遽参加を決めました(結果として、期待以上に得るものがあり参加して良かったです。そちらの話はリンク先で)。広島のついでに小倉なら、まぁすぐ近くだしアリですよね! アリですよね!? 

小倉到着

 そんなわけで羽田空港にて SNS には「広島にいってきま~す」みたいな事を書いて、降り立ったのは北九州空港(笑)。4時起きで第一便で到着しました。空港から小倉駅へのバスは補助席もほぼ使い切る満席。
小倉駅では、まず入場券を買って5番線へ。 ゼンリンミュージアムがホームにあった旧喫煙ルームを展示スペースとして利用しているということで、どんなものをかを見たかったのでした。

旧喫煙ルームの中を使っているわけではなく造形の外側にポスター展示をしているもので、これから本物のミュージアムに行くのだったら別にわざわざ見なくてもよかったかもしれません(笑)。が、見なかったら見なかったで「ホームにあるっていうアレ、どんなんだったんだろうなぁ」ってずっと言っていたと思うので、自分の性格としては押さえておく必要があるビューポイントでした。

渾身のボケ不発

 「広島に行くよ」と言って羽田を飛び立ってきたので、ひとつボケてやろうと「平和通り」と「平和通駅」の写真を撮ってSNSにアップしたのですが、誰にも気づいてもらえませんでした。説明抜きで(むしろまじめな顔をして)投稿したので「それ広島ちゃう。小倉やん」と突っ込むことが躊躇されたのかもしれません。大不発(笑)。


一級基準点21046

おお、あれがゼンリンミュージアムのある建物だ!と見えてきたあたりで、何やら気になる美しい橋が目に入ったので、少し寄り道。
寄り道の途中で「伊能忠敬 測量200年記念碑」というものをみかけました。



「2001」という名前がつけられた1級基準点です。点番号21046。成果ID 921079。銘板に記された経緯度は、どうやらJGD2000(またはそれ以降)の値のようです。よかった(笑)。

ゼンリンミュージアムに到着

そんなこんなでようやくゼンリンミュージアムに到着です。家を出てから7時間強。
でもここからがまだまだ長いんです。

いざ入館~怒濤の情報インプット

 入館料を支払っていざ入館。 荷物は最初はずっと手持ちしていればいいやと持っていたのだけど、ほどなくして身軽になりたくて、館内のコインロッカーに預けました。絶対そのほうがラク。館内はほとんど写真撮影不可なので、ここからは言葉中心で。
 最初の廊下に掲示されている地図の歴史の数々を、人類のその想像力に嘆息しながらひとつひとつじっくり眺めていると、キュレーターさんに声をかけてもらいました。余談ですが私、館内にいる間ずっとこの「キュレーターさん」という言葉が思い出せずに「サーキュレーターみたいな感じの言葉だったんだけど、なんて言うんだったかなぁ」と悶々としていました。思い出せないんじゃなくて思い出しすぎていた(だいたい合ってた)と気づいたのは小倉を離れる新幹線に乗ってから。
 で、「北側の窓から関門海峡がよく見えるんですよ」「今日は天気が良くて特に景色がいいですね」などと教えてもらい(こちらの景色は写真撮影OK)。

 私はと言えば、ようやく来られた嬉しさと、大昔の地図の歴史を眺め始めた興奮と、これから見るであろう企画展「赤水と忠敬」へのわくわく感から非常にハイテンションになっていて、お話相手ができた嬉しさかも、あれやこれや話しまくっていたように思います。その後1時間以上、比較的空いていた時間帯だったとは言え、まるで専属案内人であるかのようにたくさんのお話を聞かせていただきました。得がたい体験でした。本当にありがとうございました!

「集めた赤水 歩いた伊能」展示室へ

 企画展の展示室に入ります。普通の興味レベルならば「ふぅん」と言いながら一つ一つ軽く眺めて10分程度ですべて通し終わるくらいかもしれませんが、私にとっては「見たかったお宝」が壁じゅうにあるわけです。実際、この展示室で相当な時間を過ごしました。
 さて、私のこれまでの赤水のイメージは、当企画展でもタイトルになっている「集めた赤水」の通り、現地に行きもせずに、人から話を聞いただけで適当にそれっぽく図に落とし込んだ、というものでした。あっちから来た人に聞いたら高い山があるらしいぞ、ほい来た、山を付け足しちゃおう。こっちから来た人に聞いたら、海の方に向かって大きな回り道になってるって話だ、ほい来た、半島を付け足しちゃえ。そんな集まりで、あの「一応もっともらしい日本の形をした地図」ができるんだから、すごいもんだなぁ、そんな風に考えていました。

 とんでもない。

話を聞くと言っても、ただの旅人に聞くだけでなく、当時の有名な学者さんとの多くの付き合いの中で学術的な裏付けを持ったも情報を得たり、それなりに実績があると言われていた天文学書や事典などをもとに情報収集していたとのこと。中でも私が気に入ったのは、地図を描く上で緯度を正確さの基準とした話。 緯度というのは決められた星の見かけ上の高さ(角度)を観測することで得ることができます。 各地域での観測結果を収集することで(今の地名で書くと)「松江は何度、金澤は何度、宇都宮は何度」と分かるので、この点の情報を基準として地図に描きこむことで、より正確な地図へ近づけることができた、という話でした。すごい。

 地図の歴史を辿るときには、自分の得意な緯度をひとつ持っておくと、より楽しめます。私の場合は北緯35度がそれで、江津から大津、伊豆半島を通って安房まで抜けるラインがどれだけ正確に表現されているかを堪能しました。と言いつつ、私も手元に赤水図のレプリカを所持しているにもかかわらず、赤水図では安房が短く、北緯35度線が安房の南海上を通っていることに、今回の会場で見て初めて気づいたのですが。

 そして目玉の、赤水図と伊能図の横並び展示。 赤水図もすごいなぁと思っていたけど、並べてみると伊能図の美しさが一層引き立ちますね。よくもまぁこんな細かいものを全部測量しながら線を引いていったものだと、その膨大な作業量に驚かされるばかりです。

 そうこうしているうちに(ここまでで入館後2時間経過)ガイドツアーの時間になったので、参加して他のお客さんと一緒にお話を聞きました。既に濃厚な説明をたくさん聞かせていただいたあとなので、私にとっては復習のような感じでしたが、改めてひと回り説明を聞いてみて、展示の流れが整理できたような気がします。

 私にとって今までの大きな疑問が「何もないところ(というか事実上は行基図か)からいきなり、あの赤水図が生み出されたわけではなかろう」というものでした。 そんな話をキュレーターさんにしたら、その場でiPadで調べてくれて数分後に「見つかりました!」って教えてくれました。私としては「あぁ、やはり赤水が元にした地図というのはあったのか」と安心して、その聞いた名前は忘れてしまったのですが、いま改めて調べてみたところだと、森幸安による通称「幸安図(日本分野図)」でしたかね。あるいは流宣図というのもあるようで意外と色々な地図が当時あったのかもしれません。 人々がこうして「日本の形」を認識していく過程って、更にもう少し調べたら面白そうだなと思いました。

 同様に、海外から「日本」という国が(地図的な意味で)どのように見えていたかも、常設展示のほうで体感することができて興味深かったです。いくつか描かれている地名に、なぜその地名がそこに描かれることになったのか等と当時の様子に思いを馳せるのは楽しいですね。

楽しい時間はあっという間に過ぎ往く

 夜になるまでに広島に移動する必要があるので、名残惜しさを感じつつ、展示の鑑賞は終了に。 館内には休憩所を兼ねたカフェがあり、そちらでコーヒーとプリンをいただきました。今回伊能図の展示をしていたこともあってか、千葉県のピーナッツのお菓子もあったのですが「いや、私そっちから来たので(笑)」。 むしろそのお菓子、時々買ってお土産に持っていくほうの立場なのでした。

ここまで入館から4時間。気分が高ぶっていたので気づきにくかったのですが、さすがに疲れました。プリンの甘さが安らぎに。

ミュージアムのキュレーターの皆さん、受付/カフェ のみなさん、とても雰囲気良く声をかけてくださって、とても心地よい時間を過ごしました。 
小倉というのはなかなか立ち寄る機会のないエリアなのですが、また興味深い企画展がある時にはスケジュール作って訪問したいです。魅力的な企画展を楽しみにしています!

お買い物も

 同じビルの下の階に、地図にちなんだグッズを作って見ることができるお店と、各種グッズの販売のお店とがあり、帰りに立ち寄りました。カンバッヂを作らせてもらったり、いろんなグッズを買ったり(あまり買う気がなかったのですが、ついついあれもこれもと選んでいるうちに5桁の買い物に・・・ヒエー)しました。写真で紹介したいのですが、ここまで書いてきて疲れてしまったので、気が向いたら後日追記したいと思います。

その後の話

 広島に移動して、YAPC::Hiroshimaの前夜祭に参加する予定だったのですが、ホテルに入った途端に緊張がほどけたのか、睡眠不足+水分不足+立ちっぱなしの3拍子が揃ったこともあって、バタンと。 もう動きたくないくらいの頭痛で、そのまま前夜祭を諦めてホテルでお休みしました。 これに関しては残念だったのですが(楽しそうだな~と思いながらTweet見ていました)、ゼンリンミュージアムでの満足度の高さと、結果としてYAPCも翌日の本体で最高の体験をたくさんできたので、体調を適切に整える時間に使えたことで良かったのかなと思っています。 非常に濃厚で満足度の高い2日間でした。

私のたからものの赤水図

 数年前に何かの拍子に買った赤水図のレプリカ。 今回の展示を見て「版」がいろいろあることを知ったのですが、確認したところ手持ちのレプリカは「寛政3年の第2版」でした。ここまで興味を持ってくると、他の版の赤水図も欲しくなってしまいますね。

さいごに

 あの楽しかった体験を日記に書かなければ、と思いながら、書き始めるまでの気合いを溜めるのに1ヶ月以上もかかってしまいました。書き始めたら案の定指が止まらず、書きながらあの楽しかった時間を思い出しました。
この分野に興味を持ってしまった千葉県民としては当然佐原の伊能忠敬記念館には行ったことがありますし、なんなら利根川越えたところにある間宮林蔵記念館も行ったことがありますが、今回、同じく茨城県内は高萩に赤水記念館(最近名称変更)があると教えてもらったので、今年中には一度訪問できたらいいなと思っています。

追記

 この日記を書いているうちに気分が盛り上がってしまい、以前から気になっていた本を買ってしまいました。
ひとつは「流宣図と赤水図」。赤水図の各版の違いを紹介し、見分け方を提示しているのが面白いです。赤水図に至る歴史上の各種地図についても多く年代入りで紹介しており、一度じっくりと目を通して整理してみたいところであります。
もう一冊は中図(伊能図)の原寸大複製。写真で見ると感覚失いそうですが、「流宣図と赤水図」がちょうどA4サイズなので、伊能図の大きさがわかるでしょうか。伊豆諸島の測量結果やシーボルトが持ち出してメルカトル図法に書き直した日本全図なども掲載されていて、ページをめくるたびにわくわくする本です。さすがに気軽に新品で買えるお値段ではないので中古ですが、十分に状態よく、良い買い物をしました。

写真撮影のために開いたページは「いわき 高萩」のページですがページ下部には『赤水の死没10日後であったので、測量日記に「長久保赤水の出し村なり」と書いています』と説明書きがありました。

PG-Strom v5リリース記念イベントでベンチマーク紹介しました

2024年3月15日に開催された『「GPUを活用したビッグデータ分析基盤を構築しよう」PG-Strom v5リリース記念』イベントでお話をしてきました。
bakusokudb.connpass.com

15分の枠の予定だったのですが、公開された動画を見ると23分あるので、どうやら23分話していたようです(笑)。

PG-Strom

 最近は仕事としてPG-Stromの検証をして、皆さんに使ってもらうためのノウハウを溜めたりしています。 PG-Stromは一部の人からは強い興味関心の対象となっていますが、まだまだ広く知られているとは言えないかな、と思っています。

簡単に書くと

  • PG-Strom は RDBMSです。PostgreSQLの extension として動作します。使い勝手はPostgreSQLそのものです。
  • フツーのRDBMSは処理にCPUだけを使うものが多いですが、PG-StromはGPUのパワーを使います。5000とか8000並列なのでハマる処理は相当速いです。
  • 日本で開発。機会あれば開発者に日本語で疑問点を尋ねたりできます(今回みたいに)。

という感じ。(内部でのデータ転送を少しでも速くする工夫とか、無駄なものを転送に乗せないようにする工夫とか他にも色々仕掛けがあります)

たくさんの参加御礼

 そんなPG-Stromが、昨年末の12月に Version 5 として大幅にバージョンアップしました。一つ前のバージョンが version 3 だったので、約1.7倍!(そこを計算で比較するのは適切ではない)
version 3 で今ひとつイケてなかった仕組みを大量に設計しなおして、より使いやすくより高速になったバージョンです。
そのリリース記念として、初めてこういうイベントを開催しました。 
まぁこんな感じなので、誰も来てくれないんじゃないか、せめて知り合いが2,3人でも来てくれれば、動画公開用の「公開収録」くらいのつもりで話せばいいか、なんて思っていました。

 ところが!ですよ。

蓋を開けてみれば会場に14人(登壇者3名含む)。はじめましての方も、遠くから来てくださった方も、旧知の方では「この人が興味を持ってくれるんだ!嬉しい!」という方も。
ご参加ありがとうございました。

私の発表

 私からは、PG-Strom を用いたスタースキーマベンチマーク(ssb)の結果を紹介しました。 初めて紹介する場だったので、ややssb自体の説明をじっくりとやることにしました。ベンチーマークの性質、データ規模等について理解いただけたのではないかと思います。パフォーマンス測定結果は、PostgreSQLの標準のテーブル(heap)に乗ったままのデータを、PG-Stromを使って、つまりGPUで処理させることでどれくらい変化するのかをお伝えしました。実は、もっと速くする方法があるので、またの機会に紹介したいと思います(Apache Arrowファイルを用いる方法です。Arrowファイルを使っても速くなるものとあまり効果が得られないものがあるので、そんな話も追々)。
 

開発者海外さんの発表

 PG-Stromの歴史を辿りながら PG-Strom v5 の工夫のポイントを紹介してくれました。私が v3 で不満に感じていた部分が v5 で解消されている話などもありました(件数少ない時に、むしろPG-Stromを使わないほうが速かった件など)。GPUの内部をイメージし切れていないので「連続状態のデータとなるように」と言われても未だに分からない部分も多いのですが、ひとつひとつ課題やアイデアの実現などを重ねて、このバージョンができあがったことがよく分かるお話でした。こういう話は(細かいところがわからなくても)聞いていてワクワクしますね。

資料と動画公開

当日の発表動画は、YouTube の『爆速DB「PG-Strom」』チャンネルで公開しています。チャンネル登録してぜひご覧ください。
https://www.youtube.com/@bakusokuDB


私の発表資料は Speakerdeckで公開しています:
speakerdeck.com

今後

 終了後の交流会も、短い時間ながら大変盛り上がりました。大崎の夜は早い(笑)。あと1時間くらいお話したいところでしたね。
PG-Stromの話題に興味を持ってくれる人がたくさん居ることもわかったので、おそらくまた2回目、3回目を開催していくと思います。ぜひまたご参加ください。今回参加叶わなかった方も次回は会場でお会いしましょう!


Speakerdeckで公開したスライドでは画像がツブれている可能性があるので、Star Schema Benchmark のクエリの早見表をこちらにも貼っておきます。実は途中から記述方針を変えたのでよく見ると首尾一貫していない記述方があるのですが、ご愛敬という事で。

「公共交通オープンデータ最前線2024」参加

今年も「公共交通オープンデータ最前線2024」に、参加してきました。今年は3月2日の開催。「3月に入ってから発表準備しよう!」という人には厳しい日程だったかも(笑)。
https://gtfs2024.peatix.com/


昨年(2003年)の参加後にこんなブログを書きました。
sakaik.hateblo.jp
今年も、33講演。幅広いテーマ、幅広いバックエンドを持った登壇者の、たくさんの講演を聞かせていただきました。IT屋さんがガッツリ入るケースも増えてきているなという印象。

路線がないのに扱える GTFS-flex

 今年の新しい話題としては GTFS-flexが印象的でした。GTFSというのは主にバスを中心とした「路線通りに運行している」公共交通を扱うものだと理解していたのですが、GTFS-flex はオンデマンド交通のような路線がないもの(スタートとフィニッシュだけ「その時に」決まるようなものなど)を扱える仕組みだそうです。
セミオンデマンド」とか「フルオンデマンド」とかは明るくないのでよく分かりませんでしたが、面白い事ができそうな予感がしました。

なお、昨年の「新ネタ」でわくわくしたGBFSは、今年は話題を聞きませんでした。どこかに行ってしまったのか、細々と続けているのか。

やはり懇親会

 昨年は(有志でというテイで)ごはんを食べに行きましたが、今年は公式に懇親会が開催されました。
お話したかった方が何人かいて、でも私、顔認識ロジックが貧弱なもので相手を見つけられないものだから、いろんな人に「○○さんって分かります?」とか聞いて回っていました。お世話してくださった皆さんありがとうございました。こういう時に、やっぱり名札があったらいいのになぁと思ったりします。私も、よく自分の名札を持って行くのですが、今回は忘れてしまいました。
狙っていたお相手以外にも、多くの出会いがあり、普段よく顔を出すいわゆる「ホーム」の場も気楽だけど、こういうアウェイ的な場(と言っても随分と知り合いも増えましたが)も楽しいと改めて感じました。

今年こそデータと戯れる時間を

 毎年このイベントに参加(コロナ時は視聴)して、「GTFSデータ楽しそう!やるぞ!」と思うものの、翌日から日常に忙殺されて触れぬままに翌年のイベントを迎える、ということが続いております。GTFSデータリポジトリで手軽にデータを取得できる場を作っていただけていることだし、今年こそ、何かの形になるところまでたどり着けないとしても少しはデータと戯れてみたいです!

OSGeo.JPともぜひ何か

 OSGeo.JP の運営メンバからもたくさん今回のイベントに参加させてもらっていました。懇親会で何やら楽しい話がなされていたようですので、OSGeo+GTFS的な何か(発表会かもしれないし交流会かもしれないし)など開催される流れになったら良いですね。

ますますの発展を!

 基本的に部外者の興味本位、という立ち位置で参加させてもらっているのですが、毎度、紙が減っていくこと、自治体も頑張っていること、新しい発表者が毎年現れてくれることなどを体感しています。一方で、データ作成公開を継続できなかった地域・会社の話も耳にすることもあり、これは残念だなと感じました。「雰囲気で」やっていたところと、「しっかりと意義を理解して」取り組んでいたところの差が出ているのかなという印象です。 継続できない事情はそれぞれだと思うので、そういった出入り自由な雰囲気を持ちつつ、今のように全体としては拡がっていく傾向が今後もますます続いてくれることを願っています。

なお、冒頭の写真は昨年のと似ていますが、ちゃんと今年の開始前に撮影したものです。同じ部屋だから似た絵面になるよね。

MySQLで二乗三乗は^じゃないんだじょう

SQL」は標準化されているとはいえ、特に関数や演算子にはデータベース製品ごとに結構な差異が含まれています。「方言」と呼んだりしますね。
その「方言」のおかげで、うっかりハマったので、紹介するじょう。

計算が合わない!

事の発端は、SELECT句で行っていた少々複雑な計算が、なんか全然違う値を返していることに気づいたこと。式を分解しながら原因を突き止めたところ、累乗の計算で期待と異なる結果を返していることが原因だと分かりました。

何が起きたのか

シンプルな例として「10の三乗」が欲しいとします。まぁ、何も考えずに手を動かすと、このように書きますよね。

mysql> SELECT 10^3;
+------+
| 10^3 |
+------+
|    9 |
+------+

 10の3乗は、9です! ・・・・ってそんなことあるかぁっ!

実はMySQLでは ^ は、ビット演算の演算子なのです。XORです。
MySQL :: MySQL 8.0 リファレンスマニュアル :: 12.13 ビット関数と演算子

ということで 10→1010、3→0011 なので、

1010 XOR 0011 = 1001

(1001←9)
という正しい計算が行われたということですね。 もちろんこの式単独で見ればおかしいことにすぐに気づくのですが、複雑な式の結果が合わない、というところからこの演算子が累乗でないことに気づくまでには結構手間がかかりました。。

MySQLの累乗はパワー

 MySQLで累乗の計算を行うには、POW() (またはPOWER())を使用します。こんな感じ。

mysql> SELECT POW(10,3);
+-----------+
| POW(10,3) |
+-----------+
|      1000 |
+-----------+

なんだか見た目として(慣れないと) 10の3乗を指示した気分になれないですよね。。

PostgreSQL では

PostgreSQLでは「^」で累乗を表します。こっちのほうが多くのプログラム言語で見慣れているので気分良いですね。

pgdb=# SELECT 10^3;
 ?column? 
----------
     1000

追記(2024/03/07正午頃)

 Twitter(現X)で紹介したところ、「プログラム言語で累乗に ^ 使うのって少ないんじゃね?」「OracleMSSQLでもPOWER()だよ。MSSQLでは ^ はXOR」など色々おしえてもらいました。
また、本エントリで多少の違和感を持ちつつ「累乗」と書いていたのですが、私が普段よく使っていた用語は「べき乗(冪乗)」でした。前者は自然数の場合のみ用いられる語とのことです。まぁ「3.14^2」みたいな式を累乗と呼んでも目くじらを立てる人もそうそういないと思いますけど、正確ではなかったな、と。(1000^3 を例にしておいてよかった)
以下のスレにて。