waiting-listのブログ

placeof - プレイスオブ の開発ブログです

placeofを支える技術

スクリーンショット

 


placeof - プレイスオブ の技術構成

Next.js

このサービスには多種多様なフォームがあり、Server Actionsは試験的にcontactページで使っています。Intercept Routesも使っています。


PlanetScale/Prisma


水平スケール出来るMySQLであるPlanetScaleに興味を持ち使っています。deploy requestをしてマイグレーションをする方式も違和感なく使えています。PrismaとDrizzleで迷いましたが、開発を始めた段階でPrismaの方が情報量が多く、出来ることもそこまで変わらないと感じ、Prismaにしてます。

Vercel 

Cloud Runでリリースする予定だったのですが、Vercelが想像以上に使いやすくこのまましばらくは使い続ける気がします。Vercelの環境設定画面も、スペックを動的に追加する画面の参考になりました。

 

主な実装ポイント

スペックを動的に追加する画面

全世界の物件・建築サイトをいろいろ見ましたが、スペックの表示としては新建築のサンプルが一番良い気がしました。
このような表示が出来るような情報を入力するフォームを作るべく、「スペック名のサジェスト機能」をshadcnのComboboxを使って実装しました。こちらのissueが参考になりました。
また、「スペックが[C値]のときは、値の入力欄は[数字]」「スペックが[〇〇のブランド]のときは、値の入力欄は[文字列]」のようなvalidationをしたく、ZodのsuperRefineを使って実装しています。

 

地図

地図表示にはMapboxを使っています。物件登録時に郵便番号が入力されると内部で緯度経度情報を持ち、描画時に大まかな範囲を表示しています。
とはいえ、このためのデータを用意するのが意外に難しかったです。結局、GeoNamesのデータを使わせて頂くことにしました。精度はともかくほぼ全ての国に対応可能なようです。必ずしも細かな精度は必要ないので助かりました。

ハザードマップなり国土地理院のベクトルタイルなりPlateauなりいろいろな不動産データを追加することも考えましたが、全世界のいろいろなサイトを調べて、プレイスオブではひとまずシンプルで良いかなと感じています。

i18n


不動産の本源的価値は数年後の次の需要であることから、任意の国に物件を有する方が他国の方にもそれぞれの言語でアピールできるするために国際化は重要です。

Next.jsのi18n機能はURLの変更が要請されるため、react-i18nextでi18n機能を作りました。こちらの記事を参考にクライアントサイドとサーバーサイドで使っています。Zodとの連携もしています。hydration errorが発生しましたが、i18nextの設定に新しい言語ファイルを追加し忘れていただけでした。

なお、距離や面積の単位も国ごとに違うので、MySQLではメートルで保持し、見る方の国によって表示を変えています。この辺のベストプラクティスは正直良くわかっていないです。

また、物件の特徴を入力する際に、ユーザーが動的に入力できるようにしたかったのですが、こちらもi18nとの兼ね合いでどうするべきか、試行錯誤中です。

 

日々の投稿


「不動産ポエムに客観的基礎を与えたい」観点から、可能な限り写真情報を無くしていますが、だからこそ一つ一つの日々の投稿に絶妙なポエムさがあるべきだと思いました。一番良いのはこちらの写真家用の投稿サイトかと思いました。異なる写真サイズ対応、モバイル対応、メタ情報、グリッド表示などなど。
https://imgs.so/posts/12f6b0 

ただ、これだとポエム過ぎる気もして、試行錯誤中です。

 

開発の背景


物件周りのペインとして「情報の非対称性」「何かと決断を急がされる」「物件価格が不安定」などがあります。
物件の全情報を知り得る物件所有者がしっかり情報発信して、潜在的な供給と潜在的な需要のマッチングが出来るならばそうしたペインの解消になる気がしました*1。一方で、物件周りの情報発信は何かとポエムになりやすくふわふわしているのも気になる印象です*2

開発の背景


