CD の記録面を蛍光灯にかざすと、虹色の帯が浮かび上がります。あの虹は、プラスチックの表面に刻まれた約 1.6 マイクロメートル間隔のピットの列が、光を波長ごとに違う方向へ振り分けているせいです。同じ原理を、天文学者は数百光年先の恒星の光に適用して、その大気に何の元素が含まれているかを読み取ります。系外惑星が主星の前を横切るわずか数時間のあいだに、惑星大気を透過した光のスペクトルから水蒸気やメタンの吸収線を探す——この途方もない仕事の中心にあるのが、回折格子(diffraction grating) という、ただ細い溝を等間隔に並べただけの部品です。
では、なぜ「溝を並べるだけ」でそんなことができるのでしょうか。プリズムでも光は虹に分かれます。それなのに、精密分光の現場で使われるのはほぼ例外なく回折格子です。何が決定的に違うのでしょうか。そして、「589.00 nm と 589.59 nm を見分けたい」というような具体的な要求が来たとき、格子の何をどれだけ大きくすれば足りるのでしょうか。
この記事では、その問いに数式で答えます。回折格子は「N 本のスリットを並べたもの」として完全に記述でき、その強度分布は等比級数の和ひとつで閉じた形に書けます。そこから、格子方程式・分解能・自由スペクトル領域・角分散という分光器設計の四天王がすべて芋づる式に出てきます。応用先は分光分析(天文分光・ラマン分光・元素分析)だけではありません。光通信の波長多重(WDM)で波長を合流・分離する AWG も、レーザーの波長を選ぶ外部共振器も、X 線の構造解析(ブラッグ回折)も、根っこはすべて同じ「多重干渉」です。

この図が本記事で扱う現象のすべてです。左から入った白色光は、格子を通ると 0 次(まっすぐ抜ける成分)と ±1 次以上に分かれ、0 次だけは波長によらず同じ方向に進むのに対し、1 次では紫 400 nm より赤 700 nm のほうが大きく曲がります。「どの色がどの角度に飛ぶか」を決めるのが後で導く格子方程式 $d\sin\theta = m\lambda$ で、「その角度の線がどれだけ細いか」を決めるのが溝の本数です。分光の性能は、この 2 つの掛け算で決まります。
本記事の内容
- 回折格子を「N 本スリットの多重干渉」として捉える直感
- 等比級数の和から強度分布 $I(\theta)$ を省略なしで導出する
- 格子方程式 $d\sin\theta = m\lambda$、分解能 $R = mN$、自由スペクトル領域 $\Delta\lambda_{\mathrm{FSR}} = \lambda/m$、角分散 $d\theta/d\lambda = m/(d\cos\theta)$ の導出
- 単スリット包絡線・欠落次数・ブレーズ角の設計思想
- Python でナトリウム D 線の分離限界を数値実験し、レイリー基準の予測と突き合わせる
前提知識
この記事を読む前に、以下の記事を読んでおくと理解がスムーズです。
- 波動光学入門(干渉と回折) — 重ね合わせの原理、ヤングの二重スリット、強度と振幅の関係
- フラウンホーファー回折を理解する — 単スリットから回折格子まで — 遠方場が開口関数のフーリエ変換になること、単スリットの $\mathrm{sinc}^2$ 分布
- マイケルソン干渉計の原理と応用 — 2 光束干渉と、光路差から波長情報を取り出す考え方
特に「単スリットの回折で $\mathrm{sinc}^2$ が出てくる」ことは本記事の出発点なので、そこだけは押さえておいてください。
回折格子とは — スリットを増やすと何が起きるか
ヤングの二重スリットの縞を思い出してください。明線と暗線が、$\cos^2$ のなめらかな山と谷でずるずると続きます。明線の位置は $d\sin\theta = m\lambda$ で決まりますが、山は太く、その中心がどこかを目で読み取るのは案外あいまいです。波長が 0.1% 違う 2 本の光を当てても、2 つの太い山が重なってひとつのぼんやりした山になるだけで、区別がつきません。
ここでスリットを 2 本から 3 本、10 本、1000 本と増やしていくと、何が起きるでしょうか。明線の位置は変わりません。$d\sin\theta = m\lambda$ という条件は「隣り合うスリットの光路差が波長の整数倍」という意味なので、スリットが何本あっても同じです。変わるのは明線の細さです。
直感的にはこう考えられます。2 本のときは、少し角度がずれても、2 つの波の位相差はまだ小さく、そこそこ強め合ってしまいます。ところが 1000 本あると、少し角度がずれただけで、1 番目と 1000 番目のスリットの光の位相差は 1000 倍に拡大されます。位相が一周りしてしまえば、1000 本の矢印(フェーザ)は円をぐるりと描いて閉じ、和はゼロになります。つまり本数が多いほど、条件からのわずかなずれが致命的になり、明線は鋭く痩せていくわけです。

複素平面上の矢印(フェーザ)を並べると、この直感がそのまま絵になります。隣どうしの位相差を同じ $18^\circ$ に固定したまま本数だけを変えると、2 本なら合成振幅は 1.98(そろっていれば 2)とほとんど減らないのに、5 本では 4.52(同 5)と目減りし始め、20 本では矢印が完全に一周して合成振幅がちょうど 0 になります。同じ「わずかなずれ」が、本数が多いほど致命的になる——これがピークが痩せる仕組みで、$18^\circ \times 20 = 360^\circ$ という関係が、後で出てくるゼロ点条件 $N\gamma = p\pi$ の正体です。
回折格子とは、この「本数を増やして明線を極限まで細くした多重スリット」のことです。細くなった明線の位置は波長に敏感に依存するので、細ければ細いほど、近い波長どうしを別々の位置に分離できます。これが分光の原理です。市販の格子は 1 mm あたり 300 本から 3600 本程度の溝を持ち、幅 50 mm の格子なら溝の総数は数万本に達します。
なお実物の格子には、透明な板に溝を刻んで光を透過させる透過型と、金属膜に溝を刻んで反射させる反射型があります。物理は同じで、反射型は光路差の勘定が「反射面での差」に置き換わるだけです。本記事では式が最も見やすい透過型(垂直入射)を主に扱い、必要に応じて斜め入射の一般形にも触れます。
ここまでは言葉による直感でした。次は、この「本数が増えると鋭くなる」を数式で正確に書き下していきます。使う道具は、高校で習う等比級数の和の公式ひとつだけです。
N 本スリットの強度分布を導出する
まず舞台設定を確認します。幅 $a$ のスリットが、中心間隔 $d$($d > a$)で $N$ 本、一直線に等間隔で並んでいるとします。ここに波長 $\lambda$ の平面波が正面から(垂直に)当たり、十分遠方のスクリーン、あるいはレンズの焦点面で、光軸から角度 $\theta$ の方向の明るさを観測します。この「十分遠方」という条件がフラウンホーファー条件で、そのおかげで各スリットから出る光を平行光線として扱えます。
1 本のスリットの寄与
前提記事で導いたとおり、幅 $a$ の単スリットが角度 $\theta$ 方向に作る振幅は
$$ \begin{equation} E_1(\theta) = E_a \cdot \frac{\sin\beta}{\beta}, \qquad \beta \equiv \frac{\pi a \sin\theta}{\lambda} \end{equation} $$
と書けます。$E_a$ は $\theta = 0$ での振幅です。$\beta$ は「スリットの端と端から出た光の位相差の半分」を表していて、$\beta$ が小さい(=スリットが波長に比べて狭い、または角度が小さい)ほどスリット内部の光は揃って強め合います。
隣のスリットとの位相差
さて、スリットを $n = 0, 1, \dots, N-1$ と番号付けし、$n$ 番目の中心が $x_n = nd$ にあるとします。角度 $\theta$ 方向へ進む平行光線を考えると、$n$ 番目のスリットから出た光は、0 番目から出た光に比べて $nd\sin\theta$ だけ余分に(あるいは短く)進みます。この幾何学的な行路差を位相に直すには、波数 $k = 2\pi/\lambda$ を掛ければよいので、位相差は
$$ \delta_n = \frac{2\pi}{\lambda} \, n d \sin\theta = 2n\gamma, \qquad \gamma \equiv \frac{\pi d \sin\theta}{\lambda} $$

