RubyWorld Conference 2025 参加

 今年もRubyWorld Conferenceに参加させていただきました。
2025.rubyworld-conf.org


 RubyWorldには3回目の参加となり、 もともとの知り合いに加え、このイベントで知り合った方々とも「再会」と言えるお相手が増えてきた場となりました。 皆さんいつもありがとうございます。

1日目2日目講演

 印象に残ったことなどをつらつらと。今今思いついた順に書いていくので、順不同ですし、本当はもっとインパクトがあったのに、ここに書き漏れているものがあるかもしれません。

膨大な業界知識に圧倒

 歯科医療のクラウドサービスの紹介講演。とにかく圧倒的な業界知識の広さ深さに圧倒されました。UIの紹介を通しての仕組みの解説に多くの時間を割いていましたが、それらのUIを支えるデータ構造がどうなっているのかな、などと妄想を巡らしながら楽しく聞かせていただきました。 医療事務の本の第1章に書いてあるぐらいの点数制度や自己負担などについて少々知っている程度でしかない私には、 新鮮な話が多く、自分の詳しくない業界の話を聞くのは面白いなと改めて感じました。 一言で言うと「すごい」。

スモウルビーがWEB対応に

 オープンソースカンファレンス(OSC)というイベントで何度か松江に来ているうちに知るようになったスモウルビー。少なくとも10年前のOSCでは既に発表されていたものです。第1印象は「また妙ちくりんなラッパ(フロント)を...」「なんでもScratchにすればいいってもんじゃないんだぞ 」というものでしたが、地道かつ精力的な普及活動により すっかり会って当たり前のソフトウェアになったように思います。 その更なる普及に向けての障壁となっていたのが、Windowsアプリであるということ。 今回の発表でブラウザ上で操作できるようなウェブ対応になったというお話を聞きました。 ブースでの追加情報を合わせると、とりあえず多くの機能がブラウザ上で動作するようになったという段階であり、ユーザが作るプログラムコードそのものはまだ手元で管理するものとのことですが、 Windows以外の人が触る機会を提供できるようになったこと、そして次の段階としてネットワークを通したプログラムのやり取りや集約・公開などへの道が開けるという点で、非常に今後も注目しています!

 OSC 2015 Shimane : オープンソースカンファレンス2015 Shimane - オープンソースの文化祭!
(ちなみにこの年のOSCにはフェンリルさんも参加されていたようです)

ライザップの育成システム

 開発チームを立ち上げ、急激に大きくしていったRIZAPテクノロジーズさんのお話。 タイトルに「新卒9割超の開発組織」とあり、「そんなのありえないだろう」とか、「今やプログラムを書くってその程度のものなのかな」などとも思ったのですが、私の脳内で勝手に「新卒」を「未経験者」に置き換えていることに気づきました。それなりにベースの知識を持っている優秀な学生さんを集めたということなのでしょうね。
 徹底した文書化・手順化主義。必要な部分は徹底的に深掘りし、誰でも同じように必要なものを習得し、課題を解決できるようになることを目指した膨大な文章を基に、質の高い教育をしているといった内容だったと思います。 能力のない人が作るルールやマニュアルは害悪でしかないのですが、このように全体を見通して適切にコントロールする能力を持った人が中心に居ての仕組み作りは、かなりうまく回っているのだなという印象を受けました。日報という形式を用いたアウトプット重視も、(大変そうだけど)効果ありそうで良いですね。
 同社に勤める私の知人(カンファレンスには不参加)からSNSでメッセージをもらっていたのに気づくのが遅れたのが痛恨。会場にいるうちに気づいていれば、共通の知人として紹介してもらってお話できたのに 機会を逃しました。

Matz貴重講演

 まつもとさんの貴重な基調講演。Rubyのこれまでの話は至る所で聞いているはずなのに、聞くたびに新しいお話が出てくるのがすごい。「(Rubyについて)ぼくは自分が作ったものだから愛着あるけど、みんながなんでこんなに愛着持ってくれるかわからないw」という感覚の吐露が面白かった(笑)。
 来場者の中には3年5年先のRubyの話をまつもとさん自身から聞きたいと思う向きもあったようですが、まつもとさん自身は「まず目の前の一歩一歩」 と、おそらくやりたいことはたくさんあるだろうけれども、可能性レベルのものを安易に語らないあたりも、Rubyが長らえる秘訣なのだろうなと感じました。

Tangible Code

 つまみをぐるぐる回して、画面に動く模様を描画するという話。 タイトルをちゃんと見ないまま話を聞き始めてしまったので、「考えるな!感じろ!」とつまみを感覚で操作しながら コードのパラメータ値を変更していく手法を「感じブルコード」と紹介しているのかと勘違いしていました。Kanjible Code。実際にその場で、自分のスマホで動きを見られるのも、ライブ感があって良かったですね。
 話の本筋の部分ではないかもしれませんが、 ロータリーエンコーダーをこのように入力機器として使うことに大変興味を持ちました。 パラメーターの受け取り方などの書き方を一旦習得してしまえば、様々な分野で「感じブル操作」なオモチャを作れそう。(私の関心分野で言えば、地図の操作などに応用が効きそうです)

その他

 まとめちゃっててすいませんが、その他印象に残ったものをぽつぽつと。 まず「コミュニティに入って、美味しいお酒を覚えて仲間が増えて嬉しい!! 」みたいなお話。「コミュニティ」の力を信じて 微力ながらいろいろと運営に関わっている(Ruby以外ですが)立場として、ニコニコしながら聞かせてもらいました。まさに誇張ではなく「人生が変わる」という、そんな場にコミュニティがなれたのですよね。
 上定市長は毎年オープニングでお話を伺っています。RubyやITが持つ力について、本当によく理解されていて、 毎年お話を伺うのを楽しみにしています。 ご挨拶したいなと思いながらも、いつもオープニングが終わるとすぐにいなくなってしまうので、 日中はお忙しいでしょうから、できれば今度は懇親会にもお顔を出していただきたいと思う次第なのであります。
 永和さんのランチタイムLTはいつも楽しみにしています。 が、特に今年は持ち時間に収まらない人が多く、いよいよ本題というところで終わってしまったりして、 若干消化不良でした。 100秒ぴったりに収める「職人技」を見せていただくか、あるいは「大事なことは先に言う」にて、ご用意のネタ(本題)をまず 聞かせていただくなと 来年期待します。

大懇親会

 今年も盛大な大懇親会。ご当地割り子そばやおいしい日本酒のご用意が嬉しい。


 講演を聴いている間ではなかなか会えなかった人とも、「あ、来てたんですね」という感じで再会できるなど、やはり大懇親会は良いですね。 大概は共通の知り合いを通してという形にはなりますが、新たな方ともたくさんお話をさせていただき、オフラインイベントならではの醍醐味を堪能いたしました。
 参加票に印字されている番号による大抽選会では、(106番だったので)「ひゃく、ろく、、、」という声にドキっとして、続く「じゅうさんばん」(163番)を聞いてがっかりする、ということを何度か繰り返した後、 いよいよ最後のひとつというところで番号が呼ばれました。3年目の参加にして初めての当選です。うれしい。ありがとう!! まつもとさんにその場でサインをしていただきました!!

