【障害】すべてのリアルタイム通信がエラーになってしまった【アプリ保守は超面倒】
こんにちは、Stacaの中の人です。
公開しているアプリで、またまたバグを出してしまいました。
今回は何もアプリを触ってないのに、ある日突然、リアルタイム通信ができなくなってしまった、という不具合です。
被害を受けた方、ごめんなさい。
Stacaのリアルタイム通信機能
僕が公開しているアプリ【Staca】はお客さんがスタンプカードを提示したり、お店がカードに押印して返却したり、といった操作を即座に通知するためにPusherを利用したリアルタイム通信機能を実装しています。
1秒以内で相手のアプリに通知できるので、非常に便利な機能です。ユーザー体験の向上に欠かせません。
実装にあたっては、ニフクラのスクリプト機能とNode.jsを組み合わせることで、スケーラブルで信頼性の高いバックエンド環境を構築しました。
mBaaSとPusherを使ってチャットアプリを作る
エラー発生は突然に・・・
Stacaはシステム的なエラーが発生したときには、エラーログをmbaasのデータストアに保存して、セッションを切断してログイン画面に戻すようにしています。
ある日、何気なくこのエラーログを眺めていると、2026年4月1日〜15日の期間で以下のようなエラーが500件以上、出力されていることに気づきました。
sendPusher
Error: Bad Request
お客さまからすると、スタンプカードの提示や返却といった基本的な操作をしただけなのに、システムエラーとなり強制的にログイン画面に戻されていたということです。
これはやばい。
でもアプリを修正してないのに、なぜ突然エラーが出だしたのか。
そういえばニフクラからお知らせがあったような・・・
2026年3月15日にニフクラmbaasから以下のお知らせが来ていました。
2026年04月01日(水)より、スクリプト機能の実行環境をアップグレードいたします。
詳しくは以下をご確認ください。
■ 対象となるお客様
スクリプト機能を使用しているお客様
■ 変更内容
スクリプトにて提供中の言語イメージへ、新たに下記のバージョンを追加します。
・Node.js : 24.0.0
・Ruby : 3.4.0
・Python : 3.12.0
あわせて、以下の旧バージョンを廃止します。
・Node.js : 18.x, 20.x
・Ruby : 2.7.x, 3.0.x
・Python : 3.8.x, 3.9.x
これに伴い、スクリプトにて利用可能なNode.js、Ruby、Pythonライブラリのバージョンアップを行います。
■ 注意事項
廃止される言語イメージで登録されているスクリプトは、廃止以降は実行不可となります。
あらかじめ、アップグレードいただきますよう宜しくお願いいたします。
Pusherのリアルタイム通信サービスはニフクラのスクリプト機能を使っているので、これは怪しい。2026年4月1日からエラーが出続けているのもお知らせの内容と合致する。
あわててNode.jsのバージョンを確認してみると、やはり廃止対象の「20.x」を使っていました。。。Σ( ̄ロ ̄lll)ガーン
スクリプトの実行ログにも、しっかりエラーが出ていました。
{
"Status": "ERROR",
"RequestHeaders": "{}",
"RequestQuery": "{}",
"ResponseHeaders": "{}",
"Error": "InvalidParameterError: 20.x is invalid version",
"Duration": 2,
"created_at": "2026-04-15T14:25:30.000Z",
"updated_at": "2026-04-15T14:25:30.000Z",
"ResponseStatus": 400,
"ScriptIdentifier": "pushercard.js"
}
秒速でバージョンアップ&お詫びのお知らせ掲載
スクリプトを「24.0.0」にバージョンアップして、エラーが出ないことを確認。同時に非同期処理とPromiseの最新パターンに対応させ、スケーラビリティを向上させました。
そして、アプリにお詫びのお知らせを掲載しました。
いつもStacaを利用いただきましてありがとうございます。
以下の期間、スタンプカードの提示および返却の際にエラーが発生しておりました。
2026/4/1(水) 0:00 〜 4/15(水) 14:30
現在は復旧しております。
◆原因
バックエンド実行環境の定期メンテナンスにより、サポート対象外となったNode.jsバージョンでスクリプトが実行できない状況が発生いたしました。ニフクラのスクリプト実行環境を最新のNode.js 24.0.0にアップグレードすることで復旧しております。
このたびは長期間にわたりご迷惑をお掛けしまして、大変申し訳ございませんでした。
今後ともStacaをよろしくお願いいたします。
〜 Stacaサポートチーム 〜
教訓
- 使用しているプラットフォームからのお知らせはよく読む
- アプリを修正してなくてもエラーログは毎日監視する
- 依存するランタイムのLTSサポート期間を定期的に確認する
- 本番環境では3ヶ月ごとにプラットフォームの更新情報をチェックする習慣をつける
しかし、アプリを何にも触ってないのに突然エラーが出るなんて怖いですね。
自業自得と言えばそれまでですが、ランタイムのバージョンサポート終了に伴う強制アップグレードは、アプリ開発者にとって常に課題です。クラウド環境では定期的なメンテナンスが避けられず、バージョン廃止のお知らせを見落とすと大変なことになります。
アプリの保守って、面倒っす。
ITエンジニアのキャリアアップを検討しているなら
【障害】すべてのリアルタイム通信がエラーになってしまった【アプリ保守は超面倒】 関連ページ
- 【個人スマホアプリ開発】公開しているアプリ<Staca>の紹介
- スマホアプリ開発で【monaca】を選んだ理由と実際に使ってみた感想
- 【アプリで稼ぎたい】個人開発のスマホアプリってどれくらい儲かるの?【無理ゲー】
- 【monaca】開発を効率化するために実践している4つのこと【Tips】
- 【monaca】アプリ公開前にこれだけはやっておこう!【あとで困ります】
- 【悲報】初めてアプリ課金が発生!喜んだのもつかの間【現実は厳しかった】
- 【障害】ローカルストレージの会員認証データが消えた【ごめんなさい】
- 【初心者向け】スマホアプリ開発の始め方【最短ルートでアプリ公開】
- 【祝】Stacaの会員数が5000人を突破しました【スマホアプリ開発】
- 【20代限定】未経験から3年で年収1000万の安定収入(+α)を得る方法【IT業界】
- 【monaca】AppTrackingTransparencyの実装方法【IDFA対応】
PR