物件周りのペインとして「情報の非対称性」「何かと決断を急がされる」「物件価格が不安定」などがあります。
物件の全情報を知り得る物件所有者がしっかり情報発信して、潜在的な供給と潜在的な需要のマッチングが出来るならばそうしたペインの解消になる気がしました*3。一方で、物件周りの情報発信は何かとポエムになりやすくふわふわしているのも気になる印象です*4

開発の背景


物件周りのペインとして「情報の非対称性」「何かと決断を急がされる」「物件価格が不安定」などがあります。
物件の全情報を知り得る物件所有者がしっかり情報発信して、潜在的な供給と潜在的な需要のマッチングが出来るならばそうしたペインの解消になる気がしました*5。一方で、物件周りの情報発信は何かとポエムになりやすくふわふわしているのも気になる印象です*6

物件の「スペック情報」や「特徴」や「関与したクリエイター」の情報などを詳しく書けるようにすることで、新しい潜在的な供給と潜在的な需要のマッチングが出来るのでは、と思い開発をしています。

TODO


- 関与したクリエイター周りの動的フォームをしっかり作る
- 「潜在的な買い手や借り手とつながる」世界観をより強く打ち出す機能の開発

 

まとめ
 

是非物件を登録してみてください

placeof - プレイスオブ

https://placeof.app

 

参考にしたサイト


https://qiita.com/tak001/items/cfbaa9dcb542929ff235
https://zenn.dev/aiji42/articles/171f26af4e5b5c

*1:社会全体で考えると、所有権が変わると高確率で住宅が破壊されることも課題かもしれません。日経平均株価は1989年の最高値を更新しましたが、土地価格はほとんどの地点で失われたままで、国民経済計算の土地資産額も失われたままです。様々な論点があり得えるものの、個々の不動産取引や管理が中長期的な需要を見据えて行われるような「継承的取引」が増えることで、社会全体の富の蓄積につながる気もします。

*2:ちなみに、一番好きな不動産ポエムは大正12年の「田園都市株式会社」による『田園都市案内』です。もし大正12年にプレイスオブのようなサービスがあったら「田園調布に空き家が増えている!もうオワコン!」みたいなことを次の世代が言うことはなかった、かもです。何故ならば、そこに住みたいという「原始的な感情」が蓄積されるからであり、それは「資本の本源的蓄積」よりも今の資本主義社会にとり必要なものかもしれません。

*3:社会全体で考えると、所有権が変わると高確率で住宅が破壊されることも課題かもしれません。日経平均株価は1989年の最高値を更新しましたが、土地価格はほとんどの地点で失われたままで、国民経済計算の土地資産額も失われたままです。様々な論点があり得えるものの、個々の不動産取引や管理が中長期的な需要を見据えて行われるような「継承的取引」が増えることで、社会全体の富の蓄積につながる気もします。

*4:ちなみに、一番好きな不動産ポエムは大正12年の「田園都市株式会社」による『田園都市案内』です。もし大正12年にプレイスオブのようなサービスがあったら「田園調布に空き家が増えている!もうオワコン!」みたいなことを次の世代が言うことはなかった、かもです。何故ならば、そこに住みたいという「原始的な感情」が蓄積されるからであり、それは「資本の本源的蓄積」よりも今の資本主義社会にとり必要なものかもしれません。

*5:社会全体で考えると、所有権が変わると高確率で住宅が破壊されることも課題かもしれません。日経平均株価は1989年の最高値を更新しましたが、土地価格はほとんどの地点で失われたままで、国民経済計算の土地資産額も失われたままです。様々な論点があり得えるものの、個々の不動産取引や管理が中長期的な需要を見据えて行われるような「継承的取引」が増えることで、社会全体の富の蓄積につながる気もします。

*6:ちなみに、一番好きな不動産ポエムは大正12年の「田園都市株式会社」による『田園都市案内』です。もし大正12年にプレイスオブのようなサービスがあったら「田園調布に空き家が増えている!もうオワコン!」みたいなことを次の世代が言うことはなかった、かもです。何故ならば、そこに住みたいという「原始的な感情」が蓄積されるからであり、それは「資本の本源的蓄積」よりも今の資本主義社会にとり必要なものかもしれません。