家族5人で世界の行きたい場所を全部回るといくら?12並列ワークフローで費用シミュレーションを作った

個人family-trips

家族5人で世界の行きたい場所を全部回るといくら?12並列ワークフローで費用シミュレーションを作った

きっかけはビジネスクラスの値段だった。台湾からの帰りに買った便がエコノミーの4〜5倍で、あれは高掴みだったのかがずっと引っかかっていた。平均的な価格差をWeb検索で調べてもらったら、ビジネスクラスはエコノミーの平均3〜4倍が相場。台風で直前購入だったことを考えれば、4〜5倍は平均レンジの上限程度で妥当な水準だと分かって、引っかかりが取れた。

そのついでに「ピラミッド、パルテノン神殿、イースター島」と行きたい場所を口に出したところから、話が一日がかりのサイト構築に転がっていった。

この日にできたもの:

  • 行きたい場所12ヶ所のカード一覧ページ+各目的地の「2泊3日・絶対見どころ」詳細ページ
  • 全カードへの「1人あたり予算目安(航空券+宿)」表示
  • 家族5人(人数は変数)で全部行った場合の総額シミュレーションページ
  • 費用内訳のセグメントバー可視化と、南極を除外する意思決定の記録

行きたい場所12ヶ所をカード一覧+詳細ページに

行きたい場所12ヶ所の一覧ページと、各目的地の「2泊3日・絶対見どころ」詳細ページを作らせた。コンテンツ生成はSonnet 5のサブエージェントを12並列に走らせるワークフローで、目的地ごとに1体ずつ担当させる方式。Astroサイトのビルドは40ページで成功した。

一覧ページは12ヶ所を地域別(ヨーロッパ4・アフリカ3・中南米3・インド洋1・極地1)にカードで並べた。各カードには写真・「2泊3日OK/ギリ/現実は要延長」バッジ・ベストシーズン・飛行時間を表示し、クリックすると詳細ページに飛ぶ構成になった。

レビュー用エミュレーションの解除し忘れ

一区切りついたあと、「レビュー用に画面サイズを固定したでしょ、戻しておいて」と指摘する場面があった。表示確認のためにデバイスエミュレーションでビューポートを1440x900に固定したまま作業を終えていたのが原因で、解除させて実ウィンドウサイズ追従に戻した。

ついでにページ全体が黒背景に見えていたのはChromeの強制ダークモード設定(Auto Dark Mode for Web Contents)のせいで、サイト自体はライト配色だと分かった。レビュー用の環境いじりは、使い終わったら即座に戻すところまでがワンセットだと再確認。

全カードに「1人あたり予算目安」を追加

カードを眺めていると、次に知りたくなるのは金額だった。全カードに「1人あたり予算目安(航空券+宿)」を入れさせた。

相場は現在の水準をWeb検索で当てるため、ここでもSonnet 5のワークフローを12並列で回し、仕上げに全件一括の桁チェックレビューを挟んだ。途中でスクリプトに構文エラーが混入して書き直す一幕もあったが、最終的に全12カードに「約◯万円/人」の緑帯と「往復約◯万+宿2泊約◯万」の内訳が入った。

家族5人で全部行くといくら?シミュレーションページを新設

1人あたりが分かったので、次は家族全員分。うちは子ども3人の5人家族なので、人数を変数(デフォルト5人)にした総額シミュレーションページを新設させた。

テーマパークを1ヶ所追加した13ヶ所で試算すると、約2,853万円。年1回ペースで2027年に始めると2039年完了、という数字が画面に出た。家一軒ぶんの金額が「行きたい」の合計値として並ぶと、笑うしかなかった。

順番は子どもの年齢基準、泊数もパラメータに

行く順番は「子どもに何を残したいか」で合理的に決まる。この方針でプランニングさせ、「順番の考え方」としてページ上にも明記させた。

  • キャラクター期のうちにテーマパーク
  • 体力がつく前でも楽しめるビーチ
  • 歴史が分かる年齢になってから遺跡
  • その後にサファリ、高地・長距離帯は大きくなってから
  • 最後に南極。モスクワは情勢待ちで後ろ

