メインコンテンツまでスキップ

コラム: 光は遅い

はじめに

「光の速度」と聞くと、とてつもなく速いイメージがあります。しかし、グローバルなシステムを設計する際、光の速度は物理的な制約として立ちはだかります。


光の速度と距離

┌─────────────────────────────────────────────────────────────────────┐
│ 光の速度 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 真空中の光速: 約 300,000 km/秒 │
│ │
│ 光ファイバー中: 約 200,000 km/秒 │
│ (屈折率の影響で約2/3に低下) │
│ │
│ 1ミリ秒(1ms)で光が進む距離: 約 200 km │
│ │
└─────────────────────────────────────────────────────────────────────┘

光ファイバーと海底ケーブル

東京から米国へデータを送るとき、そのパケットはどこを通っているのでしょうか?

答えは太平洋の海底です。

世界のインターネットトラフィックの95%以上が海底ケーブルを通過しています。衛星通信のイメージがあるかもしれませんが、実際の国際通信の主役は、海底に沈む細いケーブルなのです。

光ファイバーの仕組み

┌─────────────────────────────────────────────────────────────────────┐
│ 光ファイバーの構造 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ コア(ガラス繊維) │ │
│ │ ┌───────────────────────────────────────────────────────┐ │ │
│ │ │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ │ │
│ │ │ 光信号が全反射しながら伝搬 │ │ │
│ │ │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ │ │ │
│ │ └───────────────────────────────────────────────────────┘ │ │
│ │ クラッド(屈折率が低い層) │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ 光はコアとクラッドの境界で全反射を繰り返しながら進む │
│ → 直線ではなくジグザグに進むため、真空中より遅い │
│ → 屈折率 n ≈ 1.5 → 速度は真空中の約 2/3 │
│ │
└─────────────────────────────────────────────────────────────────────┘

海底ケーブルの実態

世界のインターネットトラフィックの 95%以上 が海底ケーブルを通過しています。

┌─────────────────────────────────────────────────────────────────────┐
│ 主要な海底ケーブル │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 太平洋横断(日本 ↔ 米国) │
│ ───────────────────────── │
│ ・FASTER (2016): 東京 → ロサンゼルス、約 9,000km │
│ 容量: 60 Tbps、Google/KDDI等が運営 │
│ │
│ ・Unity (2010): 千葉 → ロサンゼルス │
│ 容量: 7.68 Tbps │
│ │
│ ・PLCN (2020): 香港 → ロサンゼルス │
│ 容量: 144 Tbps、Meta/Google運営 │
│ │
│ アジア域内 │
│ ────────── │
│ ・SJC (2013): 日本 → シンガポール → 香港 │
│ ・APG (2016): 日本 → 中国 → 東南アジア │
│ │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ 海底ケーブルの構造 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 深海部(水深 8,000m 以上にも敷設) │
│ │
│ 直径: 約 17mm(庭のホース程度) │
│ │
│ ┌─────────────────────────────────────────┐ │
│ │ ○ ○ ○ ○ ○ ○ ○ ○ 光ファイバー(8本程度)│ │
│ │ ████████████████ 銅管(電力供給用) │ │
│ │ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 絶縁体 │ │
│ │ ████████████████ 鋼線(強度確保) │ │
│ │ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ポリエチレン被覆 │ │
│ └─────────────────────────────────────────┘ │
│ │
│ 中継器(Repeater) │
│ ・約 50-100km ごとに設置 │
│ ・光信号を増幅(減衰対策) │
│ ・故障すると修理が大変(海底から引き上げ) │
│ │
└─────────────────────────────────────────────────────────────────────┘

なぜ直線距離より遅いのか

┌─────────────────────────────────────────────────────────────────────┐
│ レイテンシ増加の要因 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 1. 光ファイバーの屈折率 │
│ 真空中: 300,000 km/s → ファイバー中: 200,000 km/s │
│ → 約 1.5 倍の時間がかかる │
│ │
│ 2. 経路が直線ではない │
│ │
│ 理想(直線): │
│ 東京 ─────────────────────────────────→ サンフランシスコ │
│ 8,300 km │
│ │
│ 実際(海底ケーブル): │
│ 東京 ──→ 千葉陸揚局 ──→ 太平洋 ──→ ロサンゼルス陸揚局 │
│ └──→ 海底の地形を避けながら蛇行 ──→ 実距離 9,000km+ │
│ │
│ 3. 中継器での処理遅延 │
│ ・光信号の増幅処理 │
│ ・各中継器で数マイクロ秒〜ミリ秒の遅延 │
│ ・太平洋横断で 50-100 個の中継器 │
│ │
│ 4. 陸上部分のルーティング │
│ ・陸揚局からデータセンターまでの距離 │
│ ・各ルーターでの処理遅延 │
│ │
└─────────────────────────────────────────────────────────────────────┘