前夜祭

 時間を巻き戻して前夜祭の話、ANDPADさんが開催された前夜祭に参加させていただきました。 松江には何度も来ているけれども、鯖しゃぶを初めて食べました。 プリプリしていて厚みがあって最高でした。これは次に来た時も食べたい! 

 実はこの前夜祭、申し込みが遅れてしまい、補欠2番目となっていました。 当日、お昼過ぎに羽田空港を 飛び立つ時にもまだ補欠1番目だったので(誰かの都合が悪くなることを祈るのも変な感じですし)参加を諦めていたのですが、出雲空港に降り立った直後に繰り上がりの連絡をいただきました。 聞くところ、日中のイベントに参加されていた方で色々調整いただいたそうで、Connpass見るとたぶん大倉さんでしょうか、お譲りいただいた形だったようです。 なんかすみません、ありがとうございます。会場でお礼をお伝えすべきでしたが、お会いできず、本ブログにて失礼いたします。

 Ruby KaigiがRubyそのものを話題にすることが多いのに対し、RubyWorldはRubyを使って何をするかに焦点を当てているような点が気に入って松江のこのイベントに参加させてもらっているのですが、一方でそこはやはりRubyコミュニティなので、 前夜祭では「いま、次のバージョンのこの機能作ってるんだよね」みたいなお話が当たり前のように聞こえてきます。言語そのものを作っている人との距離の近さや、開発者の中でも自分が詳しくない分野を、他のコミッターに学びに行っているなどのお話が聞こえてきて、密かに興奮しました。 目の前で嬉しそうに中の仕組みを語っている人が誰なのか知らないまま会を終えたのですが、後で聞いたらtagomorisさんだったようで、モリスさん、MySQLのイベントには何度か参加していただいていたはずなのに 私の記憶が随分変わってしまっていたようで一発で認識できなかった痛恨。 懇親会で改めてご挨拶できてよかった。

運営とかスポンサーとか

 今年も素晴らしい運営をいただきありがとうございました。 会場内で受付から講演の聴講、大懇親会までとても快適にすごせました。

昨年より少し寂しい面も

 会場でもいくつか声を耳にしましたが、 例年と比べて、やや寂しく感じる面もありました。 2点ほど書こうと思います。
 まず会場に向かう道にて、橋にのぼりが立っていなかったり会場の建物にも大きな横断幕がなかったこと。 会場に向かいながら、「あれ、今年は会場違うところだっけ?」と少々不安になりました。(建物に入れば標識はあったので、私もいいオトナですから、あぁ、と この時点でなんとなく察しはつきましたが)
 もう一点が、展示会場へのセミナーの投影がなかったこと。 都合で公演会場に入れないとき(連絡待ちや短時間打合せなど)に、1階にいても「参加した気分」を味わえたり、あるいは休憩時間にお喋りしすぎても 講演が開始していたり開始予告がアナウンスされていることに気づけたりなど、あの投影はとても良かったので、今年なかったのは残念でした。 ノボリは、まあなくても困るものではありませんが、こちらはぜひ来年の復活をご検討いただきたいところです。

オトナの事情

 ノボリを出すにしても、別の部屋に映像音声を届ける仕組みを用意するにしても必要なものがあります。 そう、「先立つもの」です。毎度、カンファレンスを支えてくださっているスポンサーの皆様、ありがとうございます。
 私もイベント運営に 携わることも多い端くれとして わかるつもりなのですが、運営者って、できれば涼しい顔をしていたいんです。 多少大変なことがあっても「大丈夫ですよ」てって顔をしていたいものなんです。参加者には心配をさせないで、楽しんでもらいたいから。 今回のRubyWorldではまつもとさんをはじめ運営側から何度か ご支援の願いがありました。 運営者がこういう言葉を口にするというのは、本当に大変なんだと推察できます。 Rubyを使ってイイオモイをされている会社様におかれましては、カンファレンスへの支援、さらにはもう一段階上への支援をご検討いただけると、大変ありがたく存じます。私も単なる一参加者ですが、この楽しいイベントが今後も続くよう、お願いをする次第です。


 参考までに、ここ3年間のスポンサー数の変遷です。去年がすごかったけれども、全体として 協力する会社さんの数自体が著しく減っているというわけではないんですよね。 (一番左は今年シルバースポンサー 協賛金を1とした時の協賛金額の比です)

種別 2023 2024 2025
10 Ruby 3 3 2
5 Platinum 13 15 10
? 3 - -
2 Gold 12 14 15
1 Silver 22 33 27
Sum 53 65 54


.

協賛すると起こること

 「自社を知ってもらうことができます!」とはよく言うのですが、今回私自身こんなことがありましたという紹介を。
今回帰る日に石見銀山に寄ったのですが、面白いモビリティの取り組みがあったので 興味を持って写真を撮ったりしていました。 帰宅後にイベントでもらったパンフを整理していたら、今回のPlatinumスポンサーであるバイタルリードさんが運営するサービスだったことを知りました。


 GTFS対応ということで検索してみると、見事に「ぎんざんカート」も時刻検索結果に出てきます。素晴らしい!
図:Google Mapsの出力を元に筆者加工
(私、GTFSとかにも興味あります)

・・・・というような思わぬ宣伝になることもあるので、ぜひみなさまご企業におかれましては、イベント支援の上、「会場内だけでアピールしようとせずに、何か持ち帰って後で見てもらえるものを」ご用意されるといいんじゃないかなと思います。

おわりに

 いろいろ書きましたが、とても充実した楽しいイベントでした。運営の皆様、登壇してお話を聞かせてくださった皆様、会場でいろいろお話をさせていただいた皆様、どうもありがとうございました。 実は私は普段Rubyをほとんど使っていないのですが、2年前に このカンファレンスに興味を持って参加した際に「全体の雰囲気を知るためにも 、3回は無条件で参加する」と決めていました。今回はその3回目となります。来年のことは未定ですが、また参加したいと思う楽しいイベントでしたし、 その際にはまたお仲間に入れていただければ幸いに存じます。ありがとうございました。


カンファレンス以外の、松江行きの往路復路、松江でのお楽しみなどは、noteのほうに書きました。

note.com




.

リンク

過去の参加:
去年は Day2終わった直後に福岡に、おととしは一泊して翌朝広島に移動していたんですねぇ。今年は飛行機のお値段が夜のが安かったので、翌日たっぷり島根県を回る時間を取れました。今年のその辺の話はまた改めてnoteにでも。

sakaik.hateblo.jp
sakaik.hateblo.jp


会う人会う人に私が熱く語った音声入力の紹介記事:
sakaik.hateblo.jp

CEATEC 2025に行ってきた

