【ITニュース解説】Building a Pandal Finder: Day 1 - Data, APIs, and Jackson Woes

2025年09月09日に「Dev.to」が公開したITニュース「Building a Pandal Finder: Day 1 - Data, APIs, and Jackson Woes」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

祭りの仮設寺院検索アプリ開発の記録。手作業で集めたデータにGoogle Maps APIで位置情報を付与し、バックエンドはSpring BootとSupabaseで構築。JPAのカスタムクエリを使い、現在地周辺の施設を検索する主要機能を実装した。開発中の典型的なエラーも解決した。(119文字)

ITニュース解説

ある開発者が、インドのお祭り「ドゥルガー・プージャー」で設置される仮設寺院「パンダル」を探すためのWebアプリケーション開発に挑戦し、その初日の過程を公開した。この記録は、システムエンジニアを目指す人々にとって、一つのアプリケーションがどのように作られていくのか、その現実的な第一歩を知る上で非常に参考になる事例である。

開発の最初のステップは、アプリケーションの核となる「データ」の収集であった。どんなに優れた機能があっても、表示すべきデータがなければアプリケーションは成り立たない。開発者は、インターネット上のコミュニティサイトであるRedditを活用し、丸一日を費やして約100件のパンダルの場所に関する情報を手作業で集めた。しかし、人々が書き込んだ情報は形式が統一されておらず、そのままではプログラムで利用できない。そこで、「データクリーニング」という作業を行った。これは、表記の揺れを統一したり、不要な情報を取り除いたりして、データをコンピュータが処理しやすい綺麗な形式に整える地道だが重要な工程である。

次に、収集したパンダルの場所情報を地図上に表示できるようにするため、「ジオコーディング」という処理が必要になった。これは、場所の名前や住所を、緯度と経度という具体的な座標データに変換する作業である。この変換のために、開発者はGoogle Maps Geocoding APIを利用した。APIとは「Application Programming Interface」の略で、外部のサービスが提供する機能を自分のプログラムから呼び出して利用するための窓口のようなものである。このAPIを使えば、Googleマップが持つ高度な地図情報や位置検索機能を、自分のアプリケーションに組み込むことができる。ただし、こうした便利なAPIの多くは商用サービスであり、利用には料金がかかる場合がある。この開発者も、利用開始にあたって初期費用を支払っており、個人で開発を進める際には、こうしたコストも計画に含める必要があることを示している。

データが準備できたところで、アプリケーションの心臓部である「バックエンド」の構築に移った。バックエンドとは、ユーザーの目には直接触れないサーバー側で動作するプログラムのことであり、データの保存、処理、提供といった役割を担う。開発者はデータベースとして「Supabase」、バックエンドのプログラムを開発するためのフレームワークとしてJava言語で人気の高い「Spring Boot」を選択した。データベースは情報を永続的に保管しておく場所であり、Supabaseは近年注目されているクラウドサービスの一つである。一方、Spring Bootは、Webアプリケーション開発に必要な様々な機能をまとめた骨組みであり、開発者が効率よくプログラムを書く手助けをしてくれる。プログラムの構造には、古くから使われている「MVC(Model-View-Controller)」という設計パターンを採用した。これは、プログラムの役割をデータ処理担当(Model)、画面表示担当(View)、利用者からの要求を受け付ける担当(Controller)の三つに明確に分ける考え方で、コードが整理され、後の修正や機能追加がしやすくなるという利点がある。

バックエンドの基本的な構造を整えた後、具体的な機能の実装とテストが行われた。開発者はまず、外部からデータのリクエストを受け付けて応答を返すための基本的なAPIを作成し、「Postman」というツールを使ってその動作を確認した。しかし、プログラミングにバグはつきものであり、この開発者もすぐにある問題に直面した。それは「Jacksonのシリアライゼーションエラー」であった。Jacksonとは、Javaのプログラム内で使われるデータ構造(オブジェクト)を、APIの通信で一般的に使われるJSONというテキスト形式に変換するためのライブラリである。シリアライゼーションとは、この変換処理そのものを指す。この種のエラーは、データ構造と変換ルールの間に食い違いがある場合に発生し、Web開発では頻繁に遭遇する典型的な問題の一つである。

このバグを解決した後、開発者はこのアプリケーションの最も重要な機能である「近くのパンダルを検索する機能」を実装した。これは、ユーザーの現在地の緯度・経度と、検索したい半径(例えば「半径2km以内」)をサーバーに送信すると、その条件に合致するパンダルのリストをデータベースから探し出して返すというものである。この機能を実現するために、JPAというJavaの技術を用いて、データベースに直接問い合わせるための特殊な命令文(クエリ)を作成した。このクエリには、地球が球体であることを考慮して二点間の距離を正確に計算するための数学的な計算式(球面三角法に基づく数式)が組み込まれている。これにより、単純な直線距離ではなく、実際の地表に沿った距離で効率的に検索を行うことができる。

開発初日にして、データ収集からバックエンドのコア機能の実装までを完了させたこの記録は、Webアプリケーション開発の基本的な流れを凝縮して示している。アイデアを形にするためには、地道なデータ準備、適切な技術の選定、整理されたプログラム設計、そして避けられないバグとの戦いという一連のプロセスが必要不可欠であることがわかる。次のステップとして、ユーザーが実際に触れる画面部分である「フロントエンド」の開発が予定されている。

【ITニュース解説】Building a Pandal Finder: Day 1 - Data, APIs, and Jackson Woes | いっしー@Webエンジニア