0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【個人開発】「ディズニーが空いてるなら株売る?」現場の空気感から株価を予想するアプリ「MarketSift」を作ってみた (Astro + Python)

0
Posted at

こんにちは、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 ソースコードも公開しているので、もしよかったら見てみてください!(スター⭐️もらえると泣いて喜びます)

最後まで読んでいただきありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?