10月14日から17日までの4日間幕張メッセで開催されているCEATECの、3日目に行ってきました。
何か知らなかったもの、面白いものに出会って、刺激をもらって帰ってこれたらいいな、ぐらいのつもりでいたのですが、予想していた以上に楽しかったので珍しくこういった商業イベントのブログも書きます。

11時40分頃に会場に到着し、15時40分頃に会場を後にしました。2時間程度いればいいなと思っていたのに、ちょうど4時間いたことになります。面白かった。後からニュースを見たら、私の到着直前まで石破総理が会場にいらしていたそうで、なぜ待っていてくれなかったのか(なぜ待っていてくれると思ったのか)。

印象に残ったものを箇条書きで。基本的に順不同です。敬称略。

  • キーボードのREALFORCE(東プレ)ブース。普段の愛用の御礼を伝えられればとお話をしてみたら、ものすごく詳しい方だったので認識しないキーやバネ音が気になる話など、たくさんたくさん伺うことができました。新製品R4の事も教えていただきました。放っておいてもお気に入りのキーボードではありましたが、お話を伺って一層愛着が湧きました。
  • 各地域のブース。単独で出していたり、共同出展の中の1ブースだったりと様々でしたが、市や県のレベルで出展されていて、いろいろお話を伺いました。ちょっと国内万博っぽくて、こういうブース大好きです。知ってもらいたいという自治体から企業招致、あるいは自治体で行っている取り組みのアピールなど、目的も様々でした。福岡市の高さ制限緩和で、今までよりも高いビルがどんどん建っているというお話に活気を感じました。
  • LBMAブース群。位置情報・地理情報のブース群。一応今回の最大の目的地でした。知人から「ブースを出しているから来てね」と言われて来たのですが、その知人は今日の担当ではありませんでした。残念。データ提供や分析、ビジュアライズなど、様々なレイヤーの展示があり、刺激的でした。
  • 東京都。デジタルツインの展示。公開している点群データについてお話を伺いました。データを一度取って満足するのではなく、継続的な更新の必要性について要望をお伝えできたのが良かったです。東京都が公開しているデータや3Dビューワーを使った事例などの情報を求めているそうなので、活用したりセミナーで発表したりしたときには、積極的にデジタルサービス推進部に連絡をされるといいと思います。応援したい。
  • ETC 2.0 。今までも何度もロゴは見たことがあったはずなのに、ああETCね、ぐらいに思っていたので、今回お話を伺って、その出来ることの広がりに期待を持ちました。とりあえず業務の運行管理向けに閲覧できるというログを個人の車でも見られるようになったら面白そうだなぁ。
  • Acompany(アカンパニー)さんの「秘密計算」。30年前に大学の教科書として買わされた書籍「ゼロ知識証明」が当時全然わからなくて(今もわからないのですが)何に使うんだろうと思っていたものが、こうやってビジネスに活用されているのを聞いて、胸が熱くなりました。
  • インフラをみんなでチェックするぴよクエ。インフラというキーワードとぴよクエという名前のアンマッチさに、思わず笑いがこみ上げ、一瞬通り過ぎた後で2、3歩戻って話を聞かせていただきました。みんながインターネットにつながったカメラを持っている今、様々な地域の映像情報が欲しい人と、それを気軽に提供できる多くの人たちとのマッチングというのは、とても将来性があると感じました。期待。
  • iPhoneにくっつけて高精度な位置情報(RTK)を取得できる機器。LefixeaのLRTK Phone。お話聞いているうちに最近広告か何かで目にして「すごく欲しい」と思っていたものであることに気づきました。屋内の展示だったので、実際に動いているところは見られませんでしたが、点群のスキャンや平面直角座標系の変換など、おそらく現場が欲しいだろうと思う機能がてんこ盛りで魅力的でした。ちょっと趣味で買うにはお高いものでしたが、こういった情報でお金を稼いでいるところでは導入メリットがあるんじゃないかなと思いました。というか、これを導入した会社さん、何かお手伝いするので、一緒にお仕事しましょう(何かってなに(笑))。帰り際にたまたま目に入ってお話を聞いたブースでしたが、何気にトップクラスにワクワクしました。


 このようにとても楽しくためになったCEATECでしたが、相変わらずコンパニオンさんに名刺代わりのQRコード読み込み数をKPIにしているブースなどはひどいですね。目の色を変えてQRコードを取りに来るので、来場客に体当たりしたり、道を塞いだり、周りを見ていなかったりなど、とにかく残念すぎる印象の会社さんがいくつもありました。そういう会社からメールもらっても、迷惑メールフォルダー直行になることに、そろそろ気づいてほしいなと思うところであります(またはメールをもらうたびに「ああ、あの会社か」と悪い印象が蓄積されていきます)。

 最後に少し毒を吐きましたが、今回の満足度は特に高かったです。ブースを出されていた皆様、おつかれさまでした。特に喫緊解決すべきテーマを持っているわけではありませんが、とても刺激になり、いくつかの商品は微力ながら応援したいと思うなど、本当に行ってよかったです。ありがとうございました。

こんな音声入力ソフトが欲しかった!WindowsでAqua Voice

きっかけ

 オンラインイベントが盛んなこの時代に、やはりオフラインでなければ、得られない情報というものがあります。この Aqua Voice という音声入力ソフトもその一つ。FOSS4G 2025 JAPAN に参加した帰り道に Kirimotoさんとの雑談の中で教えていただきました。早速使ってみて、まさにこんなのが欲しかったというものだったので紹介します。
aquavoice.com

私の使用用途

 SNSに書いたりブログを書いたり、また執筆したりなど、文字を打つ機会が非常に多いほうだと思います。また最近はChatGPTやClaudeなどのAIと会話しながら色々なことを教えてもらう機会も増え、その際のキーボードでの入力が億劫になってきた、音声で次々に質問できたらいいのにと思うことも増えました。ただし、すべて音声入力だけで賄おうという思いは全くなく、大部分が音声で入力できて、その文章をその後、手で直したり編集したりすることは前提として考えています。主な使用環境はWindows(まだ10なのですが)、家でのデスクトップでの利用がメインです。(追記:2026年年明けにようやく重い腰を上げて Windows 11 にしました。Aqua Voiceはそのまま、何の問題もなく動作しています)

評価

 もう言うことなし、まさにこれが欲しかったものですの一言につきます。

使い勝手

 このブログも、大部分をAqua Voiceを使って入力しています。どんな使い勝手なのかを簡単に紹介しましょう。入力中は、Aqua Voiceの小さな窓が別に開き、そちらに入力内容が表示されていきます。これはすでに入力した部分の内容も文脈に応じて調整していくという仕組みのためです。

 音声入力は右のコントロールキーを押しているときだけ受け付けられ、Ctrlキーを離すと確定されます。確定されるとテキストエディターやこのブログの入力画面、またはチャットGPTとの会話画面など、今開いている入力場所にチャットGPTとの会話画面など、今開いている入力場所に表示されます。押している時だけではなく、入力状態をロックすることができます。右コントロールキーを2回押すことでロックされます。なお、この操作キーは、デフォルトでは右Altキーでしたが、私のキーボードでは、端っこにあるCtrlの方が使いやすかったため、こちらに自分でアサインしました。
 私は押しているときだけ認識されるモードのほうが使いやすかったです。Ctrlキーを押して認識させ、キーを離して確定するということを繰り返すことで、話している作業とキーボード操作の作業がシームレスに繋がり、キーボードから手を離すことなく作業を継続できるのが魅力です。

