シリーズ「コンピュータの誤り訂正のしくみ」 第7回
回路が「聞き返す」とは?
1 光日の、向こう
前回の終わりに、こう問いかけた。 CD の傷は、何度読み直しても、同じところで同じように化ける。中身を送り直してくれる相手は、どこにもいない。 けれど、探査機には、知らせを送ってきた相手がいる。
探査機なら、もう一度送ってもらえばいいのではないか。
この問いは、実は、このシリーズのいちばん最初からあった。
第1回では、4 桁の知らせに、1 の数を偶数にそろえる検査の桁を 1 つ足した(パリティ)。 どの 1 桁が化けても、受け取った側のランプが光った。 けれど、ランプは「どこかが化けた」としか言わない。
人間どうしなら、こういうときは「もう一度言って」と頼む。 回路でも、同じように頼めばいいのではないか。
第1回では、そう考えて、すぐに引っ込めた。 相手は、遠くの探査機ボイジャー 1 号だったからだ。 電波でも、片道 1 日近くかかる。
遠すぎて、聞き返せない。 だから第2回からは、受け取った側だけで直す方法を探してきた。 3 回送って多数決をとり、縦横に並べ、ハミング符号で番号を言い当て、直せないときは「直せない」と言わせ、まとめて化ける傷は散らした。
ここで、いったん立ち止まってみたい。 本当に、聞き返してはいけなかったのだろうか。
ボイジャー 1 号は、いまも地球から遠ざかっている。 NASA によると、2026 年 11 月 18 日、ボイジャー 1 号は、地球から1 光日のところに達する。 光が 24 時間かかって進む距離。約 259 億 km だ。
地球の側で、その声を拾っているのは、NASA の深宇宙通信網の大きなパラボラアンテナだ。
ここから「もう一度」と頼むと、どうなるか。 頼む声が探査機に届くまで、1 日。 探査機が送り直した知らせが地球に届くまで、また 1 日。 返事が来るのは、2 日後である。
時間は上から下へ流れる。ボイジャー 1 号が 1 光日のところにいるとき、矢印 1 本が片道 1 日
2 日待てば、送り直してもらえる。 それは、高いのか、安いのか。 この回は、そこを数えてみよう。
化けたときだけ、頼む
まず、聞き返すやり方を、きちんと組み立てておく。
送る側は、第1回と同じく、4 桁の知らせに検査の桁を 1 つ足して、5 桁で送る。 受け取った側は、ランプを見る。
- ランプが消えていれば、そのまま受け取る
- ランプが光ったら、「もう一度」と頼む。送る側は、同じ 5 桁を送り直す
ポイントは、化けたときだけ頼むことだ。 化けなかった知らせについては、何もしない。 だから、化けなかった知らせの余分は、検査の桁の 1 桁だけで済む。
ほかのやり方と比べてみよう。 第2回の 3 回送るやり方は、知らせ 4 桁に 8 桁を足した。 第4回のハミング符号は、3 桁を足した。 どちらも、化けても化けなくても、毎回その桁を払う。
聞き返すやり方は、化けたときにだけ、余分を払う。 払うのは、送り直してもらう 5 桁と、返事を待つ時間だ。
もう 1 つ、目立たないが大事な約束がある。 送る側は、送った知らせを、届いたと分かるまで、とっておかなければならない。 とっておかなければ、「もう一度」と頼まれても、送り直しようがないからだ。 1 節の図でいえば、探査機の線の横にある紫の帯がそれだ。
押して、確かめる
下のシミュレータは、同じ 5 通の知らせを、2 つのやり方で送る。
受け取った側のマスを押すと、その桁が通り道で化ける。 「化け方の例」のボタンを押すと、上と下に、同じ化け方をまとめて入れられる。
直す? 聞き返す? シミュレータ
同じ 5 通の知らせを、2 つのやり方で送る。マスを押すと、その桁が通り道で化ける
直す(1 通 7 桁・第4回のハミング符号)
1 か所なら、受け取った側が自分で直す。聞き返さない
- 2 通目:1 か所 → 6 番を直した
聞き返す(1 通 5 桁・第1回のパリティ)
ランプが光った通だけ「もう一度」と頼み、送り直してもらう
- 2 通目:1 回聞き返して、2 回目で受け取った
○ そのまま受け取った ✓ 直した ↩ もう一度と頼んだ
✗ 送ったのと違う(あなたにだけ見える)
赤い枠は、あなたにだけ見えている。受け取った側の回路には見えない
比べる(5 通ぶん)
| 直す | 聞き返す | |
|---|---|---|
| 送った桁 | 35 | 30 |
| 聞き返した回数 | 0 | 1 |
| そろうまで、よけいに待つ | なし | 1 往復一瞬 |
| 送ったのと違う通(あなたにだけ見える) | 0 | 0 |
頼むのは、化けた通だけ。頼んでいるあいだも、ほかの通は届きつづける
「もう一度」と頼む声の桁は数えない
送った桁は、聞き返すほうが 5 桁少ない。 聞き返しはしたが、待つのは一瞬だ。
最初は、5 通のうち 2 通目だけが、1 か所化けている。
上では、受け取った側が 6 番を直した。 下では、ランプが光り、「もう一度」と頼んで、2 回目の 5 桁を受け取った。 どちらも、正しい知らせを受け取れている。
いちばん下の「比べる」を見てほしい。 送った桁は、直すほうが 35 桁、聞き返すほうが 30 桁。 聞き返すほうが、5 桁少ない。
今度は、「化け方の例」で「5 通に 2 通」を押してみてほしい。 送った桁は、どちらも 35 桁。並んだ。
「5 通とも」なら、どうだろう。 直すほうは 35 桁のまま。聞き返すほうは 50 桁。 今度は、直すほうが少ない。 聞き返すほうは、化けた通の数だけ、5 桁ずつ増えていく。
「化けない」を押すと、直すほうは 35 桁、聞き返すほうは 25 桁。 化けなければ、聞き返すほうは、ただ検査の桁を 1 桁ずつ足しただけで済む。
ここまで、待つ時間は「一瞬」にしておいた。 となりの機械と話しているなら、聞き返しても、ほとんど待たない。
では、「往復」を「約 2 日(ボイジャー 1 号)」に切り替えてみてほしい。 送った桁は、何も変わらない。 けれど、1 通でも聞き返せば、その知らせがそろうまで、2 日よけいに待つ。
最後に、「5 通に 1 通」に戻して、聞き返すほうの 2 通目の下に続く「2 回目」の 5 桁のどれかを押してみてほしい。 送り直した知らせも、化けることがある。 ランプがまた光り、もう一度頼む。待つ時間は、さらに 1 往復のびる。
直すか、聞き返すか
シミュレータで分かったことを、まとめておこう。
- 化けるのがまれなら、聞き返すほうが安い。化けなかった知らせは、1 桁しか余分を払わないから
- 化けるのがしょっちゅうなら、直すほうが安い。聞き返すたびに、知らせを丸ごと送り直すから
- そして、聞き返せないなら、直すしかない
この 3 つ目が、いちばん効く。 これまでの回に出てきた場所を、並べてみよう。
| どこで | 聞き返せるか | だから |
|---|---|---|
| CD・QR コード(第6回) | 相手がいない。傷は刻まれていて、何度読んでも同じ | 直す |
| ECC メモリ(第5回) | 元の値は、そのメモリの中にしかない | 直す。直せなければ止まる |
| 探査機(第1回) | 相手はいる。けれど、返事は 2 日後 | 直す |
| インターネット | 相手がいて、返事もすぐ来る | 気づいて、聞き返す |
第5回の終わりに、「止まったあと、どうするか。探査機なら、もう一度送ってもらえばいいのか」と書いた。 メモリには、「もう一度送って」と頼める相手がいない。 覚えている値は、そこにしかない。 だから、1 か所なら直し、直せないと分かったら、止まるしかなかった。
一方、インターネットでは、相手はすぐそこにいる。 返事は、ほとんど待たずに返ってくる。 それなら、検査の桁をたくさん足して直すより、気づいて聞き返すほうが安い。
直す回路と、聞き返す回路。 どちらかが賢くて、どちらかが劣っているわけではない。
直すか、聞き返すか。決めるのは、回路の賢さではない。もう一度送ってもらえるかどうかだ。
気づくを、強くする
聞き返すやり方では、回路の仕事は「気づく」ことだけだ。 直さなくていい。そのかわり、見逃さないことが大事になる。
第1回のパリティは、1 桁しか使わないので、2 か所の化けを見逃した。 そこで、実際の通信では、もっと強い「気づく」を使う。
代表が、CRC(Cyclic Redundancy Check)だ。 ひとことで言えば、パリティを強くしたもの。 知らせの 0 と 1 の並びを、決まった並びで「割り算」して、その余りを検査の桁にする。 割り算といっても、繰り下がりのかわりに XOR を使う、少し変わった割り算だ。 検査の桁を何桁にもできるので、パリティよりずっと多くの化け方に気づける。
ケーブルでつないだ機械どうしの通信(イーサネット)では、送るひとかたまりの後ろに、CRC で作った 32 桁の検査の桁を付ける。 受け取った側は、検査に引っかかったかたまりを、壊れたものとして扱い、使わない。 直そうとはしない。
使わなかったかたまりは、届かなかったのと同じだ。 それを送り直させるのは、もっと上で、パソコンどうしのやりとりを取り仕切っている TCP という決まりである。 受け取った側は「ここまで届いた」と返事をし、送った側は、届いたと分からなかったぶんを、もう一度送る。
気づく役と、聞き返す役が、分かれているのだ。
実は、CRC には、このシリーズで一度すれ違っている。 第3回の磁気テープで、「もっと手の込んだ、別の検査の桁も使っていた」と書いた。 あれも、CRC だった。 テープでは、気づくだけでなく、直す手がかりにも使っていた。
CRC の検査の桁は、桁を 1 つずつ送り出しながら、ごく小さな回路で作れる。 『記憶のしくみ』を読んだ人は、第7回のシフトレジスタを思い出してほしい。CRC の検査の桁は、あのシフトレジスタに XOR をいくつかはさんだ回路で作れる。
探査機は、直す
では、探査機は、どうしているのか。
ボイジャーは、受け取った側で直すための符号を積んで、飛んでいった。
JPL(NASA のジェット推進研究所)がボイジャーの通信をまとめた資料によれば、木星と土星を訪れたころは、ゴレイ符号という符号を使っていた。 知らせの 1 桁ごとに、余分な桁を 1 桁送る。余分は、知らせと同じだけあった。
その先の天王星と海王星は、もっと遠い。 そこでボイジャーは、そのために積んでいったリード・ソロモン符号に切り替えた。 余分は、知らせ 5 桁に 1 桁ほどに減った。 そのうえ、受け取って直したあとに残る誤りは、1000 桁に 5 桁だったのが、100 万桁に 1 桁になった。
第6回の CD と QR コードにも出てきた、あのリード・ソロモン符号だ。 ボイジャーは、さらに、畳み込み符号という、また別の直す符号も使っていた。
聞き返すのに何時間も、何日もかかる相手とは、余分な桁を払ってでも、受け取った側で直す。 第1回で「遠すぎて、聞き返せない」と書いたのは、正確には、こういうことだった。 聞き返すことは、できる。けれど、待つより、直すほうがいい。
歩いてきた道
物差しの表を、最後まで伸ばしておこう。
| 回 | やり方 | 送る桁数 | 1 か所化けたら | 2 か所化けたら |
|---|---|---|---|---|
| — | そのまま | 4 | 気づかない | 気づかない |
| 1 | パリティ | 5 | 気づく | 気づかない |
| 2 | 3 回送る | 12 | 直す | 別の桁なら直る。同じ桁の 2 回なら、間違った値に直す |
| 3 | 縦横のパリティ | 8 | 直す | 気づくことが多いが、間違って直すこともある |
| 4 | ハミング符号 | 7 | 直す | 化けていない桁を直して、3 か所にしてしまう |
| 5 | ハミング符号 + 1 桁 | 8 | 直す | 気づく(直さない) |
| 6 | + 1 桁、4 通を並べ替える | 8 × 4 通 | 直す | 別の通なら直す。同じ通なら気づく。続けて 4 桁までなら直す |
| 7 | パリティ + 聞き返す | 5(化けたら +5) | 気づいて、聞き返す | 気づかない |
こうして並べると、このシリーズの回路がしてきたことは、タイトルの動詞で言える。
気づく。 繰り返す。 突き止める。 言い当てる。 あきらめる。 散らす。 そして、聞き返す。
どの回路も、送った知らせを一度も見ていなかった。
気づけない、化け方
表の最後の行を、もう一度見てほしい。 2 か所化けたら、気づかない。
聞き返すやり方は、気づかなければ、聞き返しようがない。 では、直すやり方なら安心かというと、そうでもない。
下のシミュレータは、1 通目だけが、2 か所化けた状態から始まる。
直す? 聞き返す? シミュレータ
同じ 5 通の知らせを、2 つのやり方で送る。マスを押すと、その桁が通り道で化ける
直す(1 通 7 桁・第4回のハミング符号)
1 か所なら、受け取った側が自分で直す。聞き返さない
- 1 通目:2 か所 → 6 番を直した。けれど、送ったのと違う
聞き返す(1 通 5 桁・第1回のパリティ)
ランプが光った通だけ「もう一度」と頼み、送り直してもらう
- 1 通目:2 か所 → ランプが光らない。けれど、送ったのと違う
○ そのまま受け取った ✓ 直した ↩ もう一度と頼んだ
✗ 送ったのと違う(あなたにだけ見える)
赤い枠は、あなたにだけ見えている。受け取った側の回路には見えない
比べる(5 通ぶん)
| 直す | 聞き返す | |
|---|---|---|
| 送った桁 | 35 | 25 |
| 聞き返した回数 | 0 | 0 |
| そろうまで、よけいに待つ | なし | なし |
| 送ったのと違う通(あなたにだけ見える) | 1 | 1 |
頼むのは、化けた通だけ。頼んでいるあいだも、ほかの通は届きつづける
「もう一度」と頼む声の桁は数えない
送ったのと違う知らせを、直すほうは 1 通、聞き返すほうは 1 通、受け取った。 直すほうは化けていない桁を直し、聞き返すほうは化けたことに気づかなかった。どちらの回路も、間違えたとは思っていない。
上の直すほうは、化けていない 6 番を「直して」、3 か所を違う桁にした。 下の聞き返すほうは、ランプが光らず、そのまま受け取った。 どちらの回路も、間違えたとは思っていない。
これは、パリティやハミング符号が弱いから起きるのではない。 どんな決まりにも、こういう化け方がある。
正しいパターンを 2 つ、思い浮かべてほしい。
たとえば、知らせ 1011 を第1回のパリティで送る 10111 と、知らせ 0011 を送る 00110。
この 2 つは、1 桁目と 5 桁目が違う。
10111 を送って、ちょうど 1 桁目と 5 桁目が化けたら、どうなるか。
届くのは 00110。
送る側が送りうる、正しいパターンだ。
知らせ 1011 の正しいパターン
知らせ 0011 の正しいパターン。1 の数は偶数で、ランプは光らない
赤い枠と ⚡ は、あなたにだけ見えている。受け取った側の回路には見えない
受け取った側は、送った知らせを知らない。
00110 が届けば、0011 が送られてきた、と読むしかない。
ランプが光らないのは、回路の手抜きではない。
光る理由が、どこにもないのだ。
違う桁だけを、ちょうど化かせばいい。 正しいパターンが 2 つ以上ある決まりなら、必ず、こういう化け方がある。
このシリーズで見てきた決まりでいえば、こうなる。
- パリティ(5 桁)は、2 か所化けると、必ず別の正しいパターンに落ちる(160 通りすべて)
- ハミング符号(7 桁)は、3 か所化ける 560 通りのうち 112 通りで、別の正しいパターンに落ちる
- ハミング符号 + 1 桁(8 桁)は、4 か所化ける 1120 通りのうち 224 通りで、別の正しいパターンに落ちる
検査の桁を増やすと、こういう化け方は、もっとたくさんの桁が同時に化けないと起きなくなる。 けれど、なくなりはしない。 CRC でも、同じだ。
回路は、ありえないパターンを、一度も見落としていない。 届いたのは、ありえないパターンではなかったのだ。
片道だけの、知らせ
第1回で、こう書いた。
それでも、化けたことに気づける。 正しい答えを知らなくても、「ありえない」ことは分かるからだ。
このシリーズの回路は、どれも、この一文の上に立っていた。 パリティも、多数決も、縦横も、ハミング符号も、8 桁目も、並べ替えも、聞き返すことも。
けれど、裏を返せば、回路に分かるのは「ありえない」ことだけだ。 ありうるパターンに化けて届いた知らせは、回路にとって、正しい知らせそのものである。
最終回の今、こう書き足しておきたい。
回路は、一度も見落としていない。それでも、気づけない化け方は残る。
最後に、もう一度、ボイジャー 1 号を思い出してほしい。
2026 年 11 月 18 日、ボイジャー 1 号は、地球から 1 光日のところに達する。 「もう一度」と頼めば、返事は 2 日後だ。 だから、ボイジャーは、聞き返さなくても受け取った側で直せるように、余分な桁を足して送る作りになっている。
地上の大きなアンテナが拾うのは、10 億分の 1 の、さらに 10 億分の 1 ワットにも満たない電波だ。 その中の 0 と 1 のいくつかは、途中で化けている。 受け取った側の回路は、元の知らせを一度も見ないまま、化けた桁を探し、反転し、直せないものには「直せない」と言う。
それでも、気づけない化け方は、どこかに残る。 回路は、それを知らないまま、黙って次の桁を受け取る。
1977 年に送り出された探査機の声は、そうやって、片道だけの旅を、いまも続けている。
参考文献
- 松下俊介 著. 基礎からわかる論理回路. 第2版, 森北出版, 2021.7. 978-4-627-82842-1. https://ndlsearch.ndl.go.jp/books/R100000002-I031573740
- 今井秀樹 著. 符号理論, 電子情報通信学会, 1990.3. 4-88552-090-8. https://ndlsearch.ndl.go.jp/books/R100000002-I000002038659
- NASA. "Voyager 1". NASA Science. https://science.nasa.gov/mission/voyager/voyager-1/, (参照 2026-9-27).
- NASA. "Where Are Voyager 1 and 2 Now?". NASA Science, 2026. https://science.nasa.gov/mission/voyager/where-are-voyager-1-and-voyager-2-now/, (参照 2026-10-4).
- NASA. "Deep Space Network". NASA. https://www.nasa.gov/communicating-with-missions/dsn/, (参照 2026-9-27).
- Jeff Mangum. "How Strong is the Signal from the Voyager 1 Spacecraft When it Reaches Earth?". National Radio Astronomy Observatory, 2015. https://public.nrao.edu/ask/how-strong-is-the-signal-from-the-voyager-1-spacecraft-when-it-reaches-earth/, (参照 2026-9-27).
- Roger Ludwig, Jim Taylor. "Voyager Telecommunications". DESCANSO Design and Performance Summary Series, Article 4, Jet Propulsion Laboratory, 2002. https://descanso.jpl.nasa.gov/DPSummary/Descanso4--Voyager_new.pdf, (参照 2026-10-4).
- AMD. "FCS". Tri-Mode Ethernet MAC LogiCORE IP Product Guide (PG051). https://docs.amd.com/r/en-US/pg051-tri-mode-eth-mac/FCS, (参照 2026-10-4).
- W. Eddy, Ed. "Transmission Control Protocol (TCP)". RFC 9293, IETF, 2022. https://www.rfc-editor.org/rfc/rfc9293.html, (参照 2026-10-4).
- The Japan Prize Foundation. "1999 Japan Prize: Dr. W. Wesley Peterson". Japan Prize. https://www.japanprize.jp/en/prize_past_1999_prize01.html, (参照 2026-10-4).