「光ファイバーって、ガラスなのに光が漏れないの?」
そう思ったこと、ありませんか?実はこれ、全反射という物理現象のおかげなんです。でも、教科書の「臨界角」とか「開口数」って言葉、なんだか難しそうですよね。
今日は、ブラウザ上で動く光ファイバー通信シミュレーターを使って、NA(開口数)や減衰、パルス広がりの仕組みを、コードを書きながら本質まで理解していきましょう。
▶ 今回のシミュレーター: 光ファイバー通信シミュレーター (ブラウザで動作・登録不要)
導入「え、光って曲がるの?」
光は基本的に直進します。でも、光ファイバーの中ではジグザグに進みながら、何十キロも先まで届くんです。
例えば、海底ケーブル。太平洋の底に敷かれた光ファイバーは、1万キロ以上の距離を、ほぼ損失なく光を伝えます。もし光が漏れていたら、数キロで消えてしまうはず。なぜ漏れないのか?
答えは、コアとクラッドの屈折率の差。このわずかな差が、光を閉じ込める「壁」の役割を果たしているんです。
ざっくり本質「ピンポン玉が跳ね返るイメージ」
光ファイバーの断面を想像してください。中心のコア(屈折率 $n_1$)と、その周りのクラッド(屈折率 $n_2$、 $n_1 > n_2$)。
光がコアの中を進むとき、クラッドとの境界にぶつかると、ある条件で全反射が起こります。これはまるで、ピンポン玉が壁に跳ね返るように、光がジグザグに進むイメージ。
「光は、コアとクラッドの境界でピンポン玉みたいに跳ね返り続けるんだ」
この「跳ね返る最小の角度」が臨界角。これより浅い角度で入射すると、光はクラッド側に漏れ出してしまいます。
数式で理解する「NAって何?なんで重要?」
ここからが本番。光ファイバーの性能を決める最重要パラメータ、開口数(NA: Numerical Aperture) を数式で理解しましょう。
まず、コアとクラッドの屈折率を $n_1$、$n_2$ とすると、NAは次のように定義されます。
NA = \sqrt{n_1^2 - n_2^2}
このNAが何を表すかというと、「ファイバーがどのくらい広い角度から光を受け入れられるか」 の指標です。具体的には、NAが大きいほど、ファイバーに入射できる光の角度範囲が広がります。
次に、光がファイバー内を伝搬するときの減衰。伝送距離 $L$(km)後の光パワー $P(L)$ は、損失係数 $\alpha$(dB/km)を使ってこう表せます。
P(L) = P_0 \cdot 10^{-\alpha L/10}
ここで $P_0$ は入射光パワー。例えば $\alpha = 0.2$ dB/km なら、10kmで約 $10^{-0.2} \approx 0.63$倍、つまり約37%減衰します。
さらに、パルス広がり(モード分散)。シングルモードとマルチモードの違いは、このパルス広がりに直結します。NAが大きいと高次モードが励起され、各モードの経路長差が大きくなるため、パルスが時間的に広がりやすくなるんです。
コードで実装する「シミュレーターの計算ロジックを再現」
ここがこの記事の核心。シミュレーターが裏でやっている計算を、JavaScriptで20行程度で再現してみましょう。
// 光ファイバー通信のコア計算(ブラウザで動く)
function opticalFiberSim(n1, n2, L, alpha, P0) {
// 1. 開口数 NA の計算
const NA = Math.sqrt(n1 * n1 - n2 * n2);
// 2. 臨界角(ラジアン)の計算:θc = arcsin(n2/n1)
const criticalAngleRad = Math.asin(n2 / n1);
const criticalAngleDeg = criticalAngleRad * 180 / Math.PI;
// 3. 減衰後の光パワー P(L) = P0 * 10^(-αL/10)
const PL = P0 * Math.pow(10, -alpha * L / 10);
// 4. パルス広がりの簡易モデル(モード分散を考慮)
// 経路長差による時間広がり Δt ≈ (L * NA^2) / (2 * n1 * c)
const c = 3e8; // 光速 [m/s]
const deltaT = (L * 1000 * NA * NA) / (2 * n1 * c); // 秒単位
return {
NA: NA.toFixed(4),
criticalAngleDeg: criticalAngleDeg.toFixed(2),
powerAfter: PL.toFixed(4),
pulseSpread: (deltaT * 1e9).toFixed(2) // ナノ秒に変換
};
}
// 実際のパラメータでテスト(シングルモードファイバーを想定)
const result = opticalFiberSim(
1.468, // n1: コア屈折率(シリカガラス)
1.464, // n2: クラッド屈折率
50, // L: 伝送距離 [km]
0.2, // alpha: 損失係数 [dB/km]
1.0 // P0: 入射光パワー [mW]
);
console.log('NA:', result.NA);
console.log('臨界角:', result.criticalAngleDeg, '度');
console.log('減衰後パワー:', result.powerAfter, 'mW');
console.log('パルス広がり:', result.pulseSpread, 'ns');
このコードをブラウザの開発者ツール(F12)のコンソールに貼り付ければ、すぐに実行できます。シミュレーターのスライダーを動かしたときの計算が、まさにこれです。
ポイント解説:
-
Math.asin(n2/n1)で臨界角を計算。$n_1 > n_2$ でないとエラーになるので注意。 - 減衰は対数スケール。
10^(-αL/10)は、dBの定義そのもの。 - パルス広がりは簡易モデル。実際には材料分散や波長分散も考慮する必要がありますが、モード分散の影響をざっくり捉えられます。
数値例で確かめる「現実の値を入れてみる」
それでは、具体的な数値で計算してみましょう。
条件:
- シングルモードファイバー:$n_1 = 1.468$、$n_2 = 1.464$
- 伝送距離 $L = 50$ km
- 損失係数 $\alpha = 0.2$ dB/km
- 入射パワー $P_0 = 1.0$ mW
計算ステップ:
-
NAの計算:
$NA = \sqrt{1.468^2 - 1.464^2} = \sqrt{2.155 - 2.143} = \sqrt{0.012} \approx 0.1095$ -
臨界角:
$\theta_c = \arcsin(1.464 / 1.468) \approx \arcsin(0.9973) \approx 85.7^\circ$
つまり、コアとクラッドの境界に対してほぼ平行に近い角度で跳ね返る。 -
減衰後パワー:
$P(50) = 1.0 \times 10^{-0.2 \times 50 / 10} = 1.0 \times 10^{-1} = 0.1$ mW
50kmで90%減衰。でも、受光器の感度が十分なら通信可能。 -
パルス広がり:
$\Delta t \approx \frac{50 \times 1000 \times 0.012}{2 \times 1.468 \times 3 \times 10^8} \approx \frac{600}{8.808 \times 10^8} \approx 6.81 \times 10^{-7}$ 秒 ≈ 0.68 μs
このパルス広がりが、高速通信(例:10 Gbps = 0.1 ns/ビット)だと致命的になります。だからこそ、長距離ではシングルモードファイバーが必須なんです。
先ほどのコードを実行すると、ほぼ同じ値が得られます(計算誤差の範囲で一致)。
シミュレーターで遊ぶ「パラメータを動かして実験」
それでは、実際にシミュレーターを操作してみましょう。
実験1:NAを変えると何が起きる?
- コア屈折率 $n_1$ を 1.50 に、クラッド屈折率 $n_2$ を 1.45 に設定。
- NAの値が 0.384 に跳ね上がるのを確認。
- 光線のアニメーションを見ると、ジグザグの角度が急峻になり、より多くの光線が全反射されている。
なぜ? → $n_1$ と $n_2$ の差が大きくなると、臨界角が小さくなり、より広い入射角で光を受け入れられるから。でも、パルス広がりのグラフが大きくなっていることにも注目。
実験2:距離を伸ばすとパルスがどうなる?
- 伝送距離 $L$ を 10 km から 100 km にスライド。
- 減衰グラフが指数関数的に減少。
- パルス広がりの波形が、なまって広がる様子がリアルタイムで表示される。
ポイント:パルス広がりは距離に比例して増加。100kmでは、10kmの10倍の広がりに。
実験3:シングルモード vs マルチモード
- シングルモード条件($n_1=1.468$, $n_2=1.464$, NA小)でパルス広がりを確認。
- マルチモード条件($n_1=1.50$, $n_2=1.45$, NA大)に変更。
- 同じ距離でも、マルチモードのパルス広がりが数倍〜数十倍大きい。
これが、「NAが大きい=必ずしも良いわけではない」 理由です。
現場でハマるポイント「教科書通りにいかない現実」
1. NAが大きいとモード分散がヤバい
「NAを大きくすれば光をたくさん集められる!」と喜ぶのは早計です。確かに結合効率は上がりますが、その代償として高次モードが励起され、経路長の差が大きくなります。
例えば、NA=0.3のマルチモードファイバーで1km伝送した場合、パルス広がりはNA=0.2のファイバーに比べて約2倍になります。短距離(<100m)なら問題なくても、10km級の伝送では信号品質が著しく劣化します。
2. 損失係数を現実離れした値にしない
シミュレーターで$\alpha = 0$ dB/kmに設定すると、どんなに距離を伸ばしても減衰しない「夢のファイバー」になります。でも現実にはありえません。
実用的な目安:
- シングルモードファイバー:0.2〜0.4 dB/km(1.55μm帯で最小)
- マルチモードファイバー:2〜4 dB/km(0.85μm帯)
「100km伝送で信号強度がどれだけ減るか」を、この範囲で体感してみましょう。
3. 「シングルモード」と「マルチモード」はコア径だけじゃない
よくある誤解:「コア径が太い=マルチモード、細い=シングルモード」
実は、使用する波長も決定的に重要です。同じコア径(例:10μm)でも、波長1.55μmではシングルモードでも、波長0.85μmではマルチモードになることがあります。
これはVパラメータ(規格化周波数) で決まります:
V = \frac{2\pi a}{\lambda} \cdot NA
$a$ がコア半径、$\lambda$ が波長。$V < 2.405$ でシングルモードになります。つまり、波長、コア径、屈折率差の三者関係を常に意識する必要があるんです。
まとめ「3つの要点」
- NAは「光を受け入れられる角度の広さ」。大きいと結合効率は上がるが、モード分散も大きくなるトレードオフ。
- 減衰とパルス広がりは距離に依存。シングルモードは長距離向け、マルチモードは短距離・大容量向け。
- シミュレーターでパラメータを動かして体感。数式だけではわからない「変化の様子」が、理解の鍵。
光ファイバーの奥深さ、少し伝わりましたか?「全反射」という単純な現象が、実は高度なエンジニアリングの土台になっている。そんな面白さを、ぜひ実際のシミュレーターで体験してみてください。
▶ 光ファイバー通信シミュレーター — ブラウザで即動作、登録不要
NovaSolverでは1,600以上の工学シミュレーターを無料公開中 👉 一覧はこちら