注意点

 私は自分のブログや、他愛もないAIとの会話、または、SNS投稿などを中心に使うため問題なしと判断して使っていますが、音声認識は自分のPCではなく、サーバー上で行われるということに、内容によっては注意が必要です。ローカルのPCで処理するソフトも他にあるようなので、機密情報などを音声認識したい場合はそちらを検討するのがよいでしょう。あとは、つまりネット環境がないと変換もできないということなので、この点も注意が必要です。

利用開始方法

 Aqua Voiceのサイトに行って、ツールをダウンロード、起動して、Googleアカウントでログインするだけで使いはじめることができます。個人的にはあまり他のサービスの権限を使ってログインするのは好みではないので、メールアドレスでユーザ登録のようなことができればいいなと思っていましたが、今のところ、Googleアカウントでのログインしかないようです。Windows版とMac版があるようです。
 そのまま無料では1000ワードまで利用できるとのことですが、ちょっと試している間にあっという間に上限に達してしまいました。私は少し触ってみてとても気に入ったので、すぐに課金しましたが、これを書いている時点では月額払いだと9.99ドル/月、年間払いだと96ドル/月(月8ドル相当)でプロ版にアップデートできます。プロ版では変換量は無制限のようです。
 以下のリンクからサイトに行って利用開始すると、条件を満たすとあなたと私の両方に10ドルのクレジットが入るということなので あなたは1ヶ月間無料でProを使えるよう(に変更になったようです)なので、よかったらこちらからどうぞ。私も1ヶ月に相当するぶんをもらえるみたいなので、私もうれしい。
