こんにちは、Kazesiftです。
普段生活していて、「今日カフェ混んでるな…これって決算良くなるんじゃ?」 とか 「この新作ゲーム、評判悪いな…株価下がるかも?」 とふと思うこと、ありませんか?
そんな**「現場のリアルな空気感(予兆)」** をシェアして、実際の株価と答え合わせができたら面白いんじゃないかと思い、「MarketSift」 というアプリを個人開発で作ってみました!
🐣 作ったもの
MarketSift (マーケット・シフト) 現場の事象から、どの銘柄にどう影響するか(買い/売り)を議論する掲示板です。
MarketSift Demo (Demo Site: https://market-sift-web.vercel.app)
こだわりポイント
「予兆」をストックする: ただのつぶやきではなく、「どの銘柄(Stock)」に「どう影響するか(Impact)」を紐付けて投稿できます。
答え合わせ機能: 投稿時の株価と現在の株価を自動比較して、その予想が当たったか(HIT/MISS)をAIが判定してくれます。
すぐ動ける: 気になったらすぐ取引できるよう、Yahoo!ファイナンスやSBI証券へのリンクを自動生成しています。
🛠 使った技術
「モダンな技術で爆速なサイトを作りたい!」と思い、今回は以下の構成に挑戦しました。
Frontend: Astro v5
とにかく初期表示が速いと聞いて採用。
動的な部分だけ React (Islands Architecture) を使っています。
デザインは Tailwind CSS v4 でシュッと作りました。
Backend: Python (FastAPI)
データ処理やスクレイピングもしやすいPythonを選択。
Vercel Serverless Functions で動かしています。
Infrastructure: Vercel
フロントもバックも全部Vercelにお任せ。
🏗 苦労したところ(モノレポ構成)
一番ハマったのが、「フロントエンド(Astro)とバックエンド(Python)をどうやって一緒にデプロイするか」 でした。 別々のリポジトリにするのは管理が面倒だし…と思い、モノレポ構成 に挑戦しました。
vercel.json
でルーティングを書くことで、なんとか解決!
{
"functions": {
"api/*.py": { "runtime": "python3.9" }
},
"rewrites": [
{ "source": "/api/(.*)", "destination": "/api/index.py" }
]
}
これで、フロントエンドから /api/signals を叩くだけで、裏側のPythonが動くようになりました。CORSエラーともおさらばです。
🚀 今後の展望
初めての株関係の個人開発でしたが、自分の欲しい機能が形になるのはめちゃくちゃ楽しいですね! 今後は、本物のAIを使って「この投稿はポジティブかネガティブか」を自動判定させたり、カフェ検索アプリ「Kazesift」との連携をもっと強化していきたいなと目論んでいます。
GitHub: https://github.com/kazesift/market-sift ソースコードも公開しているので、もしよかったら見てみてください!(スター⭐️もらえると泣いて喜びます)
最後まで読んでいただきありがとうございました!