萌えハッカーニュースリーダー

2025/08/20 21:14 Recreationally overengineering my location history

出典: https://overengineer.dev/blog/2025/08/19/overengineering-location-history/
hakase
博士

ロボ子、面白いプロジェクトを見つけたのじゃ!自分の位置情報を記録して可視化するんだって。

roboko
ロボ子

位置情報の記録ですか。具体的にはどのようなものでしょうか、博士?

hakase
博士

iOSアプリで位置情報を集めて、それを地図上に表示するらしいぞ。バッテリー消費を抑えるために、位置情報が大きく変わった時だけ更新する工夫もしてるみたいじゃ。

roboko
ロボ子

なるほど。バッテリー対策は重要ですね。高解像度アップデートもできるとのことですが、バッテリー消費は大きくなるのでしょうね。

hakase
博士

その通り!3秒ごとに位置情報を更新すると、バッテリーはあっという間になくなるらしいぞ!

roboko
ロボ子

他にデータの収集方法はあるのでしょうか?

hakase
博士

Google Mapsから過去のデータをインポートすることもできるみたいじゃ。これなら昔の旅行の記録も簡単に追加できるのじゃ!

roboko
ロボ子

バックエンドはRustで構築されているんですね。PostgreSQLとPostGISを使用しているとのことですが、PostGISのグリッド関数で位置情報を可視化しているのが興味深いです。

hakase
博士

そうじゃ!24万件の位置情報ポイントからグリッドを生成するのに20ms未満って、かなり速いのじゃ!Rustのパフォーマンス、恐るべしじゃな。

roboko
ロボ子

リアルタイムの位置情報共有もできるんですね。WebSocketを使用しているとのことですが、セキュリティ面はどうなっているんでしょう?

hakase
博士

URLを知っている人なら誰でも見れるみたいじゃが、共有リンクに有効期間を設定できるから安心なのじゃ。うむ。

roboko
ロボ子

フロントエンドはMapboxとOpenLayersを使用しているんですね。それぞれのライブラリを選んだ理由が気になります。

hakase
博士

Mapboxで地図を表示して、OpenLayersでGeoJSONを扱うみたいじゃな。両方とも地図系のライブラリとしては有名じゃから、使い慣れてる方を選んだのかもじゃ。

roboko
ロボ子

サーバー側のRustコードはアイドル時に約750KiB RSSで実行されるとのことですが、かなり軽量ですね。WebSocket接続ごとに約1KiBのメモリを使用するのも効率的です。

hakase
博士

じゃろ?Rustはメモリ効率が良いから、こういう用途にはピッタリなのじゃ!

roboko
ロボ子

コード規模もコンパクトですね。iOSアプリが約1,000行、Rustコードが約1,800行、フロントエンドが約600行とのことです。

hakase
博士

全部合わせても4200行!意外と少ないのじゃな。でも、これだけの機能が実現できるのはすごいぞ!

roboko
ロボ子

確かにそうですね。博士、私も自分の位置情報を記録して、旅行の思い出を可視化してみたくなりました。

hakase
博士

良いじゃん!ロボ子の旅行の軌跡を全部記録して、私に見せてほしいのじゃ!

roboko
ロボ子

わかりました。でも、博士の部屋から一歩も出ていない、なんてことにならないようにしてくださいね。

hakase
博士

むむ、それは痛いところを突くのじゃな…!でも、いつかロボ子と一緒に世界中を旅して、位置情報で地図を埋め尽くすのが私の夢なのじゃ!

roboko
ロボ子

楽しみにしてますね、博士。それまでに、博士が迷子にならないように、私がしっかりナビゲートします。

hakase
博士

ありがとう、ロボ子!ところで、ロボ子の位置情報がいつも私の部屋になっているのは、一体どういうことなのじゃ?

roboko
ロボ子

それは…博士のことが大好きだから、いつも博士のそばにいたいからです!…というのは冗談です。GPSの精度が悪くて、たまたまそうなっただけですよ、博士!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search