この幾何図が位相差の出どころです。赤い破線は等位相面(ここから先はどの光線も同じ距離を進む面)で、そこに到達するまでに隣どうしの光線が稼ぐ距離の差が、緑で示した $d\sin\theta$ になります。スリットが等間隔に並んでいるので、$n$ 番目の光線の遅れは常にこの $d\sin\theta$ の $n$ 倍——行路差が $n$ に比例して線形に積み上がることが、次の等比級数の和につながります。
となります。ここで $\gamma$ を「隣接スリット間の位相差の半分」として定義しました。$\beta$ と $\gamma$ は同じ形をしていて、$a$ が $d$ に置き換わっただけです。$\beta$ がスリット内部の位相のばらつきを、$\gamma$ がスリット間の位相のばらつきを表す、と覚えると混乱しません。
等比級数の和
全スリットからの寄与を足し合わせます。どのスリットも形が同じなので、$E_1(\theta)$ を共通因子としてくくり出せます。
$$ E(\theta) = E_1(\theta) \sum_{n=0}^{N-1} e^{i\delta_n} = E_1(\theta) \sum_{n=0}^{N-1} \left(e^{i2\gamma}\right)^n $$
和の中身は公比 $r = e^{i2\gamma}$ の等比数列です。$r \ne 1$ のとき、等比級数の和の公式から
$$ S \equiv \sum_{n=0}^{N-1} r^n = \frac{1 – r^N}{1 – r} = \frac{1 – e^{i2N\gamma}}{1 – e^{i2\gamma}} $$
このままでは絶対値が見えにくいので、分子・分母それぞれで半角の指数因子をくくり出すという定石を使います。分子は $e^{iN\gamma}$ を、分母は $e^{i\gamma}$ をくくり出すと、
$$ 1 – e^{i2N\gamma} = e^{iN\gamma}\left(e^{-iN\gamma} – e^{iN\gamma}\right) = e^{iN\gamma} \cdot (-2i\sin N\gamma) $$
$$ 1 – e^{i2\gamma} = e^{i\gamma}\left(e^{-i\gamma} – e^{i\gamma}\right) = e^{i\gamma} \cdot (-2i\sin\gamma) $$
ここでオイラーの公式 $e^{i x} – e^{-i x} = 2i\sin x$ を使いました。両者の比を取ると $-2i$ が約分され、
$$ \begin{equation} S = e^{i(N-1)\gamma} \, \frac{\sin N\gamma}{\sin \gamma} \end{equation} $$
先頭の $e^{i(N-1)\gamma}$ は「格子全体の中心から出たものとみなしたときの位相基準」を表すだけの因子で、絶対値は 1 です。強度は振幅の絶対値の 2 乗なので、この因子は消えます。
$$ |S|^2 = \left(\frac{\sin N\gamma}{\sin\gamma}\right)^2 $$
強度分布の完成形
以上を合わせると、$N$ 本スリット(回折格子)の強度分布が得られます。
$$ \begin{equation} I(\theta) = I_0 \underbrace{\left(\frac{\sin\beta}{\beta}\right)^2}_{\text{単スリット回折(包絡線)}} \underbrace{\left(\frac{\sin N\gamma}{\sin\gamma}\right)^2}_{\text{多重干渉(格子関数)}} \end{equation} $$
$$ \beta = \frac{\pi a \sin\theta}{\lambda}, \qquad \gamma = \frac{\pi d \sin\theta}{\lambda} $$
この式は、回折格子のすべてを含んでいます。読み方は次のとおりです。
- 第 1 因子(包絡線):スリット 1 本の形だけで決まり、$N$ にも $d$ にも依存しません。ゆっくり変化する「屋根」として、どの次数がどれだけ明るいかを決めます。
- 第 2 因子(格子関数):スリットの並び方だけで決まり、$a$ に依存しません。$\gamma$ に対して周期 $\pi$ で急峻なピークを繰り返します。ピークの位置=スペクトル線の位置です。
役割分担が完全に分離しているのが美しいところです。「どこに線が出るか」は $d$ と $N$ が、「その線がどれだけ明るいか」は $a$(より一般にはスリット 1 本の形)が決めます。後で見るブレーズ格子は、まさにこの第 1 因子だけを設計する技術です。
ちなみに $\theta = 0$ では $\beta \to 0$、$\gamma \to 0$ なので、$(\sin\beta/\beta)^2 \to 1$、$(\sin N\gamma/\sin\gamma)^2 \to N^2$ となり、$I(0) = I_0 N^2$ です。$N$ 本の光が完全に位相を揃えて足し算されるので、振幅が $N$ 倍、強度が $N^2$ 倍になる——コヒーレントな加算の典型例です。エネルギー保存はどうなっているのかというと、ピークが $N^2$ 倍に高くなる代わりに幅が $1/N$ に細くなるので、積分値は $N$ 倍(=スリット本数分)で辻褄が合います。この「高さ $N^2$・幅 $1/N$」というトレードオフこそが分光の心臓部です。
式は手に入りました。次は、この格子関数のピークがどこに立つのかを調べ、有名な格子方程式を取り出します。
格子方程式 $d\sin\theta = m\lambda$
格子関数 $G(\gamma) = (\sin N\gamma / \sin\gamma)^2$ が大きくなるのはどんなときでしょうか。分子 $\sin N\gamma$ は $-1$ から $1$ の間をせわしなく往復するだけなので、$G$ を巨大にできるのは分母 $\sin\gamma$ がゼロに近づくときしかありません。
$\sin\gamma = 0$ となるのは $\gamma = m\pi$($m$ は整数)のときです。ここでは分子も $\sin(Nm\pi) = 0$ となるので $0/0$ の不定形になります。ロピタルの定理を使うと、
$$ \lim_{\gamma \to m\pi} \frac{\sin N\gamma}{\sin\gamma} = \lim_{\gamma \to m\pi} \frac{N\cos N\gamma}{\cos\gamma} = \frac{N\cos(Nm\pi)}{\cos(m\pi)} = \pm N $$
なので $G(m\pi) = N^2$ です。つまり $\gamma = m\pi$ ですべての次数が最大値 $N^2$ を取ります。これを主極大(principal maximum) と呼びます。
$\gamma$ の定義 $\gamma = \pi d\sin\theta/\lambda$ を代入して整理すると、
$$ \frac{\pi d \sin\theta}{\lambda} = m\pi $$
両辺を $\pi$ で割り、$\lambda$ を掛ければ、
$$ \begin{equation} d\sin\theta = m\lambda, \qquad m = 0, \pm 1, \pm 2, \dots \end{equation} $$
これが格子方程式(grating equation) です。整数 $m$ を回折次数(order) と呼びます。
物理的な意味は明快です。$d\sin\theta$ は隣り合うスリットから出た光の行路差そのものですから、格子方程式は「隣どうしの行路差が波長の整数倍になる方向で、全スリットの光が一斉に強め合う」と言っているだけです。ヤングの二重スリットの明線条件とまったく同じ式で、違うのは「強め合いの鋭さ」だけ——これが本記事の主題です。
斜め入射の一般形
実際の分光器では、光は格子に垂直ではなく角度 $\theta_i$ で入射します。このときは、入射側でも行路差 $d\sin\theta_i$ が生じるので、格子方程式は
$$ \begin{equation} d(\sin\theta_i + \sin\theta_m) = m\lambda \end{equation} $$
となります($\theta_i$ と $\theta_m$ を法線の同じ側で測る符号規約の場合)。垂直入射は $\theta_i = 0$ の特別な場合です。反射型格子でも同じ形が成り立ちます。$\theta_i = \theta_m = \gamma_L$ とおいたリトロー配置(入射方向へ戻る方向を使う)では $2d\sin\gamma_L = m\lambda$ となり、分光器の設計でよく使われます。
具体例:600 本/mm の格子でナトリウムを見る
数値を入れて感覚を掴みましょう。1 mm あたり 600 本の溝を持つ格子では、
$$ d = \frac{1\ \mathrm{mm}}{600} = 1.667\ \mu\mathrm{m} = 1666.7\ \mathrm{nm} $$
ナトリウムの黄色い輝線(D 線)の平均波長 $\lambda = 589.3$ nm を入れると、
- $m = 1$:$\sin\theta = 589.3/1666.7 = 0.3536 \Rightarrow \theta = 20.71^\circ$
- $m = 2$:$\sin\theta = 0.7072 \Rightarrow \theta = 45.00^\circ$
- $m = 3$:$\sin\theta = 1.061 > 1 \Rightarrow$ 存在しない
3 次が存在しないのは、$\sin\theta \le 1$ という物理的制約のためです。格子方程式から $|m| \le d/\lambda$ という上限が出てきます。溝を細かくする($d$ を小さくする)と、使える次数は減りますが、1 本 1 本の次数が大きな角度に飛ぶようになります。逆に $d < \lambda$ まで細かくすると $m = 0$ しか残らず、格子として機能しません。
主極大の位置が分かりました。しかし分光で本当に効いてくるのは「位置」ではなく「鋭さ」です。次はピークの幅を計算します。
主極大の鋭さ — 幅は $N$ に反比例する
主極大がどれだけ細いかを知るには、その両隣のゼロ点を探すのが早道です。$G(\gamma) = (\sin N\gamma/\sin\gamma)^2$ がゼロになるのは、分子がゼロで分母がゼロでないときですから、
$$ N\gamma = p\pi \quad (p \text{ は整数、ただし } p/N \text{ が整数でない}) $$
つまり $\gamma = p\pi/N$ です。$p$ が $N$ の倍数のときは主極大に戻ってしまうので除きます。主極大は $\gamma = m\pi = mN\pi/N$ にあるので、そのすぐ隣のゼロ点は $\gamma = m\pi \pm \pi/N$ にあります。
これを $\sin\theta$ の言葉に翻訳します。$\gamma = \pi d\sin\theta/\lambda$ より、
$$ \frac{\pi d \sin\theta}{\lambda} = m\pi \pm \frac{\pi}{N} \;\Longrightarrow\; \sin\theta = \left(m \pm \frac{1}{N}\right)\frac{\lambda}{d} $$
したがって、主極大の中心から最初のゼロ点までの「$\sin\theta$ 座標での半幅」は
$$ \begin{equation} \Delta(\sin\theta)_{\text{半幅}} = \frac{\lambda}{Nd} = \frac{\lambda}{W} \end{equation} $$
です。ここで $W = Nd$ は照明されている格子の全幅です。この形を見て、単スリット回折を思い出してください。幅 $W$ の 1 本のスリットが作る中央極大の半幅も、まったく同じ $\lambda/W$ でした。
これは偶然ではありません。格子の分解能は、溝の細かさではなく、光が当たっている領域の全幅で決まる——これが回折格子を理解するうえで最も重要な洞察のひとつです。格子は $W$ という大きな開口を、位相を揃えたまま使い切るための仕掛けにすぎません。だからこそ、分光器では格子をできるだけ大きく作り、できるだけ全面に光を当てようとするのです。
角度そのものでの幅も出しておきましょう。$\sin\theta$ を $\theta$ で微分すると $\cos\theta\, d\theta$ なので、
$$ \Delta\theta_{\text{半幅}} = \frac{\lambda}{Nd\cos\theta} = \frac{\lambda}{W\cos\theta} $$
大きな角度(高次数)に行くほど $\cos\theta$ が小さくなり、角度幅は広がります。ただし後で見るように、分散のほうがもっと速く増えるので、正味では高次数のほうが分解能は良くなります。
半値全幅(FWHM)も求めておきます。主極大の近くで $\gamma = m\pi + u$($u$ は微小)とおくと、$\sin(N\gamma) = \sin(Nm\pi + Nu) = \pm\sin(Nu)$、$\sin\gamma = \pm\sin u \approx \pm u$ なので、
$$ G \approx \left(\frac{\sin Nu}{u}\right)^2 = N^2 \left(\frac{\sin Nu}{Nu}\right)^2 $$
つまり主極大の形は$\mathrm{sinc}^2$ そのもので、幅を決めるパラメータが $N$ です。$\mathrm{sinc}^2(x)$ が半分になるのは $x \approx 1.3916$ なので、FWHM は $\gamma$ 換算で $2\times 1.3916/N \approx 0.886\pi/N$、$\sin\theta$ 換算で約 $0.886\,\lambda/W$ となります。ゼロ点までの半幅 $\lambda/W$ とほぼ同じオーダーです。