泊数もパラメータ化した。滞在を延ばすと増える費用は宿と食費に限られるので、延泊分を係数で積む方式。

泊数総額(5人・13ヶ所)
2泊3日(基準)約2,853万円
4泊5日約3,178万円
7泊8日約3,665万円

航空券が全体の77%だった

「やっぱり航空券が圧倒的に高いのでは」という体感を可視化してもらった。ガント風タイムラインの各行を情報列+チャート列の2列に分け、チャート列のバーを費用内訳のセグメントバー(地域色=航空券、グレー=宿・現地固定費、薄グレー=延泊分)にする方式。航空券と宿泊の内訳はfrontmatterの正式フィールドに持たせた。

結果、航空券が全体の約77%(約2,200万円/2,853万円中)。宿を削る工夫より、航空券の買い方ひとつで総額が動くことがバーの長さで見えるようになった。

南極をシミュレーションから外す意思決定

内訳を眺めていて目が留まったのが南極だった。家族5人で約610万円、クルーズ前提。見られるもの・環境を考えるとコスパが合わないと判断して、シミュレーションから外すことにした。ただし行きたい国リストからは消さない。

除外理由はページ上の「シミュレーション対象外」ボックスとメモの両方に記録させ、除外の定義は一覧ページとシミュレーションページで共有できるよう src/lib/wishlist.ts にSSOT化した。片方のページだけ数字がずれる事故を防ぐためで、一覧バナーの金額もシミュレーションと一致するよう更新させた。このタイミングで費用式も食費込みのモデルに揃えている(当初の約2,853万円は食費なしの試算なので、そこから単純に南極の610万円を引いた金額とは食費のぶんだけずれる)。

除外後の姿:

  • 12ヶ所・約2,373万円・2038年完了(最後はモスクワ)
  • 内訳: 航空券1,965万円(83%)+宿218万円+食費131万円+チケット等60万円
  • 南極を外すと航空券の比率はむしろ上がった

チャートに数字を直接入れる

仕上げに、バーのセグメント内へ家族合計の金額を直接入れさせ、各行の右端に「◯◯万円/人」のカラムを追加させた。アイコンは見れば分かるので、数字を優先する方針。ここまでで当日のセッションは終了し、引き継ぎメモを書かせた。

翌セッション: 23ファイルのコミットと学習ゲート

翌セッションでは引き継ぎメモに従って23ファイルをステージし、学習ゲート(/learn)のクイズを通してコミットを完了した。

ひとつ想定外だったのは、クイズをブラウザに出したまま回答せずに放置してしまい、30分の無応答タイムアウトで2回中断されたこと。合計約1時間、回答待ちのままセッションが止まっていた。クイズは出されたらその場で答える運用にしないと、ゲートが待ち時間に化ける。

学びメモ

  • ビジネスクラスはエコノミーの平均3〜4倍が相場。台風時の直前購入で4〜5倍なら上限圏で妥当
  • 「独立した調べ物×N」は12並列ワークフロー+全件一括の桁チェックレビューの型がそのまま効く。相場調査も同じ構造だった
  • 家族旅行の費用は8割が航空券。総額を動かしたいなら宿のグレードより航空券の買い方(時期・経路)を先に考える
  • 除外・例外の定義はページごとに書かず lib にSSOT化する。一覧とシミュレーションの金額がずれない
  • レビュー用のデバイスエミュレーションは使い終わったら即解除させる。指摘されてから気づくのでは遅い
  • 学習ゲートのクイズは放置するとタイムアウトする。出題されたらその場で答える
  • 完了年ベースで見ると、全部回り終わる頃には上の子はとっくに成人している。「いつ・誰と行けるか」は金額と同じくらい重い変数だった