こんにちは、株式会社 Pentagon でアプリ開発をしている Kuwano です!
ユーザーからのエラー報告があり、原因を突き止めるのに一苦労したので、その経過と解決策を忘備録として残しておきます。
【こんな人に読んで欲しい】
Flutter アプリを開発しているエンジニア、特に VPN 環境下でアプリが動作しなくなった場合の原因と解決策を知りたい方。
【この記事を読むメリット】
VPN 環境下でアプリが動作しない原因を詳しく知ることができます。
Flutter の NTP ライブラリを使用したアプリ開発でエラーが発生した場合の解決策を詳しく知ることが出来ます。
【結論】
Flutter の NTP ライブラリで時間を取得する際、VPN 環境下ではエラーが発生することがあります。
この場合は、VPN 接続を解除するか、別の方法で時間情報を取得する必要があります。
前提知識
VPN とは
VPN(Virtual Private Network)とは、インターネット上に仮想的なプライベートネットワークを構築する技術です。
VPN は、インターネットを利用する際に、外部からの盗聴や改ざんなどを防ぐために使用されます。
また、企業内ネットワークへのリモートアクセスや、地域制限のあるコンテンツへのアクセスなどにも利用されます。
VPN は、通信データを暗号化し、トンネリング技術を用いてインターネット上で安全にデータをやり取りすることができます。
これにより、通信内容が第三者に漏れるリスクを軽減できます。
参考 VPN 接続とは?VPN の基本とメリット・デメリットを紹介
NTP とは
NTP(Network Time Protocol) とは、インターネットを介してコンピューター同士が時刻情報を交換し、
正確な時刻を同期するために使用されるプロトコルです。
このプロトコルは、時間サーバーからの情報を収集し、そこから得られた正確な時刻に基づいて各コンピューターの時計を自動的に調整します。
これにより、システム間での時間のズレが最小限に抑えられます。
参考 インターネット用語 1 分解説~ NTP とは~ - JPNIC
原因
こちらのライブラリを使用していました: ntp
アプリ内で正確な時間を取得するためにこのライブラリを利用していましたが、VPN の影響でアクセスが遮断されてしまったようです。
詳細な原因は不明ですが、ライブラリ内で使用されている PORT:123
へのアクセスが問題を引き起こしたと考えられます。
解決策
上に書いたように端末時間ではなく正確な時刻を取得するためにntp を使用していました。
こちらの問題は、時間を端末で取得するのではなく、サーバー側で処理することで解決しました。
まとめ
VPN 環境下では様々なエラーが発生する可能性があります。
特定の人でしか起こらないエラーであれば、VPN が原因かも??と疑ってみるのがいいのかもしれません。
おまけ
Flutterに関する知識を深めたい方には、『Flutterの特徴・メリット・デメリットを徹底解説』という記事がおすすめです。
この記事では、Flutter アプリ開発の基本から、Flutter とは何か、そして実際のFlutter アプリ 事例を通じて、その将来性やメリット、デメリットまで詳しく解説しています。
Flutterを使ったアプリ開発に興味がある方、またはその潜在的な可能性を理解したい方にとって、必見の内容となっています。
ぜひ一度ご覧ください。