今回作ったアプリはこちらです。
アプリを公開したあと、知り合いに使ってもらったときのことです。
「LINE通知が来ないよ」
その一言を聞いた瞬間、頭が真っ白になりました。
私が作っている「爆撃リマインダー」は、学校や園からもらったプリントを撮影すると、AIが持ち物や提出物を読み取り、設定した時間にLINEへ知らせるアプリです。いちいちアプリを開いて確認しなくても、忘れたころに向こうから通知がやってくる。その受け身の体験が、このアプリのいちばん大事な部分です。
つまり、LINE通知が届かなければ、アプリの中心が動いていないのと同じでした。
自分のスマホでは動いていた
開発中、私のiPhoneには通知が届いていました。ボタンを押すとLINEに持ち物一覧が届き、決めた時間の通知も動いている。だから、仕組みは完成したと思い込んでいました。
ところが、Androidの内部テストをお願いした知り合いから「通知が来ない」と連絡がありました。最初はAndroid特有の問題を疑いました。ログイン後の戻り先がおかしいのか、端末の通知設定なのか、通信環境なのか。ひとつずつ確認しても、原因が見つかりません。
その後、別の知り合いのiPhoneでも試してもらいました。結果は同じ。画面にはLINE送信APIの「400」というエラーが表示されました。
ここでようやく、端末ではなくLINE側の設定が怪しいと気づきました。
原因は「友だち追加」までつながっていなかったこと
LINEログインが成功すると、必要な設定もすべて終わったように見えます。でも、LINEログインと、LINE公式アカウントから通知を送る仕組みは別です。
ユーザーがLINEログインできても、通知を送る公式アカウントが友だち追加されていなければ、メッセージは届きません。
私のアカウントで動いていたのは、開発中に公式アカウントをすでに友だち追加していたからでした。初めて使う人が通る道を、自分では通っていなかったのです。
LINE Developersの設定を確認すると、LINE Loginチャンネルの「友だち追加オプション」に、爆撃リマインダーのMessaging APIが正しく登録されていませんでした。ログインは成功するのに、友だち追加画面は出ない。そのまま通知ボタンを押すと、送信先として受け付けられず400エラーになる、という流れでした。
設定だけでなく、コードも見直した
友だち追加オプションへMessaging APIを登録し、ログイン時の認証URLには、友だち追加を促す設定を加えました。また、一度ログインを許可した人でも必要な確認画面が省略されないように調整しました。
さらに、ログイン後に「本当に公式アカウントと友だちになっているか」をLINEのAPIで確認する処理も追加しました。未追加なら、ただ「送信に失敗しました」と出すのではなく、何を確認すればいいのかを画面で伝えるようにしました。
修正後、もう一度知り合いに試してもらいました。
今度は友だち追加ができ、爆撃通知も無事に届きました。画面の向こうで通知が届いたと聞いたときは、本当にほっとしました。
リリース後まで気づかなかった恥ずかしさ
正直に言うと、かなり恥ずかしかったです。
通知が特徴のアプリなのに、その通知が初めての人には届かない状態で公開していました。自分では何度も試したつもりでしたが、「自分のアカウントで成功すること」しか確認できていませんでした。
ただ、今回の失敗で、開発の難しさを改めて実感しました。コードが正しく動くだけでは足りません。外部サービスの管理画面、チャンネル同士の関係、ユーザーが初めて使うときの状態まで、全部がつながって初めて機能になります。
私はエンジニアではなく、病院で働く放射線技師です。わからないことを調べながら、少しずつアプリを作ってきました。だから失敗は避けきれません。でも、失敗したときに原因を隠さず、次に同じことが起きにくい形へ直すことはできます。
これからは「初めて使う人」に試してもらう
今回から、確認項目を増やしました。
開発者とは別のLINEアカウントで試す
iPhoneとAndroidの両方で試す
友だち未追加、追加済み、ブロック中を分けて確認する
エラー番号だけでなく、ユーザーが次にすることを表示する
リリース前に知り合いへ一連の操作をお願いする
作っている本人には見えない穴があります。今回、知り合いに試してもらわなければ、まだ気づいていなかったかもしれません。
恥ずかしい失敗でしたが、アプリは少しだけ強くなりました。これからも、子育て中の「覚えておかなければ」を少しでも減らせるように、実際に使ってもらいながら直していこうと思います。
ぜひ、皆様にも使っていただき、エンジニアの皆様にご意見いただけると大変助かります。
よろしくお願いいたします。