海底ケーブルの障害

┌─────────────────────────────────────────────────────────────────────┐
│ 海底ケーブル障害事例 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 【原因】 │
│ ・船舶の錨(アンカー): 最も多い原因 │
│ ・漁船の底引き網 │
│ ・地震・海底地滑り │
│ ・サメの噛みつき(実際にある!) │
│ │
│ 【影響例】 │
│ 2006年 台湾地震: │
│ ・複数の海底ケーブルが切断 │
│ ・日本 → 米国/欧州 の通信が大幅遅延 │
│ ・復旧に数週間 │
│ │
│ 2022年 トンガ火山噴火: │
│ ・トンガへの唯一の海底ケーブルが切断 │
│ ・国全体がほぼインターネット不通 │
│ ・復旧に約1ヶ月 │
│ │
│ 【冗長性の重要性】 │
│ ・複数の海底ケーブルルートを確保 │
│ ・異なる陸揚局を使用 │
│ ・クラウドプロバイダーは複数リージョン構成を推奨 │
│ │
└─────────────────────────────────────────────────────────────────────┘

世界の海底ケーブルマップ

実際の海底ケーブルの配置は Submarine Cable Map で確認できます。

┌─────────────────────────────────────────────────────────────────────┐
│ 主要な海底ケーブルルート(概略) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 大西洋 太平洋 │
│ │ │ │
│ 欧州 ═══════════════╪════ 米国東海岸 ════╪═══════════ アジア │
│ │ │ │ │ │ │
│ │ │ │ └─────────────┤ │
│ │ │ │ │ │
│ └──────────────────┼─────────┴───────────────────────┘ │
│ │ │
│ アフリカ │
│ │
│ ※ 実際は数百本の海底ケーブルが世界中を結んでいる │
│ │
└─────────────────────────────────────────────────────────────────────┘

主要都市間のレイテンシ

理論値(光ファイバーの直線距離)

区間距離片道(理論値)RTT(理論値)
東京 ↔ 大阪約 400 km2 ms4 ms
東京 ↔ シンガポール約 5,300 km27 ms54 ms
東京 ↔ 米国西海岸約 9,000 km45 ms90 ms
東京 ↔ 欧州(ロンドン)約 9,500 km48 ms96 ms
東京 ↔ 米国東海岸約 11,000 km55 ms110 ms

実測値(ルーティング、機器遅延を含む)

┌─────────────────────────────────────────────────────────────────────┐
│ 実際の RTT(往復時間) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 東京 ↔ 大阪 │
│ 理論値: 4ms → 実測値: 5-10ms │
│ │
│ 東京 ↔ シンガポール │
│ 理論値: 54ms → 実測値: 70-90ms │
│ │
│ 東京 ↔ 米国西海岸(サンフランシスコ) │
│ 理論値: 90ms → 実測値: 100-130ms │
│ │
│ 東京 ↔ 欧州(ロンドン) │
│ 理論値: 96ms → 実測値: 200-250ms │
│ (太平洋 → 米国 → 大西洋ルートの場合) │
│ │
│ ※ ルーティング経路、海底ケーブル、中継機器で増加 │
│ │
└─────────────────────────────────────────────────────────────────────┘

衛星通信 vs 海底ケーブル

「宇宙を飛ぶ衛星の方が速そう」と思うかもしれませんが、実は海底ケーブルの方が低レイテンシです。

静止衛星(GEO)の問題