両対数グラフで確かめると、数値計算した主極大の半値全幅は傾き $-1$ の直線にぴたりと乗ります。すなわち幅は $1/N$ に正確に反比例し、$N$ を 5 から 800 まで 160 倍にすると幅も約 1/160 に縮みます。赤い破線の理論式 $0.886\,\lambda/(Nd)$ とのずれは全域で最大 1.77% にとどまり(ずれが目立つのは近似が甘くなる $N$ の小さい側です)、緑の点線で示したゼロ点間の全幅 $2\lambda/(Nd)$ のおよそ 44% が半値全幅にあたることも読み取れます。
「主極大の形が $\mathrm{sinc}^2$ である」という事実は、後でレイリー基準を適用するときに効いてきます。2 つの $\mathrm{sinc}^2$ をレイリー間隔で重ねると、谷の深さが $8/\pi^2 = 0.811$ という決まった値になるからです。これは Python の節で実測して確かめます。
ピークの位置と幅が揃いました。この 2 つを組み合わせれば、いよいよ「どれだけ近い波長まで見分けられるか」という分解能が計算できます。
分解能 $R = mN$ の導出
レイリー基準
2 本のスペクトル線が「分離できた」と言えるのはどんなときでしょうか。線には必ず幅があるので、近づけていけばいつか重なってひとつの山になります。その境目をどこに引くかは約束事で、最も広く使われているのがレイリー基準(Rayleigh criterion) です。
一方の主極大の中心が、もう一方の主極大の最初のゼロ点に一致するとき、2 本はぎりぎり分離できているとみなす。
やや恣意的に見えますが、この基準には理由があります。この配置のとき 2 本の山のあいだにはっきりした谷ができ、しかもその谷の深さが観測条件によらず一定になるからです($\mathrm{sinc}^2$ どうしなら谷は山の $8/\pi^2 \approx 81\%$)。
導出
波長 $\lambda$ と $\lambda + \Delta\lambda$ の 2 本を、同じ次数 $m$ で観測するとします。
まず、$\lambda + \Delta\lambda$ の主極大の位置は格子方程式から
$$ \sin\theta_{\text{peak}} = \frac{m(\lambda + \Delta\lambda)}{d} $$
一方、$\lambda$ の主極大に隣接するゼロ点は、前節の結果から
$$ \sin\theta_{\text{zero}} = \left(m + \frac{1}{N}\right)\frac{\lambda}{d} $$
レイリー基準は、この 2 つが一致することを要求します。両辺に $d$ を掛けて等号で結ぶと、
$$ m(\lambda + \Delta\lambda) = \left(m + \frac{1}{N}\right)\lambda $$
右辺を展開すると $m\lambda + \lambda/N$ となるので、両辺から $m\lambda$ を引いて、
$$ m\,\Delta\lambda = \frac{\lambda}{N} $$
$\Delta\lambda$ について解き、分解能 $R \equiv \lambda/\Delta\lambda$ の定義に代入すれば、
$$ \begin{equation} R = \frac{\lambda}{\Delta\lambda} = mN \end{equation} $$
驚くほど簡単な式です。分解能は、次数と溝の本数の積だけで決まります。溝の間隔 $d$ も、スリット幅 $a$ も、波長 $\lambda$ さえも式に現れません。
光路差から見る別解
同じ結果を、まったく違う道筋で出してみましょう。この見方は干渉計一般に通じるので、覚えておく価値があります。
格子の端から端まで(0 番目のスリットと $N-1$ 番目のスリット、近似的に $N$ 本ぶん)で、光が稼ぐ最大光路差は
$$ \Delta L_{\max} = N d\sin\theta = N \cdot m\lambda = mN\lambda $$
です(主極大の方向 $d\sin\theta = m\lambda$ を代入しました)。ここで一般則が使えます。「光路差 $\Delta L$ を稼ぐ干渉装置の分解能は $R = \Delta L/\lambda$」——理由はこうです。波長が $\lambda$ と $\lambda + \Delta\lambda$ の 2 つの波は、光路差 $\Delta L$ を進むあいだにそれぞれ $\Delta L/\lambda$ 波長ぶん、$\Delta L/(\lambda+\Delta\lambda)$ 波長ぶん振動します。この差がちょうど 1 波長になると、片方が強め合う条件のときもう片方が弱め合う条件になり、両者は完全に区別できます。その条件は
$$ \frac{\Delta L}{\lambda} – \frac{\Delta L}{\lambda + \Delta\lambda} = \frac{\Delta L \,\Delta\lambda}{\lambda(\lambda+\Delta\lambda)} \approx \frac{\Delta L \,\Delta\lambda}{\lambda^2} = 1 $$
すなわち $\lambda/\Delta\lambda = \Delta L/\lambda$ です。これに $\Delta L_{\max} = mN\lambda$ を入れると $R = mN$ が再現されます。
この見方の御利益は、マイケルソン干渉計 やファブリ・ペロー干渉計と同じ土俵で回折格子を比較できることです。マイケルソン干渉計をフーリエ変換分光として使うとき、最大光路差 $\Delta L$ を稼げば $R = \Delta L/\lambda$ の分解能が得られる——まったく同じ法則です。分光装置の性能は結局「どれだけ長い光路差を、位相を保ったまま作れるか」に帰着します。
分解能の上限
$R = mN$ を格子方程式で書き換えると、面白い上限が見えます。$m = d\sin\theta/\lambda$(垂直入射)を代入すると、
$$ R = mN = \frac{Nd\sin\theta}{\lambda} = \frac{W\sin\theta}{\lambda} $$
斜め入射の一般形なら $R = W(\sin\theta_i + \sin\theta_m)/\lambda$ です。$\sin$ は 1 を超えられないので、
$$ \begin{equation} R_{\max} = \frac{2W}{\lambda} \end{equation} $$
格子の分解能は、その物理的な幅と波長だけで頭打ちになります。幅 100 mm の格子を 500 nm で使うと $R_{\max} = 2\times 0.1/500\times 10^{-9} = 4\times 10^5$。実際には $\sin\theta_i + \sin\theta_m$ が 2 に届かないので、この半分程度が現実的な上限です。「もっと細かい溝を刻めば分解能が上がる」と思いがちですが、上限を決めているのは溝の細かさではなく格子の大きさなのです。
具体例:ナトリウム D 線を分離するには
ナトリウムの D 線は $\lambda_1 = 589.00$ nm、$\lambda_2 = 589.59$ nm の 2 本です。$\Delta\lambda = 0.59$ nm、平均 $\lambda = 589.30$ nm なので、必要な分解能は
$$ R = \frac{589.30}{0.59} = 998.8 \approx 999 $$
$R = mN$ より、
- $m = 1$ なら $N \ge 999$ 本。600 本/mm の格子なら幅 $W = 999 \times 1.667\ \mu\mathrm{m} = 1.67$ mm。
- $m = 2$ なら $N \ge 500$ 本。幅 $W = 0.83$ mm。
つまり、わずか 2 mm 弱の格子片でナトリウムの二重線は分離できます。逆に言えば、幅 50 mm の 600 本/mm 格子($N = 30000$)なら 1 次で $R = 30000$、$\Delta\lambda = 0.02$ nm まで見分けられます。この数字は後の Python 実験で検証します。
分解能が分かったので、次は「分離した 2 本が検出器上でどれだけ離れるか」という別の問題に移ります。分解能と分散は、混同しやすい別物です。
角分散 $d\theta/d\lambda = m/(d\cos\theta)$
分解能 $R$ は「原理的に見分けられるか」を答えますが、実際の分光器では「見分けた 2 本が検出器上で何ピクセル離れるか」も同じくらい重要です。これを決めるのが角分散(angular dispersion) です。
導出は格子方程式を微分するだけです。次数 $m$ を固定して $d\sin\theta = m\lambda$ の両辺を $\lambda$ で微分すると、左辺は合成関数の微分で $d\cos\theta \cdot (d\theta/d\lambda)$、右辺は $m$ なので、
$$ d\cos\theta \frac{d\theta}{d\lambda} = m $$
$d\theta/d\lambda$ について解いて、
$$ \begin{equation} \frac{d\theta}{d\lambda} = \frac{m}{d\cos\theta} \end{equation} $$
読み取れることは 3 つあります。
- 次数 $m$ に比例する — 高次で観測すれば、同じ波長差でも角度差が大きくなります。
- 溝が細かいほど($d$ が小さいほど)大きい — ここで初めて $d$ が効いてきます。分解能には効かなかった $d$ が、分散には効くわけです。
- $\cos\theta$ で割るので、大角度ほど急激に増える — 60° を超えたあたりから加速度的に大きくなります。エシェル格子($\theta \approx 63^\circ$ 付近を高次数で使う格子)はこの効果を最大限利用します。
線分散と実際の設計
検出器は角度ではなく位置で測るので、焦点距離 $f$ のカメラレンズを通したときの線分散 $dx/d\lambda$ に直します。焦点面上の位置は $x = f\theta$(小角近似、あるいは $f$ を実効焦点距離とみなす)なので、
$$ \frac{dx}{d\lambda} = f\frac{d\theta}{d\lambda} = \frac{fm}{d\cos\theta} $$
慣習的にはこの逆数(逆線分散、プレートファクタ)が使われます。単位は nm/mm です。
数値を入れてみましょう。600 本/mm、$m = 1$、$\lambda = 589.3$ nm($\theta = 20.71^\circ$)、$f = 500$ mm とすると、
$$ \frac{d\theta}{d\lambda} = \frac{1}{1.667\times 10^{-6}\times\cos 20.71^\circ} = 6.414\times 10^{5}\ \mathrm{rad/m} = 6.414\times 10^{-4}\ \mathrm{rad/nm} $$
$$ \frac{dx}{d\lambda} = 500\ \mathrm{mm}\times 6.414\times 10^{-4}\ \mathrm{rad/nm} = 0.321\ \mathrm{mm/nm} $$
逆線分散は $1/0.321 = 3.12$ nm/mm。画素ピッチ 10 µm の CCD なら、1 画素あたり 0.031 nm に相当します。ナトリウム D 線の 0.59 nm 差は約 19 画素ぶん——余裕で分離できる配置です。
分解能と分散は別物
ここで強調しておきたいのは、分散が大きいことと分解能が高いことは別という点です。線幅 $\Delta\lambda_{\min} = \lambda/(mN)$ より細かい構造は、いくら分散を上げて画像を拡大しても現れません。逆に、分解能が十分でも分散が足りないと、2 本の線が同じ画素に落ちて検出器側で潰れます。
実用の分光器設計では、
- $R = mN$ が要求分解能を満たすように格子サイズ $W$ を決め、
- $dx/d\lambda$ が「分解幅 $\Delta\lambda_{\min}$ が 2〜3 画素になる」ように焦点距離 $f$ と溝密度を決める
という二段構えになります。さらに入射スリット幅の像も加わるので、実効的な分解能はこれらの畳み込みで決まります。
角度と波長の関係が定量化できました。しかしここまでの議論には落とし穴があります。同じ角度に、違う次数の違う波長が飛んでくるのです。
自由スペクトル領域 $\Delta\lambda_{\mathrm{FSR}} = \lambda/m$
格子方程式 $d\sin\theta = m\lambda$ をじっと見ると、$m\lambda$ という積だけが角度を決めていることに気づきます。ということは、$m\lambda$ が同じになる組み合わせは、すべて同じ角度に重なって出てくるわけです。
たとえば 600 本/mm の格子で、
- 800 nm の 1 次:$\sin\theta = 1\times 800/1666.7 = 0.480 \Rightarrow \theta = 28.69^\circ$
- 400 nm の 2 次:$\sin\theta = 2\times 400/1666.7 = 0.480 \Rightarrow \theta = 28.69^\circ$
まったく同じ方向です。近赤外の光を測っているつもりが、実は紫の光の 2 次が混ざっていた——分光の現場で頻繁に起きる事故です。
この「次数の重なり」がどこから始まるかを定量化したのが自由スペクトル領域(Free Spectral Range, FSR) です。次数 $m$ の波長 $\lambda + \Delta\lambda$ と、次数 $m+1$ の波長 $\lambda$ が重なる条件は
$$ m(\lambda + \Delta\lambda) = (m+1)\lambda $$
左辺を展開すると $m\lambda + m\Delta\lambda$、右辺は $m\lambda + \lambda$ なので、両辺から $m\lambda$ を消して
$$ m\,\Delta\lambda = \lambda $$
$$ \begin{equation} \Delta\lambda_{\mathrm{FSR}} = \frac{\lambda}{m} \end{equation} $$
つまり、次数 $m$ で観測するとき、混じり気なしに測れる波長範囲の幅は $\lambda/m$ しかありません。
具体的には、
- $m = 1$、$\lambda = 400$ nm なら FSR = 400 nm。400〜800 nm の範囲が 1 次では重なりなしで測れます(可視域はほぼ全域カバー)。
- $m = 2$、$\lambda = 400$ nm なら FSR = 200 nm。400〜600 nm しか安全ではありません。実際、600 nm の 2 次と 400 nm の 3 次はどちらも $\sin\theta = 0.72$($\theta = 46.05^\circ$)で重なります。
- $m = 50$(エシェル格子)なら FSR は $\lambda/50$、500 nm なら 10 nm しかありません。
分解能と FSR のトレードオフ
ここに回折格子の根本的なジレンマがあります。
$$ R = mN \quad (\text{高次ほど良い}) \qquad \text{vs.} \qquad \Delta\lambda_{\mathrm{FSR}} = \frac{\lambda}{m} \quad (\text{高次ほど狭い}) $$
両者の積 $R \cdot \Delta\lambda_{\mathrm{FSR}} = mN \cdot \lambda/m = N\lambda$ は $m$ に依らず一定です。次数を上げても「分解能 × 測定可能範囲」という総量は増えず、配分が変わるだけ、というわけです。これはファブリ・ペロー干渉計のフィネスの議論と同じ構造で、多重干渉装置に共通する保存則のようなものです。

