この記事は LIFULL Advent Calendar 2025 の記事です。
1. はじめに
こんにちは!LIFULL HOME'Sでサービス企画職をしている、てぃば(@rechiba3)です。
突然ですが、皆さんは蒙古タンメン中本をご存知でしょうか?あの激辛で有名な、一度食べたら病みつきになる伝説のラーメン店です。私は中本の北極ラーメンが大好きで、今の家を買うときも「その家はUber Eatsで蒙古タンメン中本が注文できるか?」の視点が購入の決め手となりました。
これは現代のグルメ重視な生活において、非常に重要な問題です。どんなに素敵な物件でも、好きな食べ物が配達されないエリアだったら、QOLが著しく下がってしまいます。
そこで今回は、LIFULL HOME'Sの物件URLを入力するだけで「蒙古タンメン中本がUber Eatsで配達可能か」を判定するサービスを作ってみました!
2. サービス概要
課題設定
物件探しをしていると、こんな疑問が湧きませんか?
- 「ここに住んだらUber Eats使えるの?」
- 「好きなお店が配達エリアに入ってる?」
- 「配達可能エリアをいちいち調べるのが面倒...」
特に、蒙古タンメン中本のような首都圏集中の店舗は事前に確認しておきたいところです。
解決策
LIFULL HOME'Sの物件詳細ページのURLを入力するだけで、その住所が蒙古タンメン中本のUber Eats配達エリアに含まれているかを瞬時に判定するWebアプリケーションを開発しました。
ターゲットユーザー
- 蒙古タンメン中本愛好家
- デリバリーサービスを頻繁に利用する人
- 物件探しで細かい生活利便性まで考慮したい人
3. 技術的なアプローチ検討
物件情報の取得方法
LIFULL HOME'S URLからの住所抽出
まず、物件の住所情報を取得する必要があります。LIFULL HOME'Sの物件詳細ページから住所を抽出する方法を検討しました。
// 実際のHTML構造に対応したセレクタパターン
const selectors = [
'dt:contains("所在地") + dd p', // 新しい構造
'dt:contains("住所") + dd p',
'.property_view_table-body', // 従来の構造
'td:contains("住所")',
// その他のパターン...
];
LIFULL HOME'Sの住所構造がよくわかっていないので(本業がエンジニアではないため)複数のセレクタパターンを用意してフォールバック対応を行いました。
住所の正規化
取得した住所は「埼玉県久喜市久喜中央1丁目」のように、番地まで含まれていない場合があります。これに対応するため、都道府県・市区町村・丁目レベルでの判定ロジックを実装しました。
Uber Eats配達エリア判定
公式APIの調査結果
残念ながら、Uber Eats APIには、特定の住所が配達可能エリア内にあるかどうかを直接確認するための専用APIエンドポイントはありません。
そこで代替手段を検討しました。
代替手段の実装
- エリアデータベース方式: 主要な配達可能エリアをデータベース化
- 部分マッチング: 住所の一部が配達エリアに含まれているかを判定
- 都道府県レベルフォールバック: 詳細エリアにマッチしない場合の補完判定
// 蒙古タンメン中本の店舗エリア(特別判定)
const nakamotoAreas = [
'新宿', '渋谷', '池袋', '品川', '上野', '錦糸町',
'町田', '立川', '吉祥寺', '府中', '川崎', '横浜',
'大宮', '川口', '柏', '船橋', '千葉'
];
// 蒙古タンメン中本の特別判定
const nakamotoDeliverable = nakamotoAreas.some(area =>
address.includes(area)
);
技術スタック
- フロントエンド: Vanilla JavaScript(シンプルさを重視)
- バックエンド: Node.js + Express
- スクレイピング: Cheerio(軽量なjQueryライクライブラリ)
- HTTP通信: Axios
4. 企画の面白ポイント
実用性
実際の物件探しで使える実用的なツールです。不動産情報とグルメ情報を組み合わせた、新しい物件選びの指標を提供します。
話題性
「北極ラーメンがウーバーできる?」というキャッチーなコピーで、SNSでシェアしたくなる面白さがあります。
拡張性
蒙古タンメン中本以外にも、他の人気店舗や複数のデリバリーサービスに対応可能な設計になっています。
5. 実装上の課題と解決策
住所の正規化問題
課題: 物件情報の住所表記が統一されていない
解決策: 複数のパターンマッチングと正規表現を組み合わせた柔軟な住所抽出
// 住所らしい文字列かチェック(丁目まででもOK)
if (address && address.length > 3 &&
(address.includes('都') || address.includes('県') ||
address.includes('区') || address.includes('市')) &&
(address.includes('丁目') || address.includes('番地') ||
/\d/.test(address))) {
// 有効な住所として処理
}
配達エリアの動的変更への対応
課題: Uber Eatsの配達エリアは随時変更される
解決策: 都道府県レベルでのフォールバック判定と信頼度表示
レスポンス速度の最適化
課題: スクレイピング処理による応答遅延
解決策:
- 軽量なCheerioライブラリの採用
- 必要最小限のDOM要素のみを処理
- エラーハンドリングの充実
利用規約・著作権への配慮
課題: LIFULL HOME'Sのコンテンツ利用
解決策:
- 個人利用・学習目的での実装(だからサーバーには上げないんだな今回)
- 過度なアクセス負荷をかけない設計
- User-Agentの適切な設定
6. 今後の展望
機能拡張案
ライフスタイルに合わせたニーズ拡大
近所にカーシェアある?日常的にスタバ行ける?ミスドやマックも徒歩圏内?など
これ本当にあって欲しいと思いませんか?CPOどうです?ご検討ください🤝
ビジネス展開の可能性
- 不動産ポータルサイトへの機能組み込み
- デリバリーサービス各社との連携
- 生活利便性スコアとしての指標化
7. 実装のポイント
フロントエンド
シンプルで直感的なUIを心がけました。赤い背景色は蒙古タンメン中本の辛さを表現しています。辛そうだね🌶️
body {
background: #ff0000; /* 中本の辛さを表現 */
}
.special-message {
background: linear-gradient(135deg, #ff6b6b, #ffa500);
animation: pulse 2s infinite; /* 配達可能時のアニメーション */
}
バックエンド
Express.jsを使用したシンプルなREST API設計。
app.post('/api/check', async (req, res) => {
try {
const { url } = req.body;
const address = await extractAddress(url);
const deliveryInfo = checkUberEatsDelivery(address);
res.json({
address,
...deliveryInfo
});
} catch (error) {
res.status(500).json({ error: error.message });
}
});
8. おわりに
今回は「蒙古タンメン中本がウーバーできるか」という、一見ニッチな課題を技術で解決してみました。
このプロジェクトを通じて感じたのは、技術は日常の小さな不便を解決するためにあるということです。どんなに些細な問題でも、それを解決することで誰かの生活が少しでも便利になるなら、それは価値のあることだと思います。
また、LIFULL HOME'Sで働く身として、物件探しはもっと面白く、楽しくできると感じました。住まい探しは人生の大きな決断の一つですが、もっと日常生活を想像できる軸を加えることで、より豊かな住まい選びができるかもしれません。
読者の皆さんへ
この記事を読んで「面白そう!」と思った方は、ぜひ自分でも実装にチャレンジしてみてください。
今回、AmazonQのコーディングエージェントを活用して開発しています。エンジニア職以外でもプロトタイプを簡単に作れる時代になりました。
好きな店舗や地域に特化したバージョンを作ってみるのも面白いと思います。
他の参加者の皆さんの記事もお楽しみに!
GitHub: https://github.com/rechiba3/uber-eats-nakamoto-checker