┌─────────────────────────────────────────────────────────────────────┐
│ 静止衛星(Geostationary Orbit) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ☆ 静止衛星 │
│ 高度: 35,786 km │
│ │ │
│ │ │
│ │ 片道: 35,786 km │
│ │ 光速で: 約 120ms │
│ │ │
│ ↓ │
│ ┌─────────────────────────────────────┐ │
│ │ 地球表面 │ │
│ │ ユーザー ←→ 地上局 │ │
│ └─────────────────────────────────────┘ │
│ │
│ 往復(RTT)の計算: │
│ ユーザー → 衛星 → 地上局 → サーバー → 地上局 → 衛星 → ユーザー │
│ │
│ 最短でも: 35,786 × 4 ÷ 300,000 = 約 480ms │
│ 実測値: 600-800ms │
│ │
│ → 海底ケーブル(100-130ms)の 5-6 倍遅い! │
│ │
└─────────────────────────────────────────────────────────────────────┘

Starlink(低軌道衛星)

SpaceX の Starlink は低軌道(LEO)を使うことでレイテンシを改善しています。

┌─────────────────────────────────────────────────────────────────────┐
│ 低軌道衛星(Low Earth Orbit) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 静止衛星(GEO) 低軌道衛星(LEO) │
│ 高度: 35,786 km 高度: 550 km(Starlink) │
│ │
│ ☆ │
│ │ ★ ★ ★ (多数の衛星) │
│ │ │ │
│ │ 35,786km │ 550km │
│ │ │ │
│ ↓ ↓ │
│ ────────────────────────────────────────── │
│ 地球 地球 │
│ │
│ RTT: 600-800ms RTT: 20-40ms │
│ │
└─────────────────────────────────────────────────────────────────────┘

比較表

通信方式RTT(往復)特徴
海底ケーブル(東京↔米国)100-130ms安定、大容量、低レイテンシ
Starlink(LEO)20-40ms僻地対応、衛星間通信で将来性
静止衛星(GEO)600-800ms僻地・海上対応、高レイテンシ
航空機内WiFi(GEO経由)600-1000ms移動中でも接続可能
┌─────────────────────────────────────────────────────────────────────┐
│ Starlink の可能性 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 1. 僻地・離島へのインターネット提供 │
│ ・海底ケーブルが届かない地域 │
│ ・山間部、砂漠、海上 │
│ │
│ 2. 災害時のバックアップ │
│ ・海底ケーブル切断時の代替 │
│ ・2022年ウクライナで実際に活用 │
│ │
│ 3. 将来: 衛星間レーザーリンク │
│ │
│ 従来(地上経由): │
│ 衛星 → 地上局A → 陸上回線 → 地上局B → 衛星 │
│ │
│ 衛星間リンク: │
│ 衛星 ──レーザー──→ 衛星 ──レーザー──→ 衛星 │
│ │
│ → 真空中は光ファイバーより速い(屈折率1.0) │
│ → 長距離では海底ケーブルより低レイテンシの可能性 │
│ │
│ 4. 高頻度取引(HFT)への応用 │
│ ・ロンドン ↔ 東京 の最短経路 │
│ ・ミリ秒の差が数億円の利益に │
│ │
└─────────────────────────────────────────────────────────────────────┘

現実的な選択

┌─────────────────────────────────────────────────────────────────────┐
│ 用途別の最適な選択 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 一般的なWebサービス・API │
│ → 海底ケーブル(クラウドリージョン経由) │
│ 安定性、帯域、レイテンシのバランスが最良 │
│ │
│ 僻地・移動体 │
│ → Starlink / 衛星通信 │
│ 海底ケーブルが届かない場所でも接続可能 │
│ │
│ 超低レイテンシが必要(将来) │
│ → 衛星間レーザーリンク │
│ 真空中を直線で進むため、理論上は最速 │
│ │
│ 現時点のベストプラクティス: │
│ → ユーザーに近いリージョンにサーバーを配置 │
│ → CDN を活用 │
│ → 海底ケーブルの冗長性を確保 │
│ │
└─────────────────────────────────────────────────────────────────────┘

システム設計への影響

1. データセンターの配置

┌─────────────────────────────────────────────────────────────────────┐
│ ユーザーに近いリージョンを選択 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 日本のユーザー向けサービス │
│ │
│ ❌ 米国リージョンのみ │
│ → 全リクエストに 100ms+ のレイテンシ │
│ → ユーザー体験が悪化 │
│ │
│ ✅ 東京リージョンを使用 │
│ → レイテンシ 5-10ms │
│ → 快適なユーザー体験 │
│ │
│ ✅ マルチリージョン構成 │
│ → 各地域のユーザーに最適なレイテンシ │
│ → 障害時のフェイルオーバー │
│ │
└─────────────────────────────────────────────────────────────────────┘