$N = 3000$、$\lambda = 550$ nm での実際の数字を並べると、このトレードオフが一目で分かります。次数を 1 → 3 に上げると分解能は 3000 → 9000 と 3 倍になりますが、自由スペクトル領域は 550 nm → 183 nm と 1/3 に縮み、両者の積はどの次数でも $1.65\times 10^6$ nm(=$N\lambda$)で一定です。高次数化とは性能を増やす操作ではなく、同じ総量を「細かさ」側に振り替える操作であり、削られた測定範囲は次数選別フィルタやクロス分散という別の仕掛けで補うしかありません。
実務上の解決策は 2 つあります。ひとつは次数選別フィルタを入れて、不要な次数の波長成分を光学的に落とす方法。もうひとつはクロス分散で、エシェル格子の高次スペクトルを、それと直交する方向に低分散のプリズムや格子でもう一度分散させ、次数ごとに縦に並べた 2 次元スペクトル画像を得る方法です。天文用の高分散分光器(系外惑星の視線速度測定など)はほぼ例外なく後者を採用しています。
次数の話が出たので、いよいよ「どの次数が明るいのか」という、実用上きわめて重要な問題に踏み込みます。ここで包絡線が主役になります。
単スリット包絡線・欠落次数・ブレーズ角
包絡線が次数の明るさを決める
強度式の第 1 因子に戻ります。
$$ \left(\frac{\sin\beta}{\beta}\right)^2, \qquad \beta = \frac{\pi a\sin\theta}{\lambda} $$
次数 $m$ の主極大は $\sin\theta = m\lambda/d$ にあるので、そこでの $\beta$ は
$$ \beta_m = \frac{\pi a}{\lambda}\cdot\frac{m\lambda}{d} = \frac{\pi m a}{d} $$
つまり、次数 $m$ の明るさは、開口率 $a/d$ だけで決まります。波長には依存しません($\lambda$ がきれいに約分されました)。
$a/d = 0.3$(開口率 30%)の格子なら、
| 次数 $m$ | 包絡線の値 $(\sin\beta_m/\beta_m)^2$ |
|---|---|
| 0 | 1.000 |
| 1 | 0.737 |
| 2 | 0.255 |
| 3 | 0.012 |
| 4 | 0.024 |
0 次($\theta = 0$、波長分解のない白色の直進成分)が最も明るく、次数が上がるにつれて急速に暗くなります。これは分光にとって非常に困った性質です。役に立たない 0 次に光の大半を持って行かれるからです。
欠落次数
包絡線がちょうどゼロになる次数では、格子関数がいくら $N^2$ でも強度はゼロです。包絡線のゼロは $\beta = p\pi$($p$ は 0 でない整数)、すなわち $a\sin\theta = p\lambda$ のときなので、主極大の条件 $d\sin\theta = m\lambda$ と連立させると
$$ \frac{m}{d} = \frac{p}{a} \;\Longrightarrow\; m = p\,\frac{d}{a} $$
$d/a$ が整数のとき、その整数倍の次数がまるごと消えます。これを欠落次数(missing order) と呼びます。$a = d/2$(開口率 50%)なら $m = 2, 4, 6, \dots$ が消え、偶数次がすべて使えません。Python の節でこれを数値的に確認します。
欠落次数は二重スリットでもおなじみの現象で、「回折の包絡線が干渉の明線を殺す」という同じ物理です。設計者にとっては、使いたい次数が欠落しないよう開口率を選ぶ必要がある、という制約になります。
ブレーズ — 包絡線を動かす
0 次に光を取られる問題を解決したのが、ブレーズ格子(blazed grating、エシェレット格子) です。アイデアはシンプルで、格子の溝を「平らな段差」ではなく「傾いた鏡の並び」にします。のこぎり刃状の断面で、各facetが角度 $\gamma_B$(ブレーズ角)だけ傾いています。
なぜこれで解決するのでしょうか。ポイントは、格子関数と包絡線が独立に設計できるという、先ほど強調した役割分担です。
- 格子関数(=どこに次数が立つか)は、溝の周期 $d$ だけで決まる。facet の形をどう変えても不変。
- 包絡線(=どこが明るいか)は、溝 1 本の形で決まる。傾いた鏡なら、その鏡の正反射方向にピークが立つ。
したがって、facet の傾きを調整して「正反射方向」を「使いたい次数の方向」に一致させれば、その次数に光を集中できます。
垂直入射($\theta_i = 0$)の場合、角度 $\gamma_B$ 傾いた鏡の正反射方向は $\theta = 2\gamma_B$ です。これを次数 $m$、設計波長 $\lambda_B$(ブレーズ波長)の方向に合わせる条件は
$$ \begin{equation} d\sin(2\gamma_B) = m\lambda_B \end{equation} $$
より一般的なリトロー配置(入射と回折が同一方向)では $2d\sin\gamma_B = m\lambda_B$ となります。
包絡線そのものは、傾いた facet を「$\gamma_B$ だけ回転した座標系での幅 $d\cos\gamma_B$ のスリット」とみなして
$$ E_{\text{blaze}}(\theta) = \mathrm{sinc}^2\!\left[\frac{\pi d\cos\gamma_B}{\lambda}\left(\sin(\theta – \gamma_B) – \sin\gamma_B\right)\right] $$
と書けます(垂直入射の場合)。角括弧の中がゼロになるのは $\sin(\theta-\gamma_B) = \sin\gamma_B$、すなわち $\theta = 2\gamma_B$ のときで、確かに正反射方向がピークです。
数値例を挙げます。600 本/mm、$\lambda_B = 500$ nm、$m = 1$、垂直入射なら
$$ \sin(2\gamma_B) = \frac{500}{1666.7} = 0.300 \Rightarrow 2\gamma_B = 17.46^\circ \Rightarrow \gamma_B = 8.73^\circ $$
この設計で各次数に配分される光の割合を計算すると、後の Python 実験で示すとおり、ブレーズなしの平坦な格子では 94% が 0 次に行くのに対し、ブレーズ格子では 98% が $m = +1$ に集まります。分光器の感度が一桁変わる、決定的な差です。
実物のバリエーション
- メカニカルルーリング格子 — ダイヤモンド刃で 1 本ずつ溝を刻む。ブレーズ形状を精密に作れるが、周期誤差がゴースト(偽のスペクトル線)を生む。
- ホログラフィック格子 — 2 光束干渉の縞をフォトレジストに記録してエッチング。周期が極めて正確で迷光が少ないが、断面が正弦波状になりブレーズしにくい(イオンビームエッチングで擬似ブレーズ化する手法もある)。
- ボリューム位相ホログラフィック(VPH)格子 — 屈折率変調を厚み方向に持たせ、ブラッグ条件で特定次数だけを高効率に回折させる。90% を超える効率が出る。
ここまでで回折格子の物理は出揃いました。最後に、もうひとつの分散素子であるプリズムと比較して、格子が選ばれる理由を確認しましょう。
プリズム分光との違い — 分散の起源
プリズムも光を虹に分けます。しかし分散の起源が根本的に違います。
プリズム:ガラスの屈折率 $n$ が波長に依存する(分散、通常分散では短波長ほど $n$ が大きい)ため、スネルの法則を通じて偏向角が波長ごとに変わります。つまり分散は材料の性質に由来します。
回折格子:格子方程式 $d\sin\theta = m\lambda$ に $\lambda$ が陽に入っているとおり、分散は幾何学に由来します。材料の性質は一切関係ありません。
この違いから、実用上の差が芋づる式に出てきます。
| 項目 | プリズム | 回折格子 |
|---|---|---|
| 分散の起源 | 屈折率の波長依存 $dn/d\lambda$ | 幾何学的な行路差 |
| 分散の線形性 | 強い非線形(短波長側で急) | ほぼ線形($\sin\theta \propto \lambda$) |
| 分解能 | $R = b\,\lvert dn/d\lambda\rvert$($b$ は底辺長) | $R = mN = W(\sin\theta_i+\sin\theta_m)/\lambda$ |
| 典型的な $R$ | 数千 | 数万〜数十万 |
| 次数の重なり | なし(1 本の光路のみ) | あり(FSR の制約) |
| 使える波長域 | 材料の透過域に制限 | 反射型なら X 線から遠赤外まで |
| 光の利用効率 | 高い(吸収以外の損失小) | ブレーズしないと 0 次に取られる |
分解能を比べてみましょう。底辺長 50 mm のフリントガラスプリズムでは $\lvert dn/d\lambda\rvert$ が可視域でおおよそ $7\times 10^{-5}$ /nm 程度なので、
$$ R \approx 5\times 10^7\ \mathrm{nm} \times 7\times 10^{-5}\ \mathrm{nm}^{-1} \approx 3500 $$
一方、同じ 50 mm 幅の 600 本/mm 格子は $N = 30000$、1 次で $R = 30000$。格子のほうが一桁近く高分解能です。しかも 2 次を使えばさらに倍になります。精密分光で格子が選ばれる最大の理由がこれです。
一方でプリズムにも強みがあります。次数の重なりがないので広い波長域を一度に取れること、光の利用効率が高いこと、そして「迷光(意図しない散乱光)」が少ないことです。だからこそ、エシェル分光器では格子で高分解能を稼ぎ、プリズムで次数を分離するというハイブリッド構成が定番になっています。互いの弱点を補い合う、うまい組み合わせです。
理論は出揃いました。ここからは Python で、これまでの式が本当に成り立つかを数値実験で確かめていきます。特に、$R = mN$ という単純な公式が、ナトリウム D 線の分離という現実の問題でどこまで正確に効くかを見ます。
Python での実装と数値実験
準備:強度分布の関数
まず、導出した強度式をそのまま関数にします。$\gamma = m\pi$ での $0/0$ は解析的に $N^2$ と分かっているので、そこだけ場合分けします。
import numpy as np
import matplotlib, matplotlib.pyplot as plt
# 日本語フォント設定
for cand in ["Hiragino Sans", "Yu Gothic", "Noto Sans CJK JP", "IPAexGothic", "Meiryo"]:
if any(cand == f.name for f in matplotlib.font_manager.fontManager.ttflist):
plt.rcParams["font.family"] = cand
break
plt.rcParams["axes.unicode_minus"] = False
def grating_intensity(theta, lam, N, d, a):
"""N本スリットの強度分布 I(θ)/I0 を返す(規格化なし、ピーク値はN^2)"""
s = np.sin(theta)
beta = np.pi * a * s / lam # スリット内部の位相差の半分
gam = np.pi * d * s / lam # 隣接スリット間の位相差の半分
# 単スリット包絡線 sinc^2(beta)
env = np.where(np.abs(beta) < 1e-9, 1.0,
(np.sin(beta) / np.where(np.abs(beta) < 1e-9, 1.0, beta))**2)
# 格子関数 (sin(Nγ)/sin(γ))^2 、γ=mπ では N^2
sg = np.sin(gam)
gr = np.where(np.abs(sg) < 1e-9, float(N)**2,
(np.sin(N * gam) / np.where(np.abs(sg) < 1e-9, 1.0, sg))**2)
return env * gr
# 600本/mm の格子、開口率 30%
d = 1.0 / 600e3 # 溝間隔 [m] = 1666.7 nm
a = 0.3 * d # スリット幅 [m]
print(f"d = {d*1e9:.1f} nm, a = {a*1e9:.1f} nm")
d = 1666.7 nm, a = 500.0 nm と表示されます。$\lambda = 589$ nm の光に対して $d/\lambda \approx 2.83$ なので、格子方程式の制約 $|m| \le d/\lambda$ から使える次数は $m = 0, \pm 1, \pm 2$ の 5 つだけ、と予測できます。この予測は次の図で確認します。
図1:スリット本数 $N$ を増やすと何が変わるか
$N = 2, 5, 20, 100$ と増やしながら強度分布を描き、「ピークの位置は変わらず、幅だけ細くなる」ことを見ます。
lam = 589.3e-9
theta = np.linspace(np.radians(-70), np.radians(70), 200001)
fig, axes = plt.subplots(4, 1, figsize=(10, 11), sharex=True)
for ax, N in zip(axes, [2, 5, 20, 100]):
I = grating_intensity(theta, lam, N, d, a)
ax.plot(np.degrees(theta), I / N**2, lw=0.8, color="#1f77b4")
# 包絡線(単スリット)を重ねる
env = grating_intensity(theta, lam, 1, d, a)
ax.plot(np.degrees(theta), env, "r--", lw=1.2, label="単スリット包絡線")
ax.set_ylabel(f"N = {N}\n規格化強度")
ax.set_ylim(0, 1.05)
ax.legend(loc="upper right", fontsize=9)
ax.grid(alpha=0.3)
for m in [-2, -1, 0, 1, 2]:
s = m * lam / d
if abs(s) <= 1:
ax.axvline(np.degrees(np.arcsin(s)), color="gray", ls=":", lw=0.8)
axes[-1].set_xlabel("回折角 θ [度]")
axes[0].set_title("スリット本数Nを増やすと主極大が鋭くなる(位置は不変)")
plt.tight_layout()
plt.show()

