南極でのインターネット利用体験
- 南極で14か月間、制限された衛星リンクを通じてインターネットに接続していた
- マクマード基地では約1,000人が数十Mbpsの帯域を共有
- 2023年10月時点で、南極点では1日に数時間しかインターネット接続が利用できなかった
- 衛星接続のため高い遅延時間(約750ミリ秒)が発生
低速インターネット環境におけるWebおよびアプリのエンジニアリング上の問題
- 多くのWebアプリは低速インターネット環境を考慮していない。
- 例えば、あるアプリは20MBのJavaScriptを読み込まなければ動作しなかった。
- 低速インターネット環境でアプリが正しく動作しないと、ユーザーは大きな不便を被る。
主な問題と解決策
ハードコードされたタイムアウトとチャンクサイズ
- ハードコードされたタイムアウトとチャンクサイズは、低速インターネット環境で大きな問題を引き起こす。
- 解決策:
- データが流れているならそのまま継続し、UIで進行状況を表示する。
- HTTPS呼び出しが失敗した場合は、より長いタイムアウトで再試行する。
- 大きなデータを一度に送信せず、小さなチャンクに分けて送信する。
- 問題発生時にはDNS、ICMP、HTTPなどを通じて原因を診断する。
例 1 - アプリのメタデータダウンロード
- あるデスクトップアプリは、ハードコードされたタイムアウトのためメタデータのダウンロードに失敗した。
- 解決策:
- 段階的に長いタイムアウトで再試行する。
- キャッシュ済みデータを使うか、デフォルト値を使用する。
- ユーザーが手動でデータをダウンロードできる方法を提供する。
例 2 - チャットアプリ
- あるチャットアプリはWebSocket初期化に10秒のタイムアウトを使って失敗した。
- 一方で、別のチャットアプリはさまざまなネットワーク条件にうまく対応した。
- 解決策:
- タイムアウトを動的に調整し、失敗時には賢く再試行する。
- 現在のネットワーク状態を明確に表示する。
例 3 - 段階的な送信
- ブログ投稿ツールは小さなチャンクでデータを送信し、失敗時には再開する。
- 別の商用プラットフォームは大きなファイルを一度に送ろうとして失敗した。
ユーザー向けダウンロード機能の提供
- アプリ内ダウンロード機能が失敗した場合、ユーザーが直接ダウンロードできるリンクを提供する。
- ユーザーはファイルを一度ダウンロードして複数のデバイスで共有できる。
- ユーザーがダウンロードを管理できる柔軟性を提供する。
例 1 - macOSアップデート
- macOSアップデートは、大きなファイルサイズと不完全なキャッシュ機能のため問題を引き起こす。
- 解決策:
- ダウンロードリンクを提供し、ユーザーが直接ダウンロードできるようにする。
- ダウンロードツールに一時停止/再開機能を追加する。
- 必要なすべてのファイルを含む完全なインストーラーを提供する。
例 2 - Samsung AndroidスマートフォンのOSアップデート
- Samsung AndroidスマートフォンのOSアップデートは、一時停止/再開機能がなく失敗する。
- 解決策:
- ダウンロードツールに一時停止/再開機能を追加する。
- ユーザーが直接ファイルをダウンロードできるリンクを提供する。
例 3 - 小規模アプリの自動アップデート
- 小規模なデスクトップアプリの自動アップデートは、一時停止/キャンセルボタンがなく問題を引き起こす。
- 解決策:
- ダウンロードツールに一時停止/キャンセルボタンを追加する。
GN⁺の見解
- 低速インターネット環境への配慮: 多くのアプリは低速インターネット環境を考慮しておらず、ユーザーは大きな不便を被る。これは特に遠隔地や海上環境で重要な問題である。
- ユーザー体験の改善: アプリ開発者はさまざまなネットワーク条件を考慮して、ユーザー体験を改善する必要がある。これはユーザー満足度を高め、アプリの信頼性を向上させる。
- 技術的な解決策: タイムアウト調整、チャンク送信、ダウンロード再開などの技術的な解決策によって問題を解決できる。
- 他製品の検討: 低速インターネット環境でうまく動作するアプリを探すなら、競合製品を比較してみるのもよい方法である。例えば、あるチャットアプリが低速環境でよりよく動作する場合がある。
- 技術導入時の考慮事項: 新しい技術を導入する際には、ネットワーク条件を十分に考慮する必要がある。これは特に遠隔地や制約の大きい環境で重要な要素である。
1件のコメント
Hacker Newsのコメント
中国のインターネット環境: 中国のインターネット環境は不安定で、VPNも制限されている。開発者は2005年に立ち返って、より効率的なWebアプリを作る必要がある。
オーストラリアとロンドンのネットワーク問題: オーストラリアやロンドンの地下鉄ではネットワークが頻繁に途切れるが、ほとんどのアプリはそれをうまく処理できない。WhatsAppは例外的によく動作する。
リモートデスクトップ利用の提案: リモートデスクトップを使えば、より良い体験ができるのではないかと気になっている。ネットワーク条件が悪い状況でのVNC/Windows Remote Desktopの性能は不確かだ。
遅いインターネットの問題: 遅いインターネットでは、多くのWebサイトがまともに動作しない。テキストだけのページでさえ読み込みが遅い。静的サイトジェネレーターへの移行が、生産性向上に大いに役立った。
ローカルファーストのソフトウェア: ローカルファーストのソフトウェアが必要だ。インターネット本来の目的に合っており、データの所有権も維持できる。
ブログと帯域幅の問題: ブログの執筆者が帯域幅を大きく消費するため、他の人たちが不満を抱く。だが、PR価値があるため優先権を与えられている。
ネットワークハックの経験: さまざまなネットワーク環境で、NNCPを使ってデータをチャンクに分割して送信する方法が提案されている。NNCPは信頼できるデータ転送を保証する。
遅いネットワーク環境への配慮が必要: 多くの人は高速インターネットにアクセスできない。遅いネットワーク環境でもうまく動作するアプリを開発すべきだ。
南太平洋での経験: Starlinkの高い消費電力のため現地のSIMカードを使ったが、EDGE(2G)ネットワークは非常に遅い。ソフトウェアテストには低速・高遅延の接続を含めるべきだ。
船舶でのインターネット問題の解決: 船舶でインターネットを効率的に使うため、DNSクエリを遮断し、ユーザーセッションを制限し、帯域幅を公平に分配するといった方法を用いている。