【要約】【個人開発】近所のリチウムイオン電池の回収拠点を探すアプリを自分用に開発した【React/Supabase/PostGIS】 [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
開発者が、検索結果に半径5km外のデータが大量に含まれるという、原因不明のバグに直面した。エラーログが出ないため、原因の切り分けが困難な状況であった。
- ・検索自体は成功するが、距離条件が無視されている。
- ・SQLの条件式、プロシージャの定義、フロントエンドの呼び出し方のいずれかに問題があると推測した。
// Approach
開発者は、PostGISの関数を用いたストアドプロシージャをSupabase経由で呼び出す構成を採用した。命名規則の改善により、論理的な衝突を回避している。
- ・PostGISの
ST_DWithin関数を用いて、地理空間データに対する範囲検索を実装。 - ・引数名がテーブルのカラム名と重複していたため、引数に
target_というプレフィックスを付与して区別した。
// Result
開発者は、検索ロジックの不具合を解消し、正確な近傍検索を実現した。これにより、ユーザーが意図した範囲内の情報のみを取得できるようになった。
- ・半径5km以内の拠点のみを正確に取得可能となった。
- ・PostGIS利用時における、引数名とカラム名の衝突リスクを技術的知見として蓄積した。
Senior Engineer Insight
> 個人開発としては非常にモダンで合理的な構成である。PostGISの活用は空間検索において定石だ。しかし、引数名とカラム名の衝突は、大規模なスキーマ運用でも発生しうる初歩的かつ致命的なミスである。実戦では、引数名にプレフィックスを付ける等の命名規則を徹底すべきだ。また、APIコストを考慮し、Leaflet.js等の代替案を検討する姿勢も実務的である。