(条件というのが、あなたがインストールして2000単語を使用するか、またはプロにアップグレードつまり課金すればということなのですが、無料枠が1000単語なのでちょっとこの辺の条件がよくわかりません。

aquavoice.com

まとめ

 20年以上前より、音声認識音声合成にゆるく興味があり、いくつかの製品を試してきましたが、どれも、認識精度や変換精度、使い勝手など、満足できるものではありませんでした。このAQUA VOICEは、過去のそれらのような珍しもの好きが頑張って使うというものではなく、十分に日常用途として自然に使えるものになっていると感じました。 もちろん、この音声入力だけで全てが賄えるものではなく、キーボードでの入力や修正などと併用する使い方だからこそ、ここまでの満足度の高さにつながっている部分があると思うので、人によってはさらなる高い望みを持っているかもしれません。しかし、私にとってはタイトルに書いたとおりの、こんな音声入力ソフトがほしかったというレベルで大満足のソフトでした。Kirimotoさん、ご紹介ありがとうございました!!


おまけ

 基本的にPCにマイクがつながっていれば使えるものですが、参考として私の機材を紹介します。
まずマイク周りですが、ローランドのUVC-02をUSB接続し、オーディオテクニカのグースネックマイクPRO49Qを刺しています。コンパクトでありながら、手元で音量の調整やマイクオンオフの操作ができるのが便利です。

 キーボードはREALFORCEのテンキーなしのキーボードで、30gを愛用しています。一度45gを買ったら重くてしっくりこなかったので、今は30gに落ちついています。この右下のctrlキーを私はAqua Voiceのスイッチとして使っています。

 

FOSS4G 2025 Japan に参加

2025年10月12日に開催されたFOSS4G Japan のコアデイに参加してきました。この前日にはハンズオンデイも開催されていたのですが、立て込んでいたこともあって、今年はコアデイだけの参加にしました。
www.osgeo.jp

今年のテーマは『 Connect to [ ] 』。多くの登壇者が括弧内にそれぞれの Connect to を入れて発表してくれました。幅の拡がりが大きな、良いテーマだと思います。

活きた心地がしない(笑)

 今回の講演は多くの時間で3トラック並行で行われました。1階に1部屋、地下1階に2部屋。この地下の部屋が、携帯の電波が全然入らない。講演を聞きながら検索をしたりツイートしたりするためにネットワークにつなげたいものですが、それが叶わぬ今回のイベント。なんというか息ができないようなそんな気分でした。特にツイートができないというのはイベントとしてもちょっともったいなかったかなと思います。これが今回のイベントの唯一にして最大の残念ポイントだったかな。

今回はほぼ聴衆に徹する

 私は一応OSGeo.jpの運営委員なのですが、時間の都合もあって、今回のFOSS4Gの実行委員的な活動にはほとんど関わることができませんでした。なので今回はほとんど一般参加者気分で気楽に参加させていただきました。いつも以上に内容に集中してイベントに参加できたような気がします。これもこれでいいなぁ。

印象に残った話題・講演

データベース三部作

 やはり私のホームグラウンドですから、特にデータベースに関する3つの講演は非常に興味深く聞きました。
 井口さんの講演では、PostgreSQLをローカル以外のどこで動かすかという話題で、特にPostGISが動作することが大事です(この点、MySQLならオールインワンなので、こんなことを気にしなくて良いですね(笑))。紹介された中でNEONというサービス、こちらちょっと気になりました。後で触ってみたいです。スライドとデモページを公開してくれています。


 boiledorange73さんの講演ではPostGISでのトポロジーデータの扱いについて。最近、法務局の登記所備付地図データに触れることが多いので、そういった境界線を持つようなデータの扱いに便利そうだなと思いました。一方で、制約ガチガチのデータ構造ということでもあるので、意外と実際に触ると使いどころが難しいのかなという気もします。
 MySQL枠ではいつもの山崎さんに変わって梶山さんが登壇。決して得意なジャンルのご講演ではなかったと思いますが、いつもと違った雰囲気で、MySQLGIS機能について話を聞けたのが新鮮でした。のんびりと聴講していたら突然、私が最近ThinkITで始めたMySQL GISの連載を紹介していただき、いきなり「真ん中に座っているあの人」と名指しされて、机に頭をぶつけそうになりました。何度も何度も紹介していただいてありがとうございます! その連載はこちらです↓
MySQLで学ぶGIS入門 記事一覧 | Think IT(シンクイット)

MAPPLEのMapLibre Style Specの工夫の話

 長年の地図作りで培われたノウハウが詰め込まれたマップルのオンライン地図。ベクタータイルをMapLibreで描く際の様々なノウハウが興味深かったです。道路や鉄道などの立体交差での表示順序や、地図を回転したときの文字の表示、色の指定など、細かいノウハウ満載の講演でした。個人的にはこの数年間はMAPPLEさんが作ったホーム局地図ビューワーで頻繁に地図を利用させていただいています。
https://labs.mapple.com/mapplexml.htm

pmtiles

 台湾付近から来日して公演してくれた bdonさん。英語での講演だったため、おそらく半分も理解できていなかったと思いますが、私の事前調査が甘くてbrandonさんが何者かを把握しないまま最後まで講演を聞いてしまいました。何を勘違いしたかって、PMTilesを使ってProtomapsというサービスを作ったのだなと思って聞いていたんですが、実はPMTilesの発明者だったと後から聞いてひっくり返そうになりました。事前調査と英語を聞く能力、やっぱり重要ですね。PM Tilesについては名前を聞いたことがある程度でしたが、興味深い点も多く、機会があったら触れてみたいと思いました。

その他

 若手の講演があったり、行動や活動を呼びかけるようなお話もあったり、情報発信の話があったり、それぞれ大変興味を持って聞かせていただきました。
以下は講演で紹介された、日本での地理空間情報の話題を英語で海外に伝えるサイト。こういった活動を積極的にされていることに頭が下がります。長く続いてほしいです。
jgtimes.org
あと、植生図の公園も面白かったです。今までの歴史や技術的な話ももちろん面白かったのですが、一番最後に紹介された植生図からこんなことがわかるという話が、データが生き生きとして見えて引き込まれました。

たくさんお会いできた

 今回もたくさんの人にお会いすることができました。一応、この分野は素人なのですが、たくさんの人が私のことを覚えていてくださり、声をかけてくださり、色々なお話をすることができてとても楽しかったです。ほんと、ありがたい。ありがたい。

懇親会

 隣のビルの7階で懇親会。もちろんエレベーターはあるのだけれども、待ちきれずに階段を上っていく人がそれなりにいて、やはりジオ系は健脚の人が多いのかななどと思いました。みんな元気だなぁ。 立食形式の懇親会ではいつもお腹を空かせて帰る私ですが、お食事も結構立派に用意していただき、お腹も満足、おしゃべりも満足の懇親会でした。手配してくださった方GJ。
 全部はここには書き切れないのですが、たくさんの情報交換をしたり、知らなかったことを教えていただけたり、とても有意義で楽しい懇親会でした。
 懇親会でのライトニングトークは気づいたときにはもう受付してないよと言われたので、諦めて特に準備をしていかなかったのですが、急遽発表できることになり、慌てて懇親会の会場の隅っこで資料を作りました。今年1年間、関西、九州、北海道のFOSS4Gで発表してきた内容を大駆け足で紹介する内容です。3地区で120枚近く。みんなが使っている緯度経度(または平面座標系のメートル)の根拠となっている測量に関するモニュメントや緯度経度に関するモニュメントなどを紹介していますので、よかったらぜひ3地区の資料と合わせてご笑覧いただければ幸いです。

speakerdeck.com

帰路

 こんな感じで、講演も懇親会も脳みそが刺激されまくりでとても満足のFOSS4Gでしたが、帰り道に電車でご一緒したKirimotoさんに教えてもらった情報が、今日1日のすべてを上書きしてしまうぐらいの重大情報でした。Kirimotoさんには一昨年も英語学習のアプリを教えてもらったことがあり(いまでも課金しています。最近ちょっとサボり気味ですが)、どこでこんな情報を手に入れるのだろうというくらいの幅広い良い情報をお持ちのことに、本当に頭が下がります。
 教えてもらったのは音声入力のソフトです。話を聞いてまさにこんなのが欲しかったと直感し、早速インストールして使ってみています。詳しくは別のエントリーで書こうと思っていますが、変換精度も高く、言い直しなども適切に修正してくれて自然な入力ができるなど、想像していた以上に快適です。このエントリーも大部分を音声入力で入力しています。キー入力とシームレスに使うことができるので、所々手で直したりしています。手で打ちたい時にはそのまま手で打てたりして、使い勝手が良いと思います。
 とりあえず1000ワードまでは無料で使えます。それ以上は課金により無制限利用可能なのですが、私にとっては年間96ドルは「アリ」な、満足の動作でした。以下のリンクからサイトに行ってダウンロード&一定量使用するとお互いいいことがあるみたいです(課金ユーザーにアップグレードするか2000ワードを使ったときに双方に10ドルのクレジットが入るとのことですが、無料利用が1000ワードなので、ちょっとこの辺の整合性がよくわかりません。いずれにせよ、とりあえずこのリンクから使ってみるといいと思います)

aquavoice.com


いやはやジオ系を勉強しに行って音声入力情報に満足して帰ってきてしまいました(笑)。皆様どうもありがとうございました。

今回、FOSS4G Japanに行ってきました的な写真が一枚もなかったので、セミナールームの一室で使われていた高性能自動追尾カメラの写真でも.

オープンソースカンファレンス2025新潟参加

 2025年10月4日に新潟市で開催されたオープンソースカンファレンス2025新潟(OSC2025 Niigata)に参加してきました。

ospn.connpass.com


 新潟のOSCは、長岡市新潟市で交互に開催していて、今年は2年ぶりに新潟市の番。 いつもの新潟駅から徒歩圏内にある公共施設の予約がとれなかったとのことで、古町のほう(本町)にある新潟国際情報大学新潟中央キャンパスさんをお借りしての開催となりました。ホテルも当然そちら方面に。 なかなか訪れる機会のない古町の路地を歩き回る機会にもなり、普段の駅前とは違った「もうひとつの新潟」を体験できたように思います。

OSC新潟とは何なのか

 金曜夜に前夜祭があり、おいしい日本酒とお食事で口々に「いいOSCでした」。翌土曜日の朝から夕方までセミナー形式のイベント+ちょっとしたブース展示でお話を聞いたりおしゃべりしたり。夜にはお店に移動して交流会。交流会の乾杯のご挨拶では「では、これからOSC新潟をはじめます」、一同爆笑。 
 つまり、、、前の日に一旦OSCが完了して、当日の夜にOSCが改めて始まった、、という認識でいいんですかね(笑)。昼間はなんだったんだ。

前夜祭の部

 前日入りしているメンバー+地元の方で簡単な前夜祭が開催されました。2次会でお蕎麦(へぎそば)を食べて、21時過ぎにはホテルの部屋に戻っているという非常に健全な集まりです。

 まぁ、1次会の前にゼロ次会と称して16時から立ち飲み屋さんでお酒をいただいているんで、それなり良い感じにできあがっています。 一応IT系なのでゼロから始まらないと落ち着かないですよね。

セミナーの部

 一応真顔で語っておくならば、一応「OSC新潟の本体」のはず。新潟のOSCは15分トーク枠となることが多かったのですが、今回は30分枠で、ゆったりとしたお話を聞かせていただきました。 急遽、体調不良で講演キャンセルになった方がいてひと枠空いたので「坂井枠」と称して、私も急遽お話させていただきました。いつものMySQLユーザ会枠ではなく、坂井枠(勝手にそう称した)なので、前半でMySQLの最新動向(主にバージョン系列について)、後半ではOSGeo.JPの運営委員として今後開催される地理情報イベントの案内をいたしました。(今回は過去に公開済の資料やWebページや写真やトートバッグ実物を使ってお話したので、今回用の資料の公開はありません)
 後半で案内したイベント2つ、改めてこちらでもお知らせします。まず来週(10月11,12)に東京で開催される「FOSS4G 2025 Japan」。FOSS(フリー&オープンソースソフト)の for Geospatial(地理情報のための)ということで、そういったジャンル名を表すFOSS4Gですが、このテーマで開催されるイベントも FOSS4G と呼ばれています。ちょっとややこしいので私はイベントのほうは「FOSS4Gイベント」と呼ぶことにしています。 で。 このFOSS4Gイベント、全国各地で、現地の幹事が中心となって開催されており、今年は大阪、福岡、札幌で開催されました。 来週の "Japan" は OSGeo.JP が主催するFOSS4Gで、いわば「全国大会」のようなものだと理解していただくと良いかもしれません。
www.osgeo.jp
 もうひとつ紹介したのが「FOSS4G Hiroshima 2026」。こちらは、いわば「世界大会」です。毎年世界中のどこかで開催されている地理情報系の大イベントですが、熱意ある方々の尽力により来年、初めての日本開催への招致に成功しました。こちら、詳細情報はこれから続々と出てくるものと思いますが、ぜひ皆さんにお越しいただきたいのと、加えて、多くの人に(少なくとも地理情報の世界では)一世一代とも言える大イベントが開催されることを知っていただきたく、広報・宣伝にもご協力賜れますと大変嬉しく思います。
www.osgeo.jp

懇親会の部

 そしていよいよOSC新潟が始まります(笑)。写真が全てを物語っています(お店での開催のため、普段よりは持ち込み少なめですが、どれもおいしくいただきました)。

2次会的な

 三々五々分かれて2次会に。私は地元の方に連れ回されて(どの店も満席で、文字通り結構歩いて3軒目で)、しっとりと数人で呑みました。こちらでも色々はお酒をいただきましたが、私にドストライクだったのが、菅名岳 初呑み切り。押しつけがましくない上品な香りに、引き際をわきまえた鮮やかなキレ。これ抱えて寝たいです。

 忘れないようにとSNSにポストしていたのですが、そこに記録されていたのは「すながだけ」。どんだけ指先まで呂律が回らなくなっているんだよ、って感じですね。

御礼

 そんなこんなで、「本体」がいっぱいあるOSC新潟、堪能いたしました。ここでしかお話できない話題も多くあり、貴重な情報への機会と大変な勉強の機会ともなり、文字通り「いいOSC」でした。 (普通は、ITイベントに参加したブログなんだから、そういった話題を書くのでしょうが、それは他の方にお任せします。
 現地幹事のみなさま、参加されたみなさん、どうもありがとうございました! 
周辺のもろもろは、改めてnoteのほうに書きます。

追記:noteにもろもろ書きました。新潟への行き方、新潟での楽しみ方、新潟からの帰り方、それぞれお楽しみください。
note.com

再追記: そういえばこれも書いておきたい。受付辺りを私もうろうろしていたのですが、結構早い時間に「申し込んだ人全員」の受付が終わっていました。体調やその他の事情で来られなかった方は事前に「キャンセル」してくれていて、つまりノーショー率ゼロパーセント!! すごいOSCでした。

我孫子市の地番参考図がオープンデータとして公開!

 2025年9月24日、突然我孫子市のサイトに「地番参考図をオープンデータとして公開しました」という案内が掲載されました。
www.city.abiko.chiba.jpwww.city.abiko.chiba.jp

 「地番参考図」というものをあまりよく知らなかったのですが、法務省の登記所備付地図みたいに各筆ごとの場所や形、名称(地番)などを管理しているもののようです。登記所備付地図データ(以下MOJXML)には、特に我孫子市(千葉県全域も)では任意座標系のものが多く、つまりそれは各図面ごとに独自の座標系を持っているため全体をつなげて一枚の図面にすることはできませんでした。どうもこの地番参考図は全体で同一の座標系を以て管理されているようです(詳細本文にて)。ライセンスは CC BYです。「本記事で紹介しているデータは、我孫子市のデータを使用しています。データ取得元については本文で紹介しています」・・・・これでいいのかな?

データの取得

 市のサイトの案内に従ってG空間情報センターからZIPファイルをダウンロードします。
https://www.geospatial.jp/ckan/dataset/chibansannkouzu/resource/c5e08df7-31be-4a62-9825-38f44a29c4e9

 ファイル名が chibanzu.zip なのは、他の自治体のデータも今後公開されることなどを考えるとちょっとイケていないところ。
chibanzu_12222_abiko_20250101.zip とかをご検討いただきたい(ちなみに 12222が我孫子市自治体コードです。覚えやすいのでこの機会にみなさん覚えておきましょう)。

 ZIPファイルを展開すると以下のようなファイル群が出てきます。「みんなだいすき*1シェープファイル」でした。。よく問題にされるPRJファイルも存在していてよきよき。みんながシェープファイルについて楽しそうに語っている時、私は「でもそれって作業が面倒とか間違いやすいという不満が殆どで、実際のところ本質的なシェープファイルの不足は何なんだろう」と考えることも多いのですが、このリストを目の前にすると「いったい何種類のデータがあるのだ?おまえらひとつにまとまれ!!!」と思ってしまいますね。本質じゃないのだけど。

83,596,654 ABIKO_AN.DBF
       411 ABIKO_AN.PRJ
 6,399,780 ABIKO_AN.SHP
   800,060 ABIKO_AN.SHX
 6,391,471 ABIKO_AN_HIKI.DBF
       411 ABIKO_AN_HIKI.PRJ
 1,160,124 ABIKO_AN_HIKI.SHP
    89,324 ABIKO_AN_HIKI.SHX
   135,430 ABIKO_COM.DBF
       411 ABIKO_COM.PRJ
    10,404 ABIKO_COM.SHP
     1,388 ABIKO_COM.SHX
     1,948 ABIKO_COM_HIKI.DBF
       411 ABIKO_COM_HIKI.PRJ
       308 ABIKO_COM_HIKI.SHP
       116 ABIKO_COM_HIKI.SHX
   631,178 ABIKO_KOAZA_AN.DBF
       411 ABIKO_KOAZA_AN.PRJ
    48,356 ABIKO_KOAZA_AN.SHP
     6,132 ABIKO_KOAZA_AN.SHX
     2,521 ABIKO_KOAZA_HIKI.DBF
       411 ABIKO_KOAZA_HIKI.PRJ
       412 ABIKO_KOAZA_HIKI.SHP
       124 ABIKO_KOAZA_HIKI.SHX
   373,825 ABIKO_KOAZA_LIN.DBF
       411 ABIKO_KOAZA_LIN.PRJ
   232,444 ABIKO_KOAZA_LIN.SHP
     5,308 ABIKO_KOAZA_LIN.SHX
   157,166 ABIKO_OOAZA_AN.DBF
       411 ABIKO_OOAZA_AN.PRJ
    12,068 ABIKO_OOAZA_AN.SHP
     1,596 ABIKO_OOAZA_AN.SHX
   106,807 ABIKO_OOAZA_POL.DBF
       411 ABIKO_OOAZA_POL.PRJ
   246,748 ABIKO_OOAZA_POL.SHP
     1,580 ABIKO_OOAZA_POL.SHX
53,508,922 ABIKO_POL.DBF
       411 ABIKO_POL.PRJ
24,128,596 ABIKO_POL.SHP
   752,420 ABIKO_POL.SHX
   306,784 abiko_ROAD_POL.dbf
       411 abiko_ROAD_POL.PRJ
   908,644 abiko_ROAD_POL.shp
     4,372 abiko_ROAD_POL.shx

データの変換

 ひとつ前の記事「DuckDBをただShapefileからの変換ツールとして使う」の手順に従って各ファイルを変換します。
実際の作業は、以下のようにループを回して実施しました。ここではGeoPackage(.gpkg)へと変換しています。

SET datapath=D:\work\gis\chibanzu_abiko
for %f in (abiko_an ABIKO_POL ABIKO_AN_hiki ABIKO_COM ABIKO_COM_hiki ABIKO_OOAZA_AN ABIKO_OOAZA_POL ABIKO_KOAZA_AN ABIKO_KOAZA_HIKI ABIKO_KOAZA_LIN ABIKO_ROAD_POL) do (
    duckdb -c "load spatial;" -c "COPY (SELECT * FROM ST_Read('%datapath%\%f.SHP',open_options=['ENCODING=CP932'])) TO '%f.gpkg' WITH (FORMAT GDAL, DRIVER 'GPKG');"
)

QGISでの表示

 できあがった .gpkgファイルをQGISで表示してみます。色合いや形などのシンボロジを調整したものがこれ。

 この記事を読んでいる人の99.9996%は感動しないと思いますが、当地をよく知る人にとっては「おおおおお!!!!」と恍惚の表情でしばし見とれるような素晴らしい絵が出てきました。これぞ我孫子市
 あくまでも市が固定資産税管理のために作っているものなので、市がその用途として認識してない場所は描かれていません。国道とか県道8号線とか、誰もが地図を見るときに基準とする線が見つけにくいです。

 部分拡大してみると、各ポリゴンの中にポイントがあります。最初は代表点だと思っていたのですが、これは地番表示箇所であることを教えてもらいました。引出線もあり、狭くてその中に書けないものは、隣のポリゴン内に書くことになっているようです。縦長の地域はポイントが2つになり、2段にわけて記述するようデータが格納されています。フォント情報も含まれており*2、つまりこれらのデータを使うことで印刷レイアウトを再現できるようなデータであることがわかりました。面白い。

問題発覚

 きれいに我孫子市の形も描けたので満足していたところ、そういえば背景地図と重ねて見ていないことに気づきました。重ねて見ると・・・・

我孫子市、世界からはみ出してるし、びっくりするほど大きいし。

 元のデータは平面直角座標系9系の値として格納されていました。チーバくんの鼻先にある9系原点から見て我孫子市は右(東)にしばらく、下(南)に少しいった地点にあるので、概ね良い場所に表示されていることがわかります。 ・・・良い場所とか言ってる場合じゃないよっ!!!!

 これはつまり、PRJファイルに書かれている情報を今回使用した DuckDBのspatial extensionでの変換時には無視していることを示しています。実際に GeoJSONに変換して確認しましたが、やはり測地系の情報は入っていませんでした。いいところまで行ってるんだけどなぁ。。惜しい。変換時に追加のオプションを与えることで読んでくれるのか、そもそも .projファイルには対応していないのか、もう少し調査が必要です。

おまけ:各ファイル解説

ABIKO_AN.gpkg         地番表示箇所
ABIKO_POL.gpkg        筆境界線
ABIKO_AN_hiki.gpkg    地番表示用引出線
ABIKO_OOAZA_AN.gpkg   大字表示箇所
ABIKO_OOAZA_POL.gpkg  大字境界線
ABIKO_KOAZA_AN.gpkg   小字表示箇所
ABIKO_KOAZA_HIKI.gpkg 小字表示用引出線
ABIKO_KOAZA_LIN.gpkg  大字の中で小字に分割する線(線)
ABIKO_ROAD_POL.gpkg   「市が理解している道」ポリゴン?

ABIKO_COM.gpkg        不明。なんかの表示箇所?
ABIKO_COM_hiki.gpkg   上記のための引出線

さいごに

 とりあえず統一的な座標系に基づいた筆情報データであることを確認できました。各ファイルには「属性情報(いわゆるテーブルデータ)」もあるので、今後、それらの内容の把握に取り組んでみたいと思います。
 それにしても、これまでこういったデータの公開に積極的なほうだとは思えない我孫子市が、こんな素晴らしいデータを突然公開してくれたことに驚きました。しかも雁字搦めのライセンスではなく CC BY にて公開したのは、もう「我孫子市、オープンデータ最先端の市!」とアピールしてもいいと思います(ちょっと言い過ぎ)。今後も、市民の生活に役立つデータ、分析への興味を誘うデータの公開、そして定期的な更新に期待しています。
 なんで公開したんだろう。私が住んでいるからかなぁ(素)。そう思うことにしておこう。

我孫子市、現在の公開データセット数:1

*1:とってもよく話題にするという意味で

*2:ちなみに「MS 明朝」でした

DuckDBをただShapefileからの変換ツールとして使う

 先日参加してきた FOSS4G Hokkaido 2025 にて、DuckDBの話を聞いて、表記のことをやってみたくなりました。
実は2月のイベントで DuckDBの機能を伺ったときにも、やってみたいと考えていたのですが、すっかり先延ばしになっていたので、今回改めて刺激を注入していただいて、手を動かしてみた次第。

目的・環境

  • とにかく手元に Shapefileが来た時に、他のフォーマットにさくっと変換したい
  • ゆくゆくは Linux上で作業することになろうが、さしあたって手元の Windows上でできるようになっておきたい
  • 話に聞いたので、(色々方法はあろうが)DuckDBを使ってみたい

DuckDBのインストール

 以下のURLにアクセスして、自分の環境をポチポチ。
duckdb.org

ZIPファイルを取得して展開する方法とwingetコマンドを使用する方法があり、今回は、自分に馴染みが薄かったという理由で(体験として)wingetコマンドを使ってみることにしました。

winget install DuckDB.cli

インストールはこれだけ。お手軽。

DuckDB操作の基本

 コマンドライン(いわゆるDOSプロンプト)から duckdb を起動する。

C:\Users\myname>duckdb
DuckDB v1.4.0 (Andium) b8a06e4a22
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
D help
ツキ

 Dというプロンプトが表示され、そこにコマンドを打ち込む。上記は(誤って)helpと入力したところ。
2行目の入力を促すプロンプトが表示される。「次」を要求しているのか、プロンプトが「ツキ」というのが個性的なツールだと感じた。
(たぶんそうではなく、化けている)

duckdbの(データ操作ではない)コマンドは基本的に、先頭に「.」をつける。とりあえず覚えておくのは以下の2つ。

  • .help :使えるコマンド一覧が表示される
  • .exit : 対話型duckdbを終了する。.quitでも可。ctrl-cでも抜けることができる(というか抜けちゃう)のは昔のWindowsmysqlっぽい

spatial extensionのインストール

 GISデータを扱うための拡張をインストールし、使える状態にする。Dはプロンプト。INSTALLは1回だけやれば良い。LOADはduckdbを起動する都度行う必要がある(設定ファイルに書くこともできるが今回はサクサクと先に進む)。

D INSTALL spatial;
D load spatial;

シェープファイルを見る

 シェープファイル(.shp)をFROMに指定して、あたかもテーブルであるかのように読むことができる。Windowsの場合のパスの区切りが \ のままで使えるのに好印象( / に書き換えたり \\ にしたりしないといけないものも多いので)。

C:\>duckdb
(略)
D SELECT * FROM 'D:\work\gis\chibanzu_abiko\ABIKO_AN.SHP';
┌───────┬───────┬───────┬────────┬─────────┬───┬─────────┬─────────┬──────────────────────┬──────────────────────┐
│ ALIVE │ LAYER │ LTYPE │ SUBLAY │ SUBLTYP │ … │   EL    │   STR   │         ATR          │         geom         │
│ int32 │ int32 │ int32 │ int32  │  int32  │   │ varchar │ varchar │       varchar        │       geometry       │
├───────┼───────┼───────┼────────┼─────────┼───┼─────────┼─────────┼──────────────────────┼──────────────────────┤
│     1 │    21 │    11 │      0 │       0 │ … │ 8-16    │ 8-16    │ 65763,8-16,409,004…  │ MULTIPOINT (21033.…  │
│     1 │    21 │    11 │      0 │       0 │ … │ 8-20    │ 8-20    │ 65764,8-20,409,004…  │ MULTIPOINT (21048.…  │
│     1 │    21 │    11 │      0 │       0 │ … │ 8-24    │ 8-24    │ 65765,8-24,409,004…  │ MULTIPOINT (21047.…  │
│     1 │    21 │    11 │      0 │       0 │ … │ 8-6     │ 8-6     │ 65760,8-6,409,0040…  │ MULTIPOINT (21016.…  │
│     1 │    21 │    11 │      0 │       0 │ … │ 8-11    │ 8-11    │ 65761,8-11,409,004…  │ MULTIPOINT (21036.…  │
│     1 │    21 │    11 │      0 │       0 │ … │ 8-18    │ 8-18    │ 65762,8-18,409,004…  │ MULTIPOINT (21032.…  │
│     1 │    21 │    11 │      0 │       0 │ … │ 8-8     │ 8-8     │ 65769,8-8,409,0040…  │ MULTIPOINT (21072.…  │
│     1 │    21 │    11 │      0 │       0 │ … │ 9-10    │ 9-10    │ 65770,9-10,409,004…  │ MULTIPOINT (21078.…  │
│     1 │    21 │    11 │      0 │       0 │ … │ 9-14    │ 9-14    │ 65771,9-14,409,004…  │ MULTIPOINT (21094.…  │
:(略)

 実はこのシェープファイル、日本語部分の文字がShift_JISで格納されており、バケないで取得するにはもう一工夫が必要。
以下のように ST_Read()関数を用いて、第2引数にオプションとしてShift_JIS(CP932)であることを与えれば良い。

SELECT * FROM ST_Read('D:\work\gis\chibanzu_abiko\ABIKO_POL.SHP',open_options=['ENCODING=CP932']);

フォーマット変換してファイルへの出力

COPY テーブル名 TO '出力ファイル名' WITH (FORMAT GDAL, DRIVER 'ファイル形式');

で指定したファイル形式に出力される。主なものとしては以下のようなファイル形式に変換可能(括弧内は DRIVERに指定する文字列。ParquetのみFORMATに指定可能)。
GeoPackage(GPKG)、1JSONのGeoJSON(GeoJSON)、各行1件のGeoJSON(GeoJSONSeq)、FlatGeobuf(FlatGeobuf)、GeoParquet(FORMAT PARQUET)


 テーブル名としてSELECT文も書くことができるので、実際の使い方はこんな感じ(GeoPackageに変換)。

COPY (SELECT * FROM 'D:\work\gis\chibanzu_abiko\ABIKO_AN_hiki.SHP') TO 'ABIKO_AN_hiki.gpkg' WITH (FORMAT GDAL, DRIVER 'GPKG');

 先ほど解消した文字コード問題に対応した書き方だと、こうなる(こちらはGeoJSONにしてみた)。

COPY (SELECT * FROM ST_Read('D:\work\gis\chibanzu_abiko\ABIKO_OOAZA_POL.SHP',open_options=['ENCODING=CP932'])) TO 'ABIKO_OOAZA_POL.geojson' WITH (FORMAT GDAL, DRIVER 'GeoJSON');"

対話型でなくコマンドとしての実行

 ここまでは、duckdbの対話型モードにSELECT文などを書いて実施してきたが、コマンドから実行できれば、まとめてバッチ処理で変換したりの道が拡がる。
これは、duckdbに -c オプションでSQL文を与えれば良い。前述の通り LOAD spatial を起動のたびに実施する必要があるので、これも指定する。以下のように独立した -c として書いておくと、実施したいSQL文をそのまま2番目の -c に書けば良いので、少しだけ手間が減ったり作業ミスが減らせそう。

duckdb -c "load spatial;" -c "COPY (SELECT * FROM ST_Read('D:\work\gis\chibanzu_abiko\ABIKO_AN.SHP',open_options=['ENCODING=CP932'])) TO 'ABIKO_AN2.gpkg' WITH (FORMAT GDAL, DRIVER 'GPKG');"

参考記事

 以下の記事を参考にさせていただきました。ありがとうございました!
そういえば、2月のFOSS4G Hokkaido 2024の井口さんの講演でduckdbのspatial extensionの事を知り、会場で早速インストールして動かしたら文字化けしたので訊ねると、湯谷さんのブログに解消法がある旨おしえてもらったのでした。「湯谷さん、今日会場に来てますよ」の言葉と共に(笑)。その節はおふたりともありがとうございました。

追記

 この記事を書いたときには、これいいじゃん!!と興奮したのですが、その後、データの詳細を確認して行くにつれ課題も出てきました。どうもこの手順では .projファイルを見ていないようです。 .geojsonに変換したときにも座標系情報が含まれていなかったし、.gpkgへ変換してQGISで確認した際も(そこだけ見れば結構良い感じだったけど)背景地図載せてみたら全然違う場所に表示されていたなど、もう少し工夫が必要、あるいはこの方法では対応できないかも、な感じがします。もうちょっと調査が必要。