「設定した株価になったらすぐに通知してほしい」「24時間株価を監視して目標値到達・急騰・急落を自動で知らせるシステムを作りたい」——そんなニーズに応える株価アラートシステムの開発手順を解説します。本記事では、銘柄・上限価格・下限価格・変動率を設定するとAlpha Vantage APIで株価を定期取得し、条件を満たした瞬間にメール・LINE・プッシュ通知を送るシステムを、実際に動くデモを交えながら解説します。Node.js + PostgreSQL + Redis + SendGrid + LINE Messaging API + FCMの構成で、SaaS化まで含めた実践的な内容です。
なぜ株価アラートシステムが投資家に必要か
証券会社のアプリにも価格アラート機能はありますが、複数の証券口座をまたいだ一括管理・LINE通知・変動率アラート・出来高アラートなど、痒いところに手が届く機能は自作システムで実現できます。個人投資家向けSaaSとして月額980〜2,980円で提供すれば、月間500ユーザー・転換率20%で月商約15万円が見込めます。
| アラート種別 | 用途 | 実装難易度 |
|---|---|---|
| 価格上限・下限アラート | 目標価格到達・損切りライン割れの通知 | 低 |
| 変動率アラート | 1日で5%以上動いた急騰・急落の通知 | 低 |
| 出来高アラート | 平均出来高200%超えで注目銘柄を発見 | 中 |
| テクニカル指標アラート | ゴールデンクロス・デッドクロスの通知 | 高 |
実際に動かしてみる(デモ)
以下は実際に動作するデモです。銘柄を選択して上限価格・下限価格・変動率・通知方法を設定し「アラートを設定」ボタンを押すと、設定済みアラートの一覧(監視中・発動済み)が表示されます。「テスト通知を送信」ボタンで通知フローのシミュレーションも確認できます。
リアルタイム株価アラートシステム
設定した条件で株価を24時間監視、即座に通知
開発手順(12ステップ)
STEP 1:株価データソースの選定
リアルタイム株価取得のAPIは用途によって選定が変わります。Alpha Vantage(無料枠1日500リクエスト・1分足〜日足対応・日本株は`.T`サフィックスで取得可能だが一部取得できない銘柄あり)、Yahoo Finance(yfinanceライブラリで無料利用可・非公式APIのため安定性に注意)、Polygon.io(月199ドル〜・ミリ秒単位のリアルタイム・米国株特化)、楽天証券MarketSpeed APIやauカブコム証券Kabu+ API(日本株に強い・口座開設が必要)、Finnhub(無料枠60リクエスト/分・ニュースやSNS感情分析も取得可能)が主な選択肢です。個人開発のスタートはAlpha Vantage無料枠、本格運用は日本株専用APIへの移行が現実的です。
STEP 2:システムアーキテクチャ設計
24時間稼働する監視システムの設計が重要です。フロントエンドはNext.js + Reactでアラート設定UIを構築、バックエンドはNode.js + ExpressまたはPython + FastAPI、データベースはPostgreSQL(ユーザー・アラート設定・発動履歴)、キャッシュはRedis(同じ銘柄の重複API呼び出しを1分間キャッシュして削減)、監視実行はcronジョブで1分〜5分ごとに全アクティブアラートをチェック、通知サービスはSendGrid(メール)・LINE Messaging API・Firebase Cloud Messaging(プッシュ)、WebSocketでリアルタイム価格更新をクライアントに配信します。
STEP 3:株価取得システムの実装
Alpha Vantage APIの`GLOBAL_QUOTE`エンドポイントで現在値・変動額・変動率・出来高を取得します。Node.jsでは`axios`でAPIを叩き、`redis.setEx`で結果を60秒キャッシュして重複リクエストを防ぎます。日本株のティッカーは`7203.T`(トヨタ)のように`.T`を付けます。25MBを超える大量データはバッチで10銘柄ずつ並列取得し、APIのレート制限に引っかからないよう1秒のウェイトを挟みます。レート制限のエラーが返った場合はエクスポネンシャルバックオフでリトライします。
STEP 4:アラート条件判定ロジックの実装
PostgreSQLから全アクティブアラートを取得して銘柄ごとにグループ化し、1銘柄1回のAPI呼び出しで全ユーザーのアラートをチェックします(1,000人が100銘柄を監視していてもAPI呼び出しは100回のみ)。条件判定は上限価格チェック(`stock.price >= alert.upper_limit`)・下限価格チェック・変動率チェック(`Math.abs(changePercent) >= alert.change_percent`)の3種類が基本です。発動後は`last_triggered`を更新して重複通知を防止します。出来高アラートは過去20日間の平均出来高を事前計算してRedisにキャッシュしておきます。
STEP 5:メール通知の実装(SendGrid)
SendGridの`@sendgrid/mail`パッケージで実装します。`sgMail.setApiKey`でAPIキーを設定し、`sgMail.send`に`to`・`from`・`subject`・`html`を渡します。HTMLメールには銘柄名・現在価格・アラート管理画面へのリンクボタンを含め視認性を高めます。SendGridの無料枠は月100通まで、超過分は1,000通あたり14.95ドルです。複数ユーザーへの一括送信は`sgMail.sendMultiple`で効率化します。
STEP 6:LINE通知の実装
個人向けの簡易実装はLINE Notifyが最も手軽です。ユーザーにLINE Notifyのアクセストークンを発行してもらい、`https://notify-api.line.me/api/notify`にPOSTリクエストを送るだけで通知できます。本格的な双方向Botを作る場合はLINE Messaging APIを使います。`@line/bot-sdk`でクライアントを初期化し、Flex Messageで銘柄名・現在価格・アラート詳細を視覚的に整ったカードとして送信します。LINE通知の開封率は80%以上と高く、緊急性の高いアラートに最適です。無料枠は月1,000通まで、超過分は1,000通あたり350円です。
STEP 7:プッシュ通知の実装(FCM)
Firebase Cloud Messaging(FCM)はiOS・Android・Webブラウザに対応し、完全無料で制限なく利用できます。`firebase-admin`パッケージで`admin.initializeApp`を初期化し、`admin.messaging().send`にデバイストークン・通知タイトル・本文・カスタムデータを渡します。Androidは`priority: ‘high’`でバックグラウンドでも即座に届きます。iOSはAPNs証明書の設定が必要です。ユーザーが通知を許可した際にデバイストークンをPostgreSQLの`users`テーブルに保存し、アラート発動時に取得して送信します。
STEP 8:データベース設計
PostgreSQLで5テーブルを設計します。usersテーブル(email・LINE user ID・FCMトークン・通知設定フラグ)、alertsテーブル(user_id・銘柄コード・上限/下限価格・変動率・出来高倍率・アクティブフラグ・最終発動日時)、alert_historyテーブル(alert_id・発動価格・発動種別・メッセージ・発動日時)、stocksテーブル(銘柄マスター)、stock_pricesテーブル(過去の株価データ・テクニカル分析用)です。alertsテーブルの`(user_id, active)`と`(stock_symbol, active)`に複合インデックスを設定してチェック処理を高速化します。
STEP 9:フロントエンド実装
Next.js + Reactでアラート設定UIを構築します。銘柄検索はオートコンプリート付きの入力フィールドで銘柄コード・会社名の両方で検索できるようにします。WebSocketで現在の株価をリアルタイム表示し、設定した上限・下限価格とのギャップを視覚的に示します。Chart.jsでミニチャートを表示してユーザーが価格帯のイメージを掴みやすくします。アラート管理画面は一覧表示・編集・削除・一時停止の操作ができるようにし、発動履歴も時系列で確認できます。
STEP 10:バッチ処理最適化とスケーラビリティ
1分ごとのcronジョブでDBの全アクティブアラートを取得し、銘柄ごとにグループ化して10銘柄ずつ並列API呼び出し→各ユーザーのアラートを判定→通知キュー(AWS SQSまたはRabbitMQ)に投入→非同期で通知送信のパイプラインを実装します。ユーザー数が増えたら複数サーバーで銘柄を分散監視するシャーディング設計に移行します。同じ銘柄のアラートが100件あっても株価取得は1回で済む設計が最適化の核心です。
STEP 11:コスト管理と収益化
月間の運用コストはAlpha Vantage有料プラン(月49.99ドル〜)・SendGrid(月100通まで無料)・LINE API(月1,000通まで無料)・FCM(完全無料)・AWS EC2 t3.micro + RDS(合計月約25ドル)で合計月約5,000〜15,000円です。価格設定は無料プラン(3銘柄・5アラートまで)、ベーシックプラン(月額980円・10銘柄・無制限アラート)、プロプラン(月額2,980円・無制限銘柄・テクニカル分析・優先サポート)、エンタープライズ(要相談・API提供・専用サーバー)の4階層が標準です。月間500ユーザー・有料転換率20%・平均単価1,500円で月商15万円が見込めます。
STEP 12:MVPを3日で作る最小構成
Day 1でNext.jsのフロントエンドとAlpha Vantage APIによる株価取得を実装します。Day 2でPostgreSQLのデータベース構築とアラート判定ロジックを実装します。Day 3でSendGridのメール通知とVercel cronによる定期実行(vercel.jsonの`crons`設定)を実装してデプロイします。Vercel cronはvercel.jsonに`”crons”: [{“path”: “/api/check-alerts”, “schedule”: “* * * * *”}]`を設定するだけで1分ごとにエンドポイントを叩いてくれるため、追加サーバーなしでMVPを完成させられます。最初は「1銘柄・メール通知のみ」の最小機能を完成させてフィードバックを得てから機能を追加します。
開発・運用コストの目安
Node.js + PostgreSQL + Redis + Alpha Vantage + SendGridの構成なら、株価監視→アラート判定→メール通知の基本フローを備えたMVPを10万円程度から開発できます。
| フェーズ | 内容 | 費用目安 |
|---|---|---|
| フェーズ1(MVP) | 株価取得・アラート判定・メール通知・基本UI | 10万〜20万円 |
| フェーズ2(機能追加) | LINE通知・FCMプッシュ・WebSocket・出来高アラート | 10万〜20万円 |
| フェーズ3(SaaS化) | Stripe課金・テクニカル指標・チャート表示・API公開 | 10万〜30万円 |
| Alpha Vantage API | 有料プラン(無料枠は1日500リクエスト) | 月49.99ドル〜 |
| AWS EC2 + RDS | t3.micro + PostgreSQL managed | 月2,500円〜4,000円 |
| SendGrid + LINE API | 無料枠超過分の通知費用 | 月0円〜5,000円 |
| 月額運用費(目安) | API + サーバー + 通知費用合計 | 月5,000円〜15,000円 |
よくある質問
日本株のリアルタイム価格取得に最適なAPIはどれですか?
Alpha Vantageは米国株がメインで日本株は一部取得できない銘柄があります。日本株専用ならauカブコム証券のKabu+ APIが高精度です(口座開設が必要)。楽天証券のMarketSpeed II RSSも使いやすい選択肢です。無料で始めるならYahoo Finance(yfinanceライブラリ)が実用的ですが非公式APIのため突然使えなくなるリスクがあります。本格運用では証券会社API一択が現実的です。
株価監視システムの運用には金融関係の資格や届出が必要ですか?
株価情報を通知するだけのシステムは投資助言には該当せず、原則として金融商品取引業の登録は不要です。ただし「この株を買うべき」「売るべき」といった具体的な投資判断を提供すると投資助言業に該当し金融商品取引業の登録が必要になります。アラートはあくまでユーザーが設定した条件の通知に留め、投資判断はユーザー自身に委ねる設計にすることが重要です。グレーゾーンがある場合はリリース前に弁護士に確認することを推奨します。
証券取引所の開場時間外のアラートはどう扱いますか?
東証は平日9:00〜11:30・12:30〜15:30が取引時間です。cronジョブをこの時間帯のみ実行するよう設定するか(例: `0 9-15 * * 1-5`)、時間外は株価取得をスキップしてRedisのキャッシュをそのまま使うよう実装します。終値アラートとして「本日の終値が設定価格を下回ったら通知」という設定もユーザーに喜ばれます。米国株を対象にする場合はNYSE・NASDAQの取引時間(日本時間22:30〜翌5:00)に合わせて設計します。
まとめ
Alpha Vantage + Node.js + PostgreSQL + Redis + SendGrid + LINE Messaging API + FCMの構成で株価アラートシステムをMVP10万円程度から開発できます。バッチ処理の最適化(銘柄ごとのグループ化で重複API呼び出しを削減)とRedisキャッシュの組み合わせで1,000人規模のユーザーにも耐えられるシステムを実現できます。月額980〜2,980円のサブスクリプションモデルで500ユーザー・転換率20%を達成すれば月商15万円の安定した収益が見込めます。
開発のご相談や見積もりはお気軽にお問い合わせください。要件定義からリリースまで一貫してサポートします。
