開発者が貧弱なインターネット接続での実体験を共有し、設計ソリューションを議論

BigGo 編集部
開発者が貧弱なインターネット接続での実体験を共有し、設計ソリューションを議論

技術コミュニティでは、貧弱なインターネット接続が実際のユーザーにどのような影響を与えるかについて活発に議論されており、開発者が不安定な接続環境を想定した設計を行うべき理由を浮き彫りにする個人的な体験が共有されている。最近のデータでは米国の世帯の97%がインターネットアクセスを持っているとされているが、低速または不安定な接続でアプリケーションを使用する現実は、多くの開発者が開発中に遭遇することのない重大なユーザビリティ問題を明らかにしている。

US インターネットアクセス統計(2021年)

  • インターネットアクセス全般:学生世帯の97.1%
  • スマートフォンのみのアクセス:全学生の4.5%
  • インターネットアクセスなし:全学生の2.9%
  • 低所得世帯(最低四分位):94.4%がインターネットアクセスを有し、9.8%がスマートフォンのみ

人口密集地域でのモバイルネットワークが予期しない課題を生む

都市部では、地方の通信圏外問題を超えた独特の接続問題が発生している。地下鉄システムや停電時などの混雑した場所でのモバイルインターネットは、ネットワークの混雑により実質的に使用不可能になることがある。ユーザーは、技術的にはオンラインであっても機能的な接続が保証されるわけではないと報告しており、停電時に近隣全体が WiFi からモバイルデータに切り替わることで、携帯電話ネットワークが完全に使用不可能になる状況について説明している。これにより、安定した接続では完璧に動作するアプリが、ユーザーが最も必要とする時にイライラするものになったり、使用不可能になったりする状況が生まれている。

高遅延接続が貧弱なアプリケーション設計を露呈

航空機内 WiFi や衛星接続により、多くの現代のアプリケーションがクライアントとサーバー間の複数回のラウンドトリップ通信に大きく依存していることが明らかになっている。静止衛星接続では遅延が600ミリ秒以上に達するため、10ミリ秒の遅延でスムーズに動作するアプリケーションがほぼ使用不可能になる。低遅延環境で作業する開発者は、これらの問題を完全に見落とすことが多く、操作を効率的にバッチ処理する代わりに、数十回の連続的なネットワークリクエストを実行するアプリケーションを作成してしまう。

デザイン作業に推奨される最低限のインターネット速度

  • ダウンロード:25 Mbps
  • アップロード:3 Mbps
  • 接続タイプ:地上回線(衛星回線以外)
  • ビデオ通話要件:双方向で1-4 Mbps( Zoom )

テストツールが開発者に実世界の条件を体験させる

開発コミュニティでは、貧弱なネットワーク条件下でアプリケーションをテストするための実用的なソリューションが特定されている。 toxiproxy やブラウザベースのネットワーク制限などのツールにより、開発者は帯域幅制限、遅延変動、パケット損失をシミュレートできる。一部の開発者はさらに進んで、128kbpsに制限された接続で古いハードウェア上でアプリケーションをテストし、幅広い条件での基本的なユーザビリティを確保している。

「私は常に様々なデバイスでウェブサイトをテストしています。 Windows XP を実行する古い PC 、 High Sierra を実行する2011年の Mac 、2016年の Android 携帯電話、 Lynx テキストブラウザを使用する Linux マシンなどで、128kbpsに制限された接続でサイトの読み込みをテストしています。」

開発者向けネットワークテストツール

  • toxiproxy: 帯域幅制限、レイテンシ、パケットロスをシミュレート
  • ブラウザ開発者ツール: 内蔵のネットワークスロットリングオプション
  • tc-netem: Linux ネットワークエミュレーションツール
  • PageSpeed Insights: ウェブパフォーマンステスト(pagespeed.web.dev)

オフラインファースト設計原則が注目を集める

多くの開発者が、貧弱な接続を例外ではなくデフォルトとして想定する設計原則を採用している。これには、より少ないラウンドトリップを必要とする API の設計、積極的なキャッシュ戦略の実装、一時的な切断中でもアプリケーションが機能することの確保が含まれる。このアプローチは、優れたインターネット接続を持つユーザーに対してもより応答性の高いアプリケーションを作成することで、すべてのユーザーに利益をもたらす。

この議論は、開発中に行われる接続性の前提が実世界の使用パターンと一致しないことが多いという認識の高まりを反映している。より多くの開発者が貧弱な接続での体験やテスト戦略を共有するにつれて、コミュニティは多様なネットワーク条件で確実に動作するアプリケーションを作成するためのより良い実践を構築している。

参考: Should we design for iffy internet?