夏の大分帰省にあわせて、家族旅行アーカイブサイト family-trips(Astro + Cloudflare Pages)の旅行詳細ページのマップに、阿蘇エリアの候補スポットを足しこんだ。最終的にピンは 16 件から 25 件まで増えた。
途中で dev server のキャッシュとポート競合に時間を吸われ、HMR は2回死んだ。記録として残しておく。
1. 星野リゾートのガイドから観光ピンを6件追加
最初の指示は雑に投げた。
https://hoshinoresorts.com/jp/guide/area/kyushu/kumamoto-area/aso/aso-kanko/ ちょっとね、今回の大分の帰省で、この阿蘇にちょっと行ってみようかなと思ってて。これらをですね、ちょっとマップに加えといてもらえませんかね。
URL を渡しただけ。Claude Code には「このガイドに載っている観光地6スポットをピン追加して、Markdown の観光地リストも合わせて更新して」と動いてもらった。カテゴリは 観光 で統一。
pnpm dev でローカルを 4321 番ポートに立ち上げてマップを開くと、6 ピンとも反映されていた。ここまでは何の障害もなかった。
2. アソキャンの追加と Google Maps 口コミの取得
次は Google Maps の URL を直接渡された。
ちょっとここもお願いしたいのと、これちょっとユーザーの口コミまとめといてくれませんかね。
阿蘇のグランピング系キャンプ場「アソキャン(ロッジ宿泊)」だった。Claude Code に、ピン追加と Google Maps 口コミの取得を並行で進めさせた。
口コミは全部で 33 件あり、agent-browser でスクロールしながら 20 件以上取った。そのまま生で並べても読めないので、memo/2026-05-21/ 配下の作業メモに「家族旅行視点で何が刺さるか」を軸にまとめてもらった。
- ロッジは清潔、設備は新しい
- スタッフ対応が丁寧
- 食事(夕食バーベキュー / 朝食)の評判が高い
- 周辺は田舎で、夜は星が見える
- 子連れに向く、温泉が併設されている
家族で行くかどうかの判断には、星評価よりこの粒度の事実の方が効く。
3. ピンが反映されない → dev server のキャッシュとポート競合
ピンを追加してブラウザをリロードしても、アソキャンのピンが地図に出てこなかった。
JSON ファイルを確認すると、22 ピン分のデータは正しく入っていた。コードもデータも問題なし。残るは dev server のキャッシュだろう、と当たりを付けて再起動をかけた。
ここで pnpm dev のログを見て手が止まった。新しい dev server が 4321 番ではなく 4322 番に逃げていた。前のプロセスが 4321 を握りっぱなしになっていたらしい。
# ポート 4321 を握っているプロセスを特定して落とす
$pid = (Get-NetTCPConnection -LocalPort 4321 -ErrorAction SilentlyContinue).OwningProcess | Select-Object -Unique
if ($pid) { Stop-Process -Id $pid -Force }
古いプロセスを落としてから pnpm dev を打ち直すと、新しいサーバーがちゃんと 4321 で立ち上がった。ブラウザをリロードすると、22 ピン全件が地図に並んだ。
Stop-Process -Name node -Force で雑に殺すと Claude Code 本体まで道連れになる。今日もここはポート指定で踏みとどまった。
4. 「自然にそのまま遊べる場所」を周辺から探す
ピンの全件反映を見届けた直後、ユーザーから方向修正が入った。
この施設内、もしくはこの施設の周りで、なんか自然にそのまま遊べるところってありますかね。
「観光地」より一段ゆるい温度の要望。子供と一緒に、立ち寄って 1〜2 時間で済むような場所が欲しい、ということだろうと解釈した。
公式サイトの周辺ガイドはあっさりしていて使えなかったので、Claude Code に Web 検索で補完させた。返ってきた候補は 4 件。
- あそ・ビバ(芝生・遊具・小川)
- 道の駅阿蘇(広場・遊具)
- 古閑の滝(自然の滝、徒歩でアクセス可)
- 宮川渓谷(川遊び)
このうち「宮川渓谷」は、阿蘇市内の地名としては Google でも OpenStreetMap でもまともにヒットせず、ok-camp.work というキャンプ系サイトの宣伝文だけが返ってきた。実在が怪しいので、ここはピンには起こさず Markdown の「見送り候補と理由」に残すだけにした。
5. 座標取得: Nominatim API は使えなかった
ピンの座標は OpenStreetMap の Nominatim API で取りに行こうとした。が、日本のローカルスポット名を投げると見当違いの座標が返ってきた。「あそ・ビバ」がアフリカや南米のどこかになるレベルでズレる。
ここは粘らずに Google Maps に切り替えた。スポット名で検索して、URL の @ の後ろに乗っている緯度経度をそのまま控える。3 件分やる:
- あそ・ビバ: 32.9761, 131.0427
- 道の駅阿蘇: 32.9370, 131.0809
- 古閑の滝: 32.9221, 131.1449
検索が走った瞬間に座標が確定するので、API 越しに名前解決させるより速かった。
6. HMR がまた死ぬ → ハード再起動で 25 ピン全件反映
新しい 3 ピンを JSON に書き足してブラウザに戻ったが、また地図が更新されなかった。今度こそ HMR の問題だろうと当たりを付けて、Astro の dev server を一度ハードに落として立て直した。
リロード後、地図にはアソキャン + 既存ピン群 + 新規 3 ピンの計 25 件が並んだ。スクリーンショットを撮って今日の作業を区切った。
dev server のキャッシュは、ピンや地図のような「データだけが変わって UI 構造は変わらない」更新と相性が悪い。今日 2 回踏んで、3 回目があったらまず dev server を疑うことにする。
7. 不要セクションの削除
最後にユーザーから整理指示が入った。
持ち物の買い出しメモはいらないんで削除してほしいです。あとね、振り返りとか当日のしおりもとりあえずいらないです。食事メモも特にいらないです。
旅行記事の Markdown には、テンプレ的に「持ち物・買い出しメモ」「当日のしおり」「振り返り」「食事メモ」の 4 セクションを最初から入れていたが、行ったあとに書く話なのでまだ早い。Claude Code に該当 4 セクションを丸ごと落としてもらった。
結果、ファイルは「見送り候補と理由」で終わる、出発前にちょうどよい粒度になった。
学び
- 地図ピンの追加で反映されないときは、「データ」「コード」「dev server のキャッシュ / ポート」の順で疑う。今日のケースは3つ目だった
- 日本のローカル地名は Nominatim より Google Maps の URL から座標を取った方が速い
- Google Maps の口コミは星評価より、家族構成・滞在シーン別の事実を拾うとそのまま判断材料になる
- 旅行記事のテンプレに「出発前に書く」セクションと「帰ってから書く」セクションが混じっていた。次から最初は前者だけ生成する
見送り候補と理由
- 宮川渓谷(阿蘇市): Google Maps・OpenStreetMap ともに該当する地名が検索ヒットせず、出所が宣伝サイト1つに限られたため見送り。実在が確認できたら追加する。