社内調査の手詰まりをどう打開したか。デバッグ用SDKでお客様と連携し解決するまで

こんにちは。App SDK Unitでエンジニアをやっている村橋です。Reproでアプリに導入して動作するSDKの開発・保守を担当しています。

今回は、 「特定のお客様の環境でのみ発生する原因不明の不具合」 を、お客様との密な連携によって解決まで導いた記録をお話しします。

我々のようなSDKを提供するサービスにおいて、SDKが正常に動作しないことはお客様のビジネスを止めてしまう「死活問題」であり、一刻も早い解決が求められます。しかし今回直面したのは、クラッシュやエラーメッセージが一切発生しないという、社内調査だけでは到底辿り着けない難題でした。

技術的な正解だけでは解決できなかったこの問題に対し、どのように行動し、何を得たのか。発端となったYouTube動画の仕様変更から、解決の鍵となった「お客様との協力」までを振り返ります。

はじめに、今回の調査と解決に多大なるご協力をいただいたお客様に、この場を借りて深く感謝申し上げます。

発端: YouTubeの仕様変更による不具合の発生

Reproのアプリ内メッセージ機能ではHTMLを利用してYouTube動画を埋め込むことができますが、ある時から「動画が再生されない」という不具合が発生しました。

調査の結果、2025年7月に行われたYouTube側の仕様変更により、埋め込みプレーヤーにおいて Referer ヘッダーの設定が必須化されたこと(必要な最低限の機能の改訂)が原因だと判明しました。

SDKを修正後、特定のお客様にだけアプリ内メッセージが表示されなくなる

YouTube側の指定通り、SDK側で適切なRefererを付与するよう修正し、リリースしましたが、今度は修正したSDKを導入したお客様から、iOSでアプリ内メッセージが表示されなくなるという報告がありました。

当初は不具合を疑い、お客様と同じメッセージフォーマット、プラットフォーム、OSバージョンを揃えて社内での再現を試みました。しかし、 社内の検証環境では正常に表示され、クラッシュやエラーログは一切出力されません。
社内調査だけではこれ以上の進展が望めない、完全な手詰まり状態に陥りました。

意を決して、お客様へ直接のご協力をお願いする

社内での調査は完全な手詰まりとなり、次に打てる手も尽きてしまいました。しかし、このまま手をこまねいていては、お客様に価値を提供できなくなってしまいます。

そこで私たちは、これまでにApp SDK Unitとして前例のなかったアプローチである 「お客様への直接的な調査協力の依頼」 することに決めました。初めての試みに「本当にうまく進められるだろうか」と不安もありましたが、担当の社内メンバーに相談し、お客様と直接コンタクトを取る場を設けていただきました。

結果、お客様には快くご承諾いただき、オンラインMTGで実際の挙動を拝見できることになりました(改めまして、ご協力いただいたお客様に深く感謝申し上げます)。

その際、お客様の貴重なお時間を極力奪わないよう、 「詳細なログを出力する特製のデバッグSDK を事前に準備しました。これをテスト環境に導入していただき、その場でログを確認する計画を立てました。

原因判明:App-Bound Domainsによる通信遮断

MTG当日、画面越しに「アプリ内メッセージが表示されない」様子を確認させていただきました。続いてデバッグSDKをビルドしていただくと、通常のSDKでは決して表に出ないログが流れてきました。

そこに記録されていた原因は、iOSのセキュリティ機能である App-Bound Domains による制約でした。 お客様の環境では App-Bound Domains が有効化されており、その許可リスト(Allow List)に、今回Refererとして設定したドメインが含まれていませんでした。そのため、WebViewが通信を遮断し、エラーも出さずに処理を終了させていたのです。

原因さえ分かれば、修正方針を立てられます。RefererのURLを任意に変更できるオプションをSDKに追加してリリースしました。さらに、同様の問題に直面する他のお客様のためにドキュメントへの追記も行うことができました。

解決と学び

今回の件で得た最大の学びは、 「お客様と協力し、共に解決を目指すプロセスの重要性」 です。

お客様ごとに環境が異なるのは当然であり、すべての環境を社内で完璧に再現することには限界があります。 行き詰まったとき、机上の調査だけに固執せず、お客様の懐に飛び込んで一緒に画面を見る。それによって、単なる再現テストでは見つけられなかった「環境の微細な差分」や「実際の挙動」が明確になりました。これは時間をかけるだけでは決して得られない情報でした。

また、 エンジニア同士が直接言葉を交わすことの意義 も再確認しました。社外の勉強会で技術的な知見を得るのと同じように、お客様との対話の中にこそ、開発のヒントとなるリアルな知見が詰まっているのだと実感しました。

最後に

「お客様の環境だけで起きている問題」は、環境依存の問題の可能性があります。ですが、それをそのまま放置することは、お客様へのサービス提供を放棄することであり、ひいては私たちの掲げる 「プラットフォームを問わず信頼性の高いSDKを開発し続ける」 というミッションに背くことと同義です。

正解が見えない時こそ、恐れずお客様に協力を仰ぎ、全力で泥臭く解決する。これからもそんな姿勢で開発を続けていきます。

App SDK Unitでは、安心してSDKを導入してもらえることを責務として、日々の業務に取り組んでいます。

WE ARE HIRING!

Reproではエンジニアを募集しています。App SDK UnitではiOS/Androidはもちろんのこと、Flutter/React Native/Unity/Cordova/Cocos2d-x向けのSDKを提供しています。多様な言語や環境で開発をすることに興味がありましたら、ぜひお話ししましょう。ご連絡をお待ちしております。