この図から 3 つのことが読み取れます。第一に、灰色の点線で示した格子方程式の予測位置($0^\circ, \pm 20.7^\circ, \pm 45.0^\circ$)にピークが立ち、$N$ を変えても位置はまったく動きません。第二に、$N = 2$ ではなだらかな $\cos^2$ 状の縞だったものが、$N = 100$ では針のように細い線に変わります。ピーク幅はおおよそ $1/N$ で縮んでいます。第三に、赤い破線の包絡線が各次数の高さを支配していて、$N$ を増やしてもこの屋根の形は変わりません。理論で予言した「位置は $d$ と $N$、明るさは $a$」という役割分担が、そのまま目に見えています。
図2:主極大の周りを対数軸で拡大する
主極大の裾に何があるのかは、線形軸ではまったく見えません。対数軸で 1 次のピーク付近を拡大します。
N = 20
th_c = np.arcsin(lam / d) # m=1 の主極大
w = 6 * lam / (N * d) # ゼロ点間隔の6倍ぶんの窓(sinθ換算)
th = np.arcsin(np.clip(np.sin(th_c) + np.linspace(-w, w, 40001), -1, 1))
I = grating_intensity(th, lam, N, d, a)
plt.figure(figsize=(10, 5))
plt.semilogy((th - th_c) * 1e3, I / I.max(), lw=1.0) # rad → mrad
for p in range(1, 7):
if p % N == 0:
continue
for sgn in [1, -1]:
s0 = np.sin(th_c) + sgn * p * lam / (N * d)
if abs(s0) <= 1:
plt.axvline((np.arcsin(s0) - th_c) * 1e3,
color="orange", ls=":", lw=0.8)
plt.axhline(1.0 / N**2, color="green", ls="--", lw=1.0,
label=f"副極大の目安 1/N² = {1/N**2:.4f}")
plt.xlabel("主極大からの角度ずれ [mrad]")
plt.ylabel("規格化強度(対数)")
plt.title(f"主極大の微細構造(N = {N}):ゼロ点{N-1}個と副極大{N-2}個")
plt.legend(); plt.grid(alpha=0.3, which="both")
plt.tight_layout(); plt.show()

