こんにちは!estieの丸島です。 estieではデータパイプラインと呼ばれるデータ基盤プロダクトのエンジニアリングマネージャーとソフトウェアエンジニアの二足のわらじを履く生活をしております。日々精進。
ところで皆さん、今日が何の日かご存知でしょうか?
そう、焼肉の日です 🍖
この記事をご覧の皆さん、今日くらいはお仕事は休んで焼肉に備えますよね?
ということでここに僕の好きな焼肉屋を貼ってドロンするつもりでしたが、流石にそれはしっかりブログを書いてくれている他の方に申し訳が立たないので、不動産っぽい焼肉の話をしようと思います。(不動産っぽい焼肉の話ってなんだ…?)
他の日の皆さん、しっかりとした内容で書かれていて「こんなので大丈夫なのか」感満載ですが、たまにはね。箸休め的な感覚で楽しんでいただけると幸いです。
(なお、僕の好きな焼肉屋の話が聞きたい人はカジュアル面談でお話しましょう)
不動産とオフィスと商業施設
不動産といえば住居用の不動産が馴染み深いですが、その他にも店舗やオフィスといった商業用不動産も含めると種類は多岐にわたります。大きめのビルの低層階には店舗が入っていることも多く、オフィスと店舗は共存するケースも多いですよね。
我々 estie はこの商業用不動産にフォーカスをおき、多数のデータソースから情報を取得し商業用不動産のデータプラットフォームを作り上げています。例えば、取り扱っているデータで代表的なものは下記です。
この中でも、「募集床情報」の募集賃料情報を使って東京23区の焼肉の料金相場とオフィスビルの募集賃料相場を比較してみようじゃないの、というのが今回の趣旨です。ちなみに自慢ですが、ウェブ上で閲覧可能な都心のオフィスビルの募集賃料情報は約23%程度とされており、こんなテーマですが今回の企画は意外と estie じゃないと難しかったりします(estie は約94%取得可能です)。
さて、ここからが本題。
まずは焼肉の相場を調べる
兎にも角にも、東京23区の焼肉の料金相場を調べましょう。 今回はホットペッパー様のグルメサーチAPIを使わせていただくことにしました。ありがとうございます。
トークンを発行の上、下記コードで「Z011: 東京都」の「G008: 焼肉・ホルモン」のお店をざっと取得してきます。実行環境は Python3.9.13 で実行しました。
さあ、yakiniku.csv を作るぞ。
import csv import math import mojimoji import re import requests import time TOKEN = "<見せられないよ>" LARGE_AREA = "Z011" GENRE = "G008" COUNT = 100 FORMAT = "json" # [都道府県][市区町村][その他][丁目番号][建物名][階数]で分割する PATTERN = "^(.+?[都道府県])(.+?[市区町村])(.*?)([0-90-9]+(?:-|‐|ー|−|-|丁目)?[0-90-9]*(?:-|‐|ー|−|-|番)?[0-90-9]*号?)(.*?)((?:地下|B)?[0-90-9]+)?(?:(?:-|‐|ー|−|-|~|〜|\.)[0-90-9])*[FF階]?$" response = requests.get(f"https://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key={TOKEN}&" f"large_area={LARGE_AREA}&genre={GENRE}&count={COUNT}&format={FORMAT}", headers={"content-type": "application/json"}) # 全体の件数からループ回数を算出 record_count = response.json()["results"]["results_available"] loop_count = math.ceil(int(record_count) / int(COUNT)) with open("yakiniku.csv", "w") as f: writer = csv.writer(f) writer.writerow(["shop_name", "full_address", "prefecture", "ward", "city", "house_number", "building_name", "floor", "price"]) for i in range(loop_count): response = requests.get(f"https://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key={TOKEN}&" f"start={i*COUNT}&large_area={LARGE_AREA}&genre={GENRE}&count={COUNT}&format={FORMAT}", headers={"content-type": "application/json"}) shops = response.json()["results"]["shop"] for shop in shops: # カタカナが半角全角バラバラなので全角カナに統一 formatted_address = mojimoji.zen_to_han(shop.get("address"), kana=False) result = re.match(PATTERN, formatted_address) if not result: print("address does not match pattern:" + shop.get('address')) continue # 正規表現から抽出した要素を取得 groups = result.groups() prefecture = groups[0] ward = groups[1] city = groups[2] house_numbers = groups[3] building_name = re.sub(r"\s", "", groups[4]) floor = groups[5] # 価格帯は大きい方を取る try: price = int(re.findall(r"\d+~(\d+)円", shop.get("budget").get("name"))[0]) except: price = None # CSVに出力 writer.writerow([shop.get("name"), formatted_address, prefecture, ward, city, house_numbers, building_name, floor, price]) time.sleep(1)
ということで、素敵な yakiniku.csv が出来上がりました。
yakiniku.csv によると、東京都内(23区外含む)には2359店舗もの焼肉店があるそうです。胸が踊りますね。
このデータ自身も気になるので、Excel でこねこねしてグラフにプロットしてみます。 今回は中央値と、データのばらつきを見るためにも標準偏差も見ましょうか。
やっぱり港区と中央区は高いんですねえ…。ちなみに標準偏差が最も高い港区の最高値は30000円でした。しかも3軒。いつか食べ放題できるようになりたい。
各区のオフィスの募集賃料相場ってどれぐらい?
と、いうところまでは普通のブログなので、ここから estie 流の味付けをします。
estie のデータベースから各区の募集賃料情報(オフィスの募集賃料は基本「坪単価」で表現され、一坪あたりいくら、という価格設定になることが多い)を抽出して同様に中央値と標準偏差を取ります(なお、御存知の通り賃料は変動しうるため、あくまで現状の市場における相場観、ということだけご認識ください)。
先程とは打って変わって、渋谷区がトップに躍り出ました。 渋谷が「ビットバレー」と呼ばれている由縁が如実に表れているように見えます。それ以外にも色々と焼肉の価格とは順位の違いが散見されますね。
しかし、港区や中央区が人気なのは変わらずなようです。 焼肉を食べるにせよ、仕事をするにせよ、いい立地なのでしょうねえ。
合わせてみる
焼肉料金の中央値でソートしたものをベースとしてマージしてみました。 全体的な傾向としては、やはりオフィス募集賃料が高いところほど焼肉の料金の高いお店が多いようです。
特筆するべきところとしては、先程も話題に上がった渋谷区、文京区や北区あたりでしょうか。ソートされた焼肉料金の中央値と比較して、目に見えて料金の上昇傾向に乱れが見られます。それぞれオフィスとしての価値と、人が生活する場所としての価値の乖離が出ているのかもしれませんね。
脇にそれた感想
ホットペッパー様のデータも並列して扱ってみて、住所といった estie でも取り扱う地理データの表現の難しさを感じました。例えば、
- 番地表現が 1-2-3 だったり 1丁目2-3 だったり複数表現できる
- ビル名の半角全角カタカナが統一されていない
- 階数の表現が 1-3F だったり 1~3F だったり 1.2.3F だったりと表記が統一されていない
- 地下階の表現が B1F や 地下1F と複数ある
- 明らかにタイポと思われるデータが存在する(東京都が複数回出現する)
などなど、フリーフォーマットあるあるな大変さを感じました。 estie が扱っているデータも元は人手を介して入力・管理されたものが多いため、データソースから取得できる情報には同様な痛みを多く抱えています。
一方で、そういったデータソースごとに特色のあるデータに秩序を生み出し、今回のような分析に活かすことができるようモデリングをしたり整形をしたりすることには大きな意義と価値があります。自画自賛感ありますが、改めて estie のデータを扱ってみてよく整備されているなあと感じた一日でした。
最後に
そんなこんなで本日皆さんが僕に抱いた印象は”焼肉野郎”かなと思いますが、いつもは estie のデータ基盤チームのエンジニアリングマネージャー兼ソフトウェアエンジニアとして働いています。
真面目な話もできますよアピールとしてカジュアル面談のリンクも貼っておきます。もし商業用不動産ドメインにご興味を持たれたり、estie での働き方が気になった方、是非お話しましょう!
なお冒頭の通り焼肉の話も歓迎です。というか一緒に焼肉食べながらお話しましょう。
Powered by ホットペッパー Webサービス