2. CDN(Content Delivery Network)

┌─────────────────────────────────────────────────────────────────────┐
│ CDN によるレイテンシ削減 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ CDN なし: │
│ │
│ 東京ユーザー ──────────────────────────→ 米国オリジン │
│ 100ms+ │
│ │
│ │
│ CDN あり: │
│ │
│ 東京ユーザー ────→ 東京エッジ ─(キャッシュヒット)→ レスポンス │
│ 5ms │
│ │
│ 東京ユーザー ────→ 東京エッジ ────→ 米国オリジン │
│ 5ms 100ms │
│ (キャッシュミス時のみオリジンへ) │
│ │
└─────────────────────────────────────────────────────────────────────┘

3. 非同期処理とキャッシュ

┌─────────────────────────────────────────────────────────────────────┐
│ レイテンシを隠蔽する設計パターン │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ❌ 同期的に外部APIを呼び出し │
│ │
│ handleRequest() { │
│ data1 = callUSAPI(); // 100ms │
│ data2 = callEuropeAPI(); // 200ms │
│ return combine(data1, data2); // 合計 300ms │
│ } │
│ │
│ │
│ ✅ 並列呼び出し │
│ │
│ handleRequest() { │
│ future1 = asyncCallUSAPI(); // 開始 │
│ future2 = asyncCallEuropeAPI(); // 開始 │
│ return combine(future1.get(), future2.get()); // 200ms │
│ } │
│ │
│ │
│ ✅ キャッシュ活用 │
│ │
│ handleRequest() { │
│ data = cache.get(key); │
│ if (data == null) { │
│ data = callRemoteAPI(); // キャッシュミス時のみ │
│ cache.put(key, data); │
│ } │
│ return data; // キャッシュヒット時: 0.1ms │
│ } │
│ │
└─────────────────────────────────────────────────────────────────────┘

実測してみよう

ping で RTT を測定

# 国内
$ ping google.co.jp
64 bytes from nrt13s71-in-f3.1e100.net: icmp_seq=1 ttl=117 time=3.2 ms

# 米国
$ ping google.com
64 bytes from nrt13s48-in-f14.1e100.net: icmp_seq=1 ttl=117 time=4.1 ms
# ※ Google は CDN があるので近いエッジから応答

# 実際の米国サーバー
$ ping stanford.edu
64 bytes from ...: icmp_seq=1 ttl=46 time=112.3 ms

curl で HTTPS 接続時間を測定

$ curl -w "\
DNS: %{time_namelookup}s\n\
TCP: %{time_connect}s\n\
TLS: %{time_appconnect}s\n\
First byte: %{time_starttransfer}s\n\
Total: %{time_total}s\n" \
-o /dev/null -s https://example.com

DNS: 0.012s
TCP: 0.115s ← TCP接続完了まで
TLS: 0.298s ← TLS完了まで
First byte: 0.412s ← 最初のバイト受信まで
Total: 0.413s

まとめ

┌─────────────────────────────────────────────────────────────────────┐
│ 重要なポイント │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 1. 光の速度は有限 │
│ → 光ファイバー中では真空の約2/3(200,000 km/s) │
│ → 地球の反対側まで最低でも 60ms かかる │
│ → これは物理法則、ソフトウェアで解決できない │
│ │
│ 2. 海底ケーブルがインターネットの主役 │
│ → 世界のトラフィックの95%以上が海底ケーブル経由 │
│ → 衛星通信より低レイテンシ・大容量 │
│ → 障害時の冗長性確保が重要 │
│ │
│ 3. 衛星通信の使い分け │
│ → 静止衛星(GEO): 600-800ms、僻地・海上向け │
│ → Starlink(LEO): 20-40ms、将来性あり │
│ → 一般的なサービスは海底ケーブル経由が最適 │
│ │
│ 4. ユーザーに近づける │
│ → 適切なリージョン選択 │
│ → CDN活用 │
│ → エッジコンピューティング │
│ │
│ 5. レイテンシを隠蔽する │
│ → 非同期・並列処理 │
│ → キャッシュ │
│ → プリフェッチ │
│ │
└─────────────────────────────────────────────────────────────────────┘

参考