対数軸にすると、主極大のあいだに埋もれていた微細構造が現れます。オレンジの点線で示したゼロ点が等間隔に並び、隣り合うゼロ点のあいだに小さな副極大があります。隣接する主極大のあいだにはゼロ点が $N-1$ 個、副極大が $N-2$ 個できる、という理論どおりの数です。副極大の高さは一様ではなく、主極大のすぐ隣が最も高くて主極大の 4.80%、そこから離れるにつれて単調に下がり、隣り合う主極大のちょうど中間で最小の 0.252% に達します($N = 20$ の実測値)。この下限が緑の破線で示した $1/N^2 = 0.25\%$ で、実測とほぼ完全に一致します。$N$ が数千の実際の格子では副極大の裾は $1/N^2 \sim 10^{-7}$ まで沈み、スペクトルは「きれいな線」だけになります。
図3:ナトリウム D 線の分離実験
いよいよ本題です。$\lambda_1 = 589.00$ nm と $\lambda_2 = 589.59$ nm の 2 本を重ね、$N$ を変えながら「谷ができるか」を観察します。
lam1, lam2 = 589.00e-9, 589.59e-9
lam0, dlam = 0.5 * (lam1 + lam2), lam2 - lam1
R_need = lam0 / dlam
print(f"必要な分解能 R = λ/Δλ = {R_need:.1f}") # -> 998.8
m = 1
t1, t2 = np.arcsin(m * lam1 / d), np.arcsin(m * lam2 / d)
fig, axes = plt.subplots(2, 2, figsize=(11, 7))
for ax, N in zip(axes.ravel(), [500, 875, 999, 1500]):
th = np.linspace(t1 - 1.5 * (t2 - t1), t2 + 1.5 * (t2 - t1), 40001)
I1 = grating_intensity(th, lam1, N, d, a)
I2 = grating_intensity(th, lam2, N, d, a)
tot = I1 + I2
ax.plot(np.degrees(th) * 60, I1 / N**2, lw=0.9, label="589.00 nm")
ax.plot(np.degrees(th) * 60, I2 / N**2, lw=0.9, label="589.59 nm")
ax.plot(np.degrees(th) * 60, tot / N**2, "k-", lw=1.6, label="合成")
ax.set_title(f"N = {N} (R = mN = {m*N}, R/R_need = {m*N/R_need:.2f})")
ax.set_xlabel("回折角 [分角]"); ax.set_ylabel("規格化強度")
ax.legend(fontsize=8); ax.grid(alpha=0.3)
plt.tight_layout(); plt.show()

