WORK

地域の困りごとを地図で共有するWebシステム

地域の困りごとを、場所と内容をセットにした報告として集めるWebシステムです。報告は地図と一覧の両方から確認でき、一般の利用者は報告の登録、管理者は全体の確認と、入口を分けています。

概要

地域の課題を、場所と内容が揃った報告として残し、地図の上で同じ一覧を見る仕組みです。報告する人はブラウザから場所と内容を登録し、見る人は地図上の位置と一覧の両方からその報告にたどり着きます。入口は一般の利用者と管理者で分けてあり、一般の利用者は自分の報告を登録して共有し、管理者は管理画面から全体を確認します。口頭や手元のメモに分かれていた課題を、位置の付いた記録として一つの画面に集めています。新しい報告も、すでに出ている報告も、同じ地図の上で見比べられます。

地図上の点を開くと、その場所に紐づいた内容を読めます。一覧では同じ報告を文章として追えます。新しい報告を足したあとも、既存の報告と同じ地図に並ぶので、場所が近い課題を見比べられます。一般の利用者の登録と、管理者の全体確認は、同じ記録を別の入口から扱う関係です。

課題

課題は、その場のメモと口頭の共有に分かれていました。場所を聞いても、内容が別のメモに残っていたり、内容は分かっても場所が担当者の記憶だけだったりして、一つの報告として扱えませんでした。最新の記録がどれかを確認するときも、担当者が複数のメモを見比べ、口頭で補っていました。同じ課題が別の言い方で繰り返されても、場所が結び付いていないと重複に気づけません。見る人によって持っている情報が違い、対応の前に突き合わせの時間が先に必要になっていました。

メモが複数あっても、場所の書き方が揃っていなければ同じ課題だと判断できませんでした。口頭で補った内容は、次の担当者には残りません。記録を探す時間が、課題そのものへの対応より先に来ていました。最新かどうかの判断も、書いた人の記憶に依存していました。

対応

ブラウザから、場所と内容を一つの報告として登録します。登録した報告は地図上の位置と一覧の両方に出して、開いた人が同じ記録を見られるようにしています。一般の利用者は自分の報告を登録して共有し、管理者は管理画面から全体の報告を確認します。見える範囲と操作は入口ごとに分け、一般の利用者が管理者の確認作業まで進まないようにしています。報告の追加と確認を同じ仕組みの中で完結させ、メモと口頭の間を担当者が取り次ぐ手順を画面の操作に移しています。

報告を登録したあとは、地図と一覧のどちらからでも同じ内容を開き直せます。一般の利用者は自分の報告の登録と共有までを行い、管理者は全体を見て確認します。場所だけ、内容だけの記録は残さず、両方がある報告として保存します。確認の途中で別のメモを開く手順は、この画面の流れには入れていません。

構成

画面は Next.js と TypeScript で、報告の登録と地図上の一覧をブラウザに出しています。API は Laravel と PHP で、報告の保存と取得を受けます。位置の付いたデータは PostgreSQL と PostGIS に置き、地図上で扱う場所の情報をデータベース側で持てるようにしています。キャッシュは Redis です。画面、API、データベース、キャッシュは Docker 上でまとめて起動します。利用者が触る画面と、報告を保存する API を分け、位置の検索と一覧の取得を API 経由にしています。

Next.js の画面が地図と一覧を描き、TypeScript で入力と表示を組んでいます。Laravel の API が報告の作成と取得を受け、PHP で保存の処理を行います。PostGIS は位置をデータベースで扱うために使い、Redis は繰り返し読む一覧や位置の情報をキャッシュします。Docker はこれらのプロセスを同じ環境で起動するための実行基盤です。

記事一覧