「アプリが動きません」という問い合わせだけでは、同じ状態を再現できません。一方で、最初から長い技術項目を並べると、ユーザーが送信を諦める原因になります。
フォームでは、アプリが把握している環境情報を自動で渡し、ユーザーには問題が起きるまでの操作を説明してもらいます。診断ログや追加の添付は、最初の情報で切り分けられない場合に求めます。
最初に集める情報を三つに分ける
不具合調査に使う情報は、環境、現象、再現手順の三つに分けると不足を見つけやすくなります。
| 区分 | 集める情報 | 取得方法 |
|---|---|---|
| 環境 | アプリバージョン、ビルド、OS、端末、言語 | 可能な範囲でアプリから自動送信する |
| 現象 | 実際に起きたこと、期待していた結果、発生日時 | ユーザーが本文へ入力する |
| 再現手順 | 発生直前からの操作、頻度、再現条件 | 短い設問で順番に入力してもらう |
Appleのクラッシュレポート分析資料でも、アプリのバージョン、OS、端末モデルは、問題が特定の環境に限られるかを調べる材料として挙げられています。
本文だけを詳しくしても、環境が分からなければ切り分けに時間がかかります。反対に、端末情報だけがあっても、どの操作で問題が起きたかは分かりません。二種類を同じ問い合わせへ結び付けることが出発点です。
環境情報はユーザーに調べさせない
アプリのバージョンやOSは、ユーザー自身に設定画面を探して入力してもらうより、アプリ内の問い合わせリンクから渡す方が正確です。
最低限の候補は次の通りです。
- アプリの表示バージョンとビルド番号
- iOS、Androidなどのプラットフォーム
- OSのバージョン
- 端末モデル
- アプリで使用している言語
すべての情報を無条件に送る必要はありません。調査に使わない値は収集せず、アカウント識別子が必要なら生のIDではなく、用途を限定したハッシュ値などを検討します。
問い合わせページを通常のブラウザから開く場合は、自動取得できない項目があります。そのときも、自由入力ではなく選択肢や確認方法を示し、分からない場合は空欄のまま送れるようにします。
再現手順は質問を分解する
「詳しく教えてください」という一つの入力欄では、どこまで書けばよいか伝わりません。次の順番をフォームの説明へ含めます。
- 問題が起きる直前に開いていた画面
- タップ、入力、選択など行った操作
- 実際に表示された内容や動作
- 本来どうなると考えていたか
- 毎回起きるか、特定の条件だけか
たとえば「保存できません」ではなく、「設定画面で通知時刻を変更し、保存を押すと読み込み表示のまま戻らない。アプリを再起動しても毎回起きる」のように、操作と結果を分けて受け取ります。
Androidのバグレポート取得ガイドでも、端末ログやスタックトレースなどの診断情報に加えて、再現手順をレポートへ添えられると説明しています。ログと人が行った操作は、どちらか一方で置き換えるものではありません。
不具合の種類で追加項目を変える
共通フォームへすべての設問を常時表示する代わりに、問い合わせ種別に応じて追加情報を案内します。
| 不具合の種類 | 追加で役立つ情報 | 公開フォームで避ける情報 |
|---|---|---|
| クラッシュ・フリーズ | 発生時刻、直前の画面、再現頻度 | 未確認の巨大なログ全文 |
| 表示崩れ | スクリーンショット、文字サイズ、画面向き | 通知や写真に写った個人情報 |
| 通知が届かない | 通知設定、発生時刻、アプリの状態 | 認証トークン、端末の完全な識別子 |
| 同期・保存の問題 | 最後に成功した操作、通信状態 | パスワード、秘密鍵 |
| 課金・アカウント | 取引を特定できる安全な参照情報 | カード番号、ワンタイムコード |
質問項目を増やす前に、その回答で次の調査行動が変わるかを確認してください。使い道を説明できない項目は削ります。
添付と診断ログは二段階目にする
クラッシュの原因を調べるとき、完全な診断情報が必要になる場合があります。Appleのクラッシュレポートと診断ログの取得資料は、配布後の問題に対してクラッシュレポートや端末ログを集める方法を案内しています。同時に、共有前に機密情報を確認して伏せるよう注意しています。
Google PlayのクラッシュとANRの確認方法では、同じ原因と考えられる問題がクラスタ化され、端末情報、詳細、Logcat、動画などを確認できる場合があります。問い合わせへ届いた発生時刻と環境情報があれば、Play Console側のクラスタと照合しやすくなります。
最初のフォームではスクリーンショットや短い動画までに留め、クラッシュログが必要だと判断した後で、安全な送付方法と伏せる情報を個別に案内する運用も選べます。
画像やログには、メールアドレス、通知内容、ファイル名、位置情報、認証情報が含まれることがあります。収集前に目的を伝え、不要な部分を伏せる方法を案内してください。
IndieFormで環境情報と本文を一緒に受け取る
IndieFormは、アプリ内から問い合わせフォームを開くときに、バージョン、ビルド、プラットフォーム、OS、端末、言語などをURLへ付けて渡せます。ユーザーは発生した操作と結果の説明に集中でき、開発者は環境情報を同じ問い合わせ画面で確認できます。
これはクラッシュログを自動解析する機能ではありません。まず環境と再現手順から対象を絞り、必要ならストアの診断情報や追加ログを確認する流れです。アプリ固有の状態を追加で渡す場合も、個人情報を含めず、問題の切り分けに使う値だけにします。
Googleフォームなど既存の受付方法との違いは、アプリの問い合わせにGoogleフォームを使うときの問題で比較しています。
送信テストで調査できるか確認する
フォームを公開したら、自分で一件送信し、届いた情報だけで調査の入口に立てるかを確認します。
- 問い合わせがどのアプリのものか分かる
- バージョン、OS、端末を本文と対応付けられる
- 発生前の操作と実際の結果を読み取れる
- 返信先が分かる
- 不要な個人情報を収集していない
不足があれば設問を増やす前に、アプリ側から自動で渡せないか検討します。ユーザーにしか分からない現象を言葉で受け取り、アプリが知っている環境は機械的に添える構成が、入力負担と調査可能性を両立しやすい形です。