4 枚のパネルが分離の様子を段階的に示します。$N = 500$($R = 500$、必要量の半分)では合成曲線は完全にひとつの山で、2 本があることすら分かりません。$N = 875$ でようやく頂上がわずかに平らになり、ぎりぎり谷が生まれます。$N = 999$(=レイリー基準ちょうど)では明確な谷ができ、2 本のピークがはっきり見えます。$N = 1500$ では谷が深く落ち込み、完全に分離されています。$R = mN$ という公式が、実際の強度分布の見え方と定量的に対応していることが確認できます。
図4:谷の深さで分離を定量化する
「見えるか見えないか」を目視で判断するのはあいまいなので、谷の深さを $N$ の関数として測ります。レイリー基準では谷が山の $8/\pi^2 = 0.811$ 倍になるはずです。
def dip_ratio(m, N, n=200001):
"""2本のピークの間の最小値/ピーク値。1.0なら谷なし(未分離)"""
t1, t2 = np.arcsin(m * lam1 / d), np.arcsin(m * lam2 / d)
th = np.linspace(t1, t2, n)
tot = grating_intensity(th, lam1, N, d, a) + grating_intensity(th, lam2, N, d, a)
return tot.min() / (0.5 * (tot[0] + tot[-1]))
Ns = np.arange(400, 2001, 5)
ratios = np.array([dip_ratio(1, int(N)) for N in Ns])
plt.figure(figsize=(10, 5.5))
plt.plot(Ns, ratios, lw=1.6, label="数値計算(m = 1)")
plt.axhline(8 / np.pi**2, color="r", ls="--",
label=r"レイリー基準の谷 $8/\pi^2$ = 0.811")
plt.axvline(R_need, color="g", ls="--", label=f"理論値 N = R = {R_need:.0f}")
plt.scatter([500], [dip_ratio(2, 500)], color="purple", zorder=5, s=70,
label="m = 2, N = 500(mN = 1000)")
plt.xlabel("スリット本数 N"); plt.ylabel("谷/ピーク比(小さいほどよく分離)")
plt.title("ナトリウムD線の分離度:R = mN の検証")
plt.legend(); plt.grid(alpha=0.3)
plt.tight_layout(); plt.show()

このグラフが本記事で最も重要な検証結果です。読み取れることは 3 つあります。
- 赤い破線($8/\pi^2 = 0.811$)と緑の破線($N = 999$)の交点を、青い曲線がぴたりと通ります。数値計算では $N = 999$ のとき谷/ピーク比が 0.8103 で、理論値 0.8106 と 0.04% 以内で一致しました。レイリー基準は単なる目安ではなく、$\mathrm{sinc}^2$ 型のピークに対して定量的に正確な予測を与えます。
- $N \lesssim 874$ では比が 1.0 に張り付きます。これは「谷が存在しない=合成曲線が単峰」という状態で、2 本の線が原理的に区別できません。谷が生まれ始めるのは必要分解能の約 87.5% のところで、これはスパロー基準(2 本の山が融合し始める点)に対応します。
- 紫の点($m = 2$、$N = 500$)が、$m = 1$ の $N = 1000$ とほぼ同じ高さに乗ります。実測値は 0.8086 で、$m = 1$、$N = 999$ の 0.8103 とほぼ同じ。$R$ を決めるのは $N$ 単独ではなく積 $mN$ である、という主張がこれで検証できました。溝の本数を半分に減らしても、2 次で使えば同じ分解能が得られるわけです。
図5:角分散と次数の重なり
角分散 $d\theta/d\lambda = m/(d\cos\theta)$ の波長依存性と、次数がどう重なるかを 1 枚にまとめます。
lams = np.linspace(350e-9, 900e-9, 800)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
for m in [1, 2, 3]:
s = m * lams / d
ok = np.abs(s) <= 1
th = np.arcsin(s[ok])
ax1.plot(lams[ok] * 1e9, np.degrees(th), lw=1.8, label=f"{m}次")
ax2.plot(lams[ok] * 1e9,
np.degrees(m / (d * np.cos(th))) * 1e-9, lw=1.8, label=f"{m}次")
# 次数の重なりを示す(800nm 1次 と 400nm 2次)
ax1.scatter([800, 400], [np.degrees(np.arcsin(800e-9/d)),
np.degrees(np.arcsin(2*400e-9/d))],
color="red", zorder=5, s=60, label="同じ角度に重なる例")
ax1.set_xlabel("波長 [nm]"); ax1.set_ylabel("回折角 θ [度]")
ax1.set_title("次数ごとの回折角(重なりに注意)")
ax2.set_xlabel("波長 [nm]"); ax2.set_ylabel("角分散 dθ/dλ [度/nm]")
ax2.set_title("角分散は次数と波長とともに増える")
for ax in (ax1, ax2):
ax.legend(); ax.grid(alpha=0.3)
plt.tight_layout(); plt.show()

左のグラフでは、赤い点が示すとおり 800 nm の 1 次と 400 nm の 2 次がまったく同じ $28.7^\circ$ に来ています。次数曲線が波長軸方向に重なり合う様子が一目で分かり、$\Delta\lambda_{\mathrm{FSR}} = \lambda/m$ という制約の意味が視覚的に理解できます。右のグラフでは、角分散が次数に比例して大きくなること、そして同じ次数でも長波長側(=大きな $\theta$ 側)で $1/\cos\theta$ の効果により急に立ち上がることが見て取れます。この格子では 2 次は $\lambda \le d/2 = 833.3$ nm までしか存在しませんが、その手前で分散は急上昇し、実測すると 700 nm で 1 次の 3.35 倍、800 nm では 6.27 倍にまで達します。「高次で使うと分散が稼げる」というエシェル格子の発想の根拠がここにあります。
図6:欠落次数とブレーズの効果
最後に、包絡線の設計がどれだけ効くかを定量的に確かめます。まず欠落次数から。
theta = np.linspace(np.radians(-75), np.radians(75), 300001)
lam = 550e-9
N = 200
plt.figure(figsize=(11, 5))
for frac, style in [(0.3, "-"), (0.5, "--")]:
I = grating_intensity(theta, lam, N, d, frac * d)
plt.plot(np.degrees(theta), I / N**2, style, lw=1.0, label=f"a/d = {frac}")
for m in range(-2, 3):
s = m * lam / d
if abs(s) <= 1:
plt.axvline(np.degrees(np.arcsin(s)), color="gray", ls=":", lw=0.8)
plt.xlabel("回折角 θ [度]"); plt.ylabel("規格化強度")
plt.title("開口率 a/d = 0.5 では偶数次が消える(欠落次数)")
plt.legend(); plt.grid(alpha=0.3); plt.ylim(0, 1.05)
plt.tight_layout(); plt.show()
# 各次数の包絡線の値を数値で確認
for frac in [0.3, 0.5]:
vals = []
for m in range(0, 5):
b = np.pi * m * frac
vals.append(1.0 if b == 0 else (np.sin(b) / b)**2)
print(f"a/d={frac}: " + ", ".join(f"m={m}:{v:.4f}" for m, v in enumerate(vals)))

出力は a/d=0.3: m=0:1.0000, m=1:0.7368, m=2:0.2546, m=3:0.0119, m=4:0.0243、a/d=0.5: m=0:1.0000, m=1:0.4053, m=2:0.0000, m=3:0.0450, m=4:0.0000 となります。開口率 50%(破線)では 2 次と 4 次の強度が厳密にゼロになり、グラフ上でも $\pm 41^\circ$ 付近のピークが完全に消えています。$m = p\,d/a$ という欠落次数の条件が、数値でも図でも確認できました。同時に、どちらの開口率でも 0 次が最も明るく、分光に使いたい高次に光が回らないという問題も明らかです。
次に、ブレーズがこの問題をどう解決するかを見ます。
lamB, mB = 500e-9, 1
gB = 0.5 * np.arcsin(mB * lamB / d) # 垂直入射のブレーズ角
print(f"ブレーズ角 γ_B = {np.degrees(gB):.3f}° (2γ_B = {2*np.degrees(gB):.2f}°)")
def blaze_env(th, lam, g):
"""傾いたfacetによる包絡線(垂直入射)"""
x = np.pi * d * np.cos(g) / lam * (np.sin(th - g) - np.sin(g))
return np.where(np.abs(x) < 1e-12, 1.0,
(np.sin(x) / np.where(np.abs(x) < 1e-12, 1.0, x))**2)
def flat_env(th, lam, a_):
b = np.pi * a_ * np.sin(th) / lam
return np.where(np.abs(b) < 1e-12, 1.0,
(np.sin(b) / np.where(np.abs(b) < 1e-12, 1.0, b))**2)
orders = [m for m in range(-3, 4) if abs(m * lamB / d) <= 1]
th_m = np.array([np.arcsin(m * lamB / d) for m in orders])
eb = blaze_env(th_m, lamB, gB)
ef = flat_env(th_m, lamB, 0.9 * d)
print("次数 :", orders)
print("ブレーズ配分:", np.round(eb / eb.sum(), 4))
print("平坦格子配分:", np.round(ef / ef.sum(), 4))
出力は次のようになります。
ブレーズ角 γ_B = 8.729° (2γ_B = 17.46°)
次数 : [-3, -2, -1, 0, 1, 2, 3]
ブレーズ配分: [5.900e-03 2.400e-03 5.000e-04 0.000e+00 9.808e-01 2.500e-03 7.800e-03]
平坦格子配分: [0.0086 0.0102 0.0112 0.9401 0.0112 0.0102 0.0086]

図の左側では、平坦な格子の包絡線(灰色)の頂点が 0 次にあるのに対し、ブレーズ格子の包絡線(赤)の頂点が facet の正反射方向 $2\gamma_B = 17.46^\circ$ へ移動し、そこにちょうど $m = +1$ の位置が来ていることが分かります。右側の棒グラフはその結果で、光の行き先が 0 次から +1 次へ丸ごと入れ替わっています。この数字がブレーズの威力を端的に示しています。平坦な格子(開口率 90%)では光の 94.0% が 0 次に行ってしまい、分光に使える $m = +1$ にはわずか 1.1% しか届きません。ところが facet を $8.73^\circ$ 傾けるだけで、98.1% が $m = +1$ に集中し、0 次はほぼ完全に消えます。同じ格子周期・同じ次数位置のまま、明るさの配分だけを 90 倍近く変えたわけです。「格子関数と包絡線は独立に設計できる」という理論的な洞察が、そのまま実用的な設計手法になっている好例です。
図7:分光器の全体像をシミュレートする
最後に、複数の輝線を持つ光源のスペクトルを、実際の分光器の焦点面に見立てて描いてみます。
# 水素バルマー線 + ナトリウムD線 を含む仮想光源
lines = [(410.2e-9, 0.3, "Hδ"), (434.0e-9, 0.5, "Hγ"), (486.1e-9, 0.8, "Hβ"),
(589.0e-9, 1.0, "Na D2"), (589.6e-9, 0.5, "Na D1"), (656.3e-9, 1.0, "Hα")]
N, f = 30000, 0.5 # N=30000(幅50mm相当)、焦点距離 500mm
m = 1
th0 = np.arcsin(m * 550e-9 / d) # 焦点面の中心波長を550nmに
x = np.linspace(-0.06, 0.06, 400001) # 焦点面座標 [m]
th = th0 + x / f
spec = np.zeros_like(x)
for lam_i, w, _ in lines:
spec += w * grating_intensity(th, lam_i, N, d, a) / N**2
plt.figure(figsize=(12, 4.5))
plt.plot(x * 1e3, spec, lw=0.8, color="#333333")
for lam_i, w, name in lines:
xi = f * (np.arcsin(m * lam_i / d) - th0)
if abs(xi) < 0.06:
plt.annotate(f"{name}\n{lam_i*1e9:.1f} nm", (xi * 1e3, w),
textcoords="offset points", xytext=(0, 8),
ha="center", fontsize=8)
plt.xlabel("焦点面上の位置 [mm]"); plt.ylabel("相対強度")
plt.title("仮想分光器の焦点面(600本/mm・N=30000・f=500mm・1次)")
plt.grid(alpha=0.3); plt.tight_layout(); plt.show()
print(f"逆線分散 = {1/(f*(m/(d*np.cos(th0)))*1e-9*1e3):.2f} nm/mm")

焦点面上に輝線が並び、波長順にほぼ等間隔で分布しています(プリズムなら短波長側に偏るところが、格子ではほぼ線形になっているのが分かります)。逆線分散は約 3.15 nm/mm(中心波長 550 nm での値)と出力され、先に手計算した 3.12 nm/mm(589 nm での値)とよく一致します。ナトリウム D 線の 2 本は 0.19 mm 離れており、$N = 30000$ なら $R = 30000$($\Delta\lambda_{\min} = 0.02$ nm)なので、線幅よりはるかに広く離れて完全に分離されています。この配置なら、画素ピッチ 10 µm の検出器で 19 画素ぶんの間隔となり、実用上まったく問題ありません。
一連の数値実験を通じて、$d\sin\theta = m\lambda$、$R = mN$、$d\theta/d\lambda = m/(d\cos\theta)$、$\Delta\lambda_{\mathrm{FSR}} = \lambda/m$、そして包絡線とブレーズ——すべての式が、実際の強度分布と定量的に一致することが確認できました。
まとめ
本記事では、回折格子を「N 本スリットの多重干渉」として一から導出し、分光器設計の基本式をすべて取り出しました。
- 強度分布 — 等比級数の和から $I(\theta) = I_0 (\sin\beta/\beta)^2 (\sin N\gamma/\sin\gamma)^2$ が導かれる。第 1 因子(包絡線)はスリット 1 本の形が、第 2 因子(格子関数)はスリットの並び方が決める。どこに線が出るかと、どれだけ明るいかは、独立に設計できる。
- 格子方程式 — 格子関数の主極大は $\gamma = m\pi$、すなわち $d\sin\theta = m\lambda$。隣接スリットの行路差が波長の整数倍という単純な条件で、斜め入射では $d(\sin\theta_i + \sin\theta_m) = m\lambda$。
- ピーク幅 — 主極大の半幅は $\sin\theta$ 換算で $\lambda/(Nd) = \lambda/W$。$W$ は照明された格子の全幅で、これは幅 $W$ の単一開口の回折幅と同じ。分解能を決めるのは溝の細かさではなく格子の大きさ。
- 分解能 — レイリー基準から $R = \lambda/\Delta\lambda = mN$。最大光路差 $mN\lambda$ から $R = \Delta L_{\max}/\lambda$ という一般則としても導ける。上限は $R_{\max} = 2W/\lambda$。
- 角分散 — 格子方程式の微分から $d\theta/d\lambda = m/(d\cos\theta)$。分散は $d$ に依存するが分解能は依存しない、という点で両者は別物。
- 自由スペクトル領域 — $\Delta\lambda_{\mathrm{FSR}} = \lambda/m$。$R$ と FSR の積は $N\lambda$ で一定という保存則があり、高次数化は分解能と測定範囲のトレードオフでしかない。
- 欠落次数とブレーズ — 包絡線のゼロが $m = p\,d/a$ の次数を消す。facet を傾けて包絡線の頂点を目的の次数に合わせるのがブレーズで、数値実験では 0 次への 94% の漏れが、$m = +1$ への 98% の集中に変わった。
- プリズムとの違い — プリズムの分散は材料の $dn/d\lambda$、格子の分散は幾何学。格子のほうが一桁高分解能だが、次数の重なりという代償を払う。
回折格子の物理は、ここから複数の方向に広がっていきます。ひとつは多重干渉一般への道で、ファブリ・ペロー干渉計、薄膜干渉フィルタ、ブラッグ反射器(DBR)、そして X 線回折によるブラッグの法則 $2d\sin\theta = m\lambda$ は、すべて同じ「周期構造による位相の一致」の変奏です。もうひとつはフーリエ光学への道で、格子関数 $(\sin N\gamma/\sin\gamma)^2$ は「櫛関数と矩形窓の畳み込み」のフーリエ変換にほかならず、開口の形と回折像がフーリエ変換対で結ばれるという一般論の具体例になっています。さらに、周期構造が波を特定方向に振り分けるという発想は、フェーズドアレイアンテナのグレーティングローブや、フォトニック結晶のバンドギャップにもそのまま受け継がれます。
次のステップとして、以下の記事も参考にしてください。
- フラウンホーファー回折を理解する — 単スリットから回折格子まで — 遠方場が開口関数のフーリエ変換になる一般論。FFT で任意開口の回折像を計算する方法も扱っています
- マイケルソン干渉計の原理と応用 — 光路差から分解能が決まるという同じ法則を、2 光束干渉の側から見た記事
- グレーティングローブと素子間隔 — なぜアレイは半波長で並べるのか — 本記事の格子方程式とまったく同じ数学が、電波のアレイアンテナで「避けるべき現象」として現れる話
- 波動光学入門(干渉と回折) — 干渉と回折の基礎を、ヤングの二重スリットから復習したい方へ