micomia

Blog

技術記事

アプリの調子がおかしい6つの症状|原因の見立てと、自分で直せるか開発会社に頼むかの分かれ目

アプリの調子がおかしい6つの症状|原因の見立てと、自分で直せるか開発会社に頼むかの分かれ目

アプリに不具合が出たとき、運営している方がまず知りたいのは「何が起きているのか」「自分で直せるのか」「開発会社に頼むべきか」の3つです。

この記事では、ご相談の多い6つの症状を取り上げ、それぞれ何が起きている可能性が高いか、どこまでが運営する側で確認・対応できる範囲で、どこからが開発会社の領域なのかを開発会社が解説します。

なお、どの症状でも最初に押さえておきたい共通の視点があります。

それは「全利用者に起きているのか、一部だけか」「iPhoneかAndroidか、その両方か」「特定のアプリバージョンから起き始めたか」「直前にアプリの更新やサーバーの変更、管理画面の設定変更、契約や証明書の更新など、何か作業をしていないか」の4点です。

加えて、画面にエラーメッセージや番号(403、null など)が出ていれば、それは原因を絞る大きな手がかりになるので控えておいてください。この4点+エラー表示が分かるだけで、原因の範囲はぐっと狭まります。



1. ボタンを押した後に何も起こらない

送信・ログイン・購入・保存といったボタンをタップしても、画面が変わらず、処理も始まらず、押した手応えすらないといった症状です。

特定の1つのボタンだけのこともあれば、アプリ全体のボタンが効かないこともあります。

購入やログインなど売上や利用継続に直結するボタンで起きているなら緊急度は高く、めったに使わない補助的なボタンや一部の端末だけなら、影響範囲を見ながら落ち着いて対応できます。

見た目は「無反応」でも、裏側では何かが起きていることがほとんどです。

多いのは、実はボタンを押した後にサーバーへ問い合わせていて、その返事を待ったまま固まっているのに、画面には何の変化も出ていないケースもあります。

次に、画面の上に見えない層(透明なオーバーレイ)や消えないローディング表示が重なって、ボタンより手前でタップを吸い取ってしまっているケースです。

ほかにも、一度押すと二度押しを防ぐためにボタンを無効化する仕組みが、処理に失敗したときに元へ戻らず押せないまま固まる、押した瞬間に内部でエラーが起きて先の処理が動いていない、更新の際にボタンと実行内容の結び付けが外れている、といった原因が考えられます。

まず手元で確認したいのは、効かないのが特定のボタンだけか全体か、特定の端末やOS・バージョンに偏っていないか、通信しているときだけ起きるか、という点です。

あわせて管理画面があれば見て、その機能が非公開になっていたり、公開の条件(期間・在庫・権限など)で使えない設定になっていないかを確かめます。

設定間違いなら、元に戻すだけで直ることがあります。

ここで解決しない場合、タップを奪うオーバーレイの修正、二重送信防止の直し、ボタンと処理の結線の修正、通信・サーバー側で返事が返らない原因の調査といった、コードやサーバーに踏み込む対応が必要になり、これは開発会社の領域です。


2. 起動したら画面が真っ白

アプリを開くと真っ白(または真っ黒)のまま、ロゴもメニューも出てこない。

起動直後からずっと白いこともあれば、一瞬ロゴが出た後に白くなることもあります。

起動の段階で使えなくなっており、多くの場合すべての利用者に影響するため、緊急度は高い症状です。

アプリは起動するとまず、表示に必要なデータや設定をサーバーへ取りに行き、その結果を使って画面を組み立てます。

真っ白のもっとも多い原因は、この最初の問い合わせがうまくいっていないことです。

サーバーがエラーや「空(null)」を返している、サーバー自体が障害やメンテナンス、アクセス集中で応答できていない、といったケースが典型です。

また、サーバーと安全に通信するためのSSL証明書や独自ドメインの契約が切れると、そもそも接続できずに読み込みに失敗します。ほかに、接続先やAPIキーといった設定値が間違っている(更新作業の直後に起こりがちです)、起動時の処理でエラーが起きてそこから先に進めない、通信に失敗したときの代替表示が用意されておらず白いまま止まる、アプリ本体とサーバー側の版が食い違って受け取ったデータを解釈できない、なども考えられます。

まず手元で確認したいのは、全端末で起きているか、特定のバージョンから始まったか、そして白くなり始めた時期の前後で、アプリのリリース・サーバーの入れ替え・証明書やドメインの更新・契約の更新など何をしたか、という点です。

サーバーやドメイン、証明書、外部サービスの契約期限や支払い状況を確認し、失効や未払いが原因なら、更新や支払いで復旧することもあります。

一方で、起動処理やAPI・サーバーの調査、証明書や設定値の修正、バージョンの整合、通信失敗時に白画面で止まらないようにする作り込みは、開発会社に依頼する部分です。


3. プッシュ通知が表示されない

送ったはずの通知が届かない、一部の利用者にしか届かない、アプリを開くと中身は反映されているのに通知としては出てこないという症状です。

アプリ本体は使えていることが多く、緊急度は中程度ですが、再訪のきっかけを逃し続けるため、放置すると機会損失が積み上がります。

原因は端末側とアプリ・サーバー側のどちらにもあり得ます。

端末側でよくあるのは、そもそも通知が許可されていない、あるいはiPhoneの集中モードやAndroidの省電力・バッテリー最適化で抑えられているケースです。

アプリ・サーバー側では、通知を配信する仕組み(Appleの APNs、Googleの FCM)に使う証明書や認証情報が失効・設定ミスになっている、端末を識別する登録用のIDが期限切れや再インストールで変わってしまい届け先を見失っている、といった原因が典型例です。

Android 8以降で必要な「通知チャンネル」が正しく作られていない、通知の中身の形式や優先度の問題で音も表示もないサイレント扱いになっている、送信対象の絞り込みを誤っている、配信処理自体が止まっている、なども考えられます。

まず、手元の端末で通知設定がオンになっているか、集中モードやおやすみモードになっていないかを確認します。

そのうえで、届かないのが全員か一部か、iPhoneだけ・Androidだけかを切り分け、配信ツールや管理画面があれば送信履歴やエラー、到達率を見ます。

ここから先、APNsやFCMの証明書・認証情報の更新、登録IDを扱う処理の修正、通知チャンネルの実装、通知の中身の直し、配信基盤の調査といった対応は、開発会社に依頼する領域です。


4. 詳細ページでデータが表示されない(unexpected null error)

一覧から詳細ページを開いたのに、内容が表示されず空欄になる、あるいは「unexpected null」などのエラーが出てアプリが止まるといった症状です。

特定の1件だけで起きることもあれば、どの詳細を開いても起きることもあります。ページが空欄にとどまるだけなら中程度ですが、アプリが落ちてしまう場合は緊急度が上がります。


「unexpected null」は、平たく言えば「あるはずのデータが来ていない、または空だった」ことを、アプリがうまく想定できていないサインです。

もっとも多いのは、表示しようとしたデータがサーバーから「空(null)」や「見つかりません」で返っているケースで、そのデータが削除された・非公開になっている・閲覧権限がない、といった背景が考えられます。

ほかにも、あるはずの項目だけが空で返ってきて、その値がある前提で組まれた表示処理が止まる、紐づく別のデータが消えていてたどれない、アプリ本体とサーバー側の版が食い違って項目名や形が変わっている、管理画面でそのデータを非公開・削除した直後だった、なども考えられます。


まず「特定の1件だけか、全件か」を確かめます。1件だけなら、そのデータ側の問題が濃厚なので、管理画面でそのデータが存在し公開状態になっているか、直前に編集・削除・非公開化していないかを確認し、掛け違いなら戻します。

全件で起きるなら、データを渡す仕組みそのものの問題が疑われます。データが欠けていても落ちずに「表示できません」と出すような防御的な作り、サーバーからの返し方の修正、データ同士のつながりの整合の調査は、開発会社に依頼する部分です。


5. ボタンを押した後に403などが表示される

操作したときに「403」「Forbidden」「権限がありません」といった表示が出る症状です。

403は「アクセスは届いているけれど、その操作を許可されていない」という意味で、番号ごとに意味が違います(似たものに、401=ログインしていない扱い、429=短時間にアクセスしすぎ、500=サーバー側のエラー、があります)。全利用者で起きているなら緊急度は高めです。

いちばん疑わしいのは、そのユーザーの権限では許可されていない操作をしている、というケースです。

次に、サーバーやAPIに使う鍵・署名や、接続元の制限(許可ドメインやIP制限、WAFといったセキュリティの仕組み)に引っかかっている、外部サービスのAPIキーが失効した・プランや契約の変更でその機能が無効になった、といった原因が考えられます。

ログイン状態(本人確認のトークン)が切れている・送られていない場合もありますが、これは本来401で出ることが多く、APIによっては403になります。

加えて、サーバー側の権限判定の設定ミスも、更新直後に起こりがちです。

まず、全員に起きているのか、特定の権限のユーザーだけかを切り分けます。特定のロールだけなら管理画面の権限設定を、外部サービス絡みが疑わしければキーや契約の有効期限を確認します。直前にサーバーや権限、プラン、外部サービスの設定を変えていないかも重要な手がかりです。ここから先、認証や権限(認可)の調査、鍵・署名・許可ドメイン・IP制限・WAFの設定確認、サーバー側の権限判定の修正は、開発会社に依頼する領域になります。


6. 退会してもまだ使える

退会(アカウント削除)したはずのユーザーが、まだログインできる・データを見られる・機能を使える・課金が続いているといった症状です。

これはセキュリティや個人情報の保護、課金トラブル、さらには法令上のデータ削除義務にも関わるため、6つの中でも最優先で確認すべき、緊急度の高い症状です。

多くの場合、退会の処理が画面の見た目だけで終わっていて、サーバー側でアカウントを無効にしたりデータを消したりする処理が実際には走っていないことが原因です。

あるいは、ログイン状態を保つトークンやセッションが退会後も失効されず有効なまま残っている、端末に保存されたデータ(キャッシュ)で通信しない範囲は動いてしまう、退会(アカウント削除)とサブスク・課金の解約が別々の処理になっていて連動していない、「退会フラグを立てるだけ」で各機能がそのフラグを見ていない、といったケースも考えられます。

まず、退会後に実際に何ができてしまうのか(ログインできるのか、データが見えるのか、課金が続いているのか)を具体的に記録し、管理画面で退会したユーザーが本当に削除・無効化されているか、課金の解約が連動しているかを確認します。

ただし、この症状の本質的な対応「サーバー側でアカウントを無効にし、トークンやセッションを失効させ、データを削除または匿名化し、課金の解約と連動させ、キャッシュの扱いを見直す」は、開発会社に依頼すべき部分です。個人情報の保護という観点からも、早めの対応が望まれます。


相談するときに用意しておくと、話が早い

開発会社(または引き継ぎ先)に相談する際は、次がそろっていると原因の特定がぐっと速くなります。すべてが必要なわけではありませんが、手元にあるものを添えていただくだけで初動が変わります。


  • 症状のスクリーンショット、または操作から症状までの画面録画

  • 表示されたエラーメッセージ・番号(403、null など)の控え

  • 発生日時(いつから起きているか)

  • 対象の端末名・OS(iPhone/Android)とバージョン、アプリのバージョン番号

  • 再現手順(どの操作で起きるか、全員か一部か)

  • 直前に行った変更(アプリ更新・サーバー変更・設定変更・契約や支払いの更新)

  • ストアや外部サービスからの通知・審査メッセージの有無と文面

  • ソースコード・管理画面・サーバーへのアクセス権の有無(他社が開発したアプリの引き継ぎか)


症状が当てはまったら、状況の切り分けからご相談ください

ここまでの見立てで「自分の設定で直せそう」か「コードやサーバーの対応が必要そう」かの当たりが付けば、次の一手は決めやすくなります。

判断が付かないときも、症状と発生範囲、画面に出たエラーを教えていただければ、判断からお手伝いします。システム救急室のご案内をご覧のうえ、お問い合わせから「不具合の状況を相談したい」「他社が作ったアプリを引き継げるか確認したい」とご相談ください。

畑井駿佑

畑井駿佑

micomia株式会社の代表取締役です。 エンジニア、プロジェクトマネージャーを経験し、2024年にUI/UXにこだわった使いやすいシステム/アプリを開発するmicomia株式会社を設立しました。

関連記事

micomiaのセキュリティ対策 — お客様のアプリを守るために、私たちがすること
発注ガイド

micomiaのセキュリティ対策 — お客様のアプリを守るために、私たちがすること

micomiaが全開発案件に標準で組み込むセキュリティ対策を、スマホアプリ編・Web編に分けて解説します。App Check、二層防御、XSS・CSRF対策、鍵の管理方法など、専門用語も一つずつご説明します。

FlutterFlowでできないこと|開発会社が実例で解説する限界と回避策
発注ガイド

FlutterFlowでできないこと|開発会社が実例で解説する限界と回避策

FlutterFlowが苦手とするStripeのサブスク決済や帳票生成、セキュリティ・デザイン自由度の制約を、開発会社が実例つきで整理しました。どこで限界に当たり、どう回避してFlutterと使い分けるかの判断基準まで分かります。

AI駆動開発の注意点|開発会社が実践してわかった「速いけど危うい」落とし穴と対策
発注ガイド

AI駆動開発の注意点|開発会社が実践してわかった「速いけど危うい」落とし穴と対策

AI駆動開発は速さの裏で落とし穴も増えます。曖昧な指示でかえって遅くなる、セキュリティや依存関係の見落とし、コードの一貫性の崩れといった注意点と対策を、非エンジニアが陥りやすい権限・データ保存の失敗もあわせて解説します。

ECサイトをシステム会社に発注するなら「要件リスト」を先に揃えるべき!|10領域の全項目チェックリスト
発注ガイド

ECサイトをシステム会社に発注するなら「要件リスト」を先に揃えるべき!|10領域の全項目チェックリスト

ECサイトをシステム会社へ発注する前に要件を整理しないと、見積もりのズレや追加費用が生じやすくなります。決済・配送・会員管理・管理画面・外部連携など10領域の全項目をチェックリスト形式でまとめ、発注前に押さえるべき要件が分かります。

アプリ開発を依頼するには?費用・流れ・依頼先の選び方を開発会社が解説|micomia
発注ガイド

アプリ開発を依頼するには?費用・流れ・依頼先の選び方を開発会社が解説|micomia

アプリ開発を依頼するときの流れを、要件整理から開発会社選定・見積もり比較・契約・開発・リリースまでの6ステップで整理しました。費用の目安やフリーランスと開発会社の違い、依頼先の具体的な選び方まで開発会社が分かりやすく解説します。

アプリ開発費用の相場と内訳|種類別の目安・予算を抑えるコツ・依頼前の整理ポイントを開発会社が解説
発注ガイド

アプリ開発費用の相場と内訳|種類別の目安・予算を抑えるコツ・依頼前の整理ポイントを開発会社が解説

アプリ開発費用の相場はSNS・マッチング・業務系など種類で大きく変わります。ノーコード・MVP・フルスクラッチそれぞれの費用目安と内訳、予算を抑えるコツや依頼前に整理しておきたいポイントを開発会社が分かりやすく解説します。

自分をコピーしたAIを作ってみた|ローカルLLMで自分の業務をそのまま代行する
AI

自分をコピーしたAIを作ってみた|ローカルLLMで自分の業務をそのまま代行する

自分の知識をAIにしたいと思い畑井駿佑AIを作成しました。 これはもっとアプリ・システム開発について相談しやすくするために開発しました。 AIの回答ってまだアプリ・システム開発の経験に反すものが多いので、その弱点を埋めるようなモデル作りを心がけて設計・実装・学習させました。

【社長の知識をAIに】園芸の知識を学習したAI社長を開発しました。
AI

【社長の知識をAIに】園芸の知識を学習したAI社長を開発しました。

YouTube動画159本の知識をベースに社長AIを構築しました。 利用ケースなども考慮しながらAIモデルの設計・開発を行いましたのでその開発記録をご紹介します。

人工衛星×AIで土地の変化を検出するアプリを開発|実際のシステムの画面も公開
AI

人工衛星×AIで土地の変化を検出するアプリを開発|実際のシステムの画面も公開

衛星データ(Sentinel-2)を活用して、土地の変化や不正利用・無許可造成を広域で検知・監視する方法を、企業・自治体向けにわかりやすく解説します。仕組みや活用場面、導入時の注意点に加え、micomiaが開発する土地利用の異常監視システムの実例もご紹介します。

AI駆動開発とは?プロンプトだけでアプリを作る方法との違いを開発会社が解説
開発用語集

AI駆動開発とは?プロンプトだけでアプリを作る方法との違いを開発会社が解説

AI駆動開発とは、AIにアプリ開発を丸投げする方法ではありません。エンジニアが設計と品質に責任を持ち、AIで実装、テスト、レビューを効率化する開発方法です。プロンプト生成型との違いや、品質と安全性を高める考え方を初心者向けに解説します。

グリラボとは?写真から植物や庭の悩みを相談できるAI園芸サポートアプリ
その他

グリラボとは?写真から植物や庭の悩みを相談できるAI園芸サポートアプリ

グリラボは、植物や庭の写真から、種類・状態・病害虫・剪定・雑草対策などをAIに相談できる園芸アプリです。限定・お値打ちな植物を購入できるアウトレットショップも利用できます。

植物専門SNS「でぃぐりーん」開発記録|初心者が最初の一鉢を買えない課題をアプリで解決した方法
開発ストーリー

植物専門SNS「でぃぐりーん」開発記録|初心者が最初の一鉢を買えない課題をアプリで解決した方法

植物初心者の「どれを買えばいいか分からない」という悩みを解決するために開発した、植物専門SNS『でぃぐりーん』の開発記録です。専門SNSを作る前の現場体験、MVPでのスピード開発、位置情報を使ったUX、AI機能まで全体をまとめました。

建材特化フリマアプリ「Mate-Re:」開発記録|業界特化設計・決済・UI/UXの裏側
開発ストーリー

建材特化フリマアプリ「Mate-Re:」開発記録|業界特化設計・決済・UI/UXの裏側

建設現場で廃材が捨てられてしまう課題から生まれた、建材特化フリマアプリ『Mate-Re:』の開発記録です。業界特化の設計思想や現場目線のUI/UX、Stripe Connectを使った決済実装、循環経済を意識した設計までまとめました。

医療従事者向けSNS「メディカルサークル」開発記録|信頼感のUI設計・RevenueCat課金・コミュニティ安全設計の裏側
開発ストーリー

医療従事者向けSNS「メディカルサークル」開発記録|信頼感のUI設計・RevenueCat課金・コミュニティ安全設計の裏側

医療従事者専用SNS『メディカルサークル』の開発記録です。医療情報を安全に共有するための設計、RevenueCatを使った課金実装、コミュニティの安全設計、専門家認証機能まで、信頼感を重視した開発の裏側を解説します。

建設現場向け日本語学習アプリ「ゲンゴー」開発記録|外国人技能実習生・多言語対応・4択クイズ設計の裏側
開発ストーリー

建設現場向け日本語学習アプリ「ゲンゴー」開発記録|外国人技能実習生・多言語対応・4択クイズ設計の裏側

建設現場で働く外国人技能実習生に向けた日本語学習アプリ『ゲンゴー』の開発記録です。多言語対応や4択クイズの設計、建設業界に特化した学習コンテンツの設計思想まで、ニッチ特化アプリを作る裏側を解説します。

園芸サポートアプリ「グリラボ」開発記録|初心者向けUI・育成ガイド・楽しさ設計の裏側
開発ストーリー

園芸サポートアプリ「グリラボ」開発記録|初心者向けUI・育成ガイド・楽しさ設計の裏側

植物初心者が「続けられない」という課題を解決するために開発した、園芸サポートアプリ『グリラボ』の開発記録です。文字を詰め込まないUI設計、育成ガイド、ゲーミフィケーション、AI機能の役割分担まで全体をまとめました。

アート特化SNSアプリ「Artl」開発記録|作品ファースト設計・「鑑賞しました」・トリミングしない展示の裏側
開発ストーリー

アート特化SNSアプリ「Artl」開発記録|作品ファースト設計・「鑑賞しました」・トリミングしない展示の裏側

アート特化SNS『Artl』の開発記録です。作品を主役に置く『作品ファースト』の設計や、クリエイターが使いやすい投稿体験の実装、Firebase連携、コミュニティ設計の裏側を、開発者の視点から解説します。

AI野球コーチアプリ「NEOLAB AI」開発記録|スポーツ×AI・チャットUI・個別最適化の設計思想
開発ストーリー

AI野球コーチアプリ「NEOLAB AI」開発記録|スポーツ×AI・チャットUI・個別最適化の設計思想

AI野球コーチアプリ『NEOLAB AI』の開発記録です。スポーツ×AIという組み合わせや、チャットUIで個別指導を届ける仕組み、一人ひとりに最適化する設計思想まで、開発の背景と技術的な工夫を開発者が解説します。

ノーコードでアプリ開発はどこまでできる?Adalo→FlutterFlow移行の実例で限界と本番化を解説
ノーコード・FlutterFlow

ノーコードでアプリ開発はどこまでできる?Adalo→FlutterFlow移行の実例で限界と本番化を解説

ノーコードアプリ開発のリアルを開発会社が解説します。Adalo・Glideなど無料ツールの特徴と限界から、FlutterFlowへ移行した実例まで紹介し、どこまで作れてどこで限界を感じるのかを、実際の本番開発の経験をもとにお伝えします。