上記のようなことをお考えでしたら、このまま読んでいってください。
この記事では、「パリティ」に関する下記の内容をわかりやすく解説いたします。
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
パリティとは?

パリティとは、データに誤りが発生していないかを検出するために、データに含まれる「1」の数が偶数か奇数かを利用する仕組みです。
わかりやすく説明しましょう。
コンピューターでは、データを「0」と「1」の組み合わせで表現します。
この「0」と「1」のデータをビット列と呼びます。
例えば、「1011」というデータがあったとします。
このデータには「1」が3個含まれています。
3は奇数なので、このデータの「1」の数は奇数です。
パリティでは、このようにデータに含まれる「1」の数を利用して、データが正しく伝わったかどうかを確認します。
そのために追加される情報がパリティビットです。
パリティビットとは?
パリティビットとは、データに誤りがないかを確認するために付加する1ビットの検査用情報です。
データの「1」の数が偶数になるようにする方式や、奇数になるようにする方式があります。
「ビット」とは、コンピューターが扱う情報の最小単位で、「0」または「1」のどちらかを表します。
例えば、「1011」という4ビットのデータがあるとします。
パリティでは、このビットデータにさらにビットを追加することでエラーを検出します。
このとき、元のデータに追加して、後からデータの異常を確認するために使うビットがパリティビットです。
1011 + 1 ←(+1)がパリティビット
パリティはどこで使われている?
パリティは、主にデータの誤りを検出する必要がある場面で利用されてきました。
代表的な例には、
などがあります。
特にストレージ分野では、RAIDの仕組みを理解するうえで「パリティ」は重要なキーワードです。

パリティを身近な例で説明すると?

パリティは、「人数合わせ」に例えるとわかりやすいでしょう。
例えば、あるグループでは、「部屋に入る人数は必ず偶数にする」というルールを決めているとします。
4人なら、「偶数なのでOK」です。
5人なら、「奇数なのでNG」です。
パリティも基本的な考え方は同じです。
コンピューターのデータに含まれる「1」の数を数えて、「必ず偶数にする」または「必ず奇数にする」というルールを決めておきます。
そして、受け取ったデータの「1」の数がルールと合わなければ、「どこかでデータが変わった可能性がある」と判断します。
つまりパリティは、コンピューターのデータに対する簡単な人数チェックのようなものだと考えると理解しやすいでしょう。
パリティの種類
パリティには、代表的なものとして「偶数パリティ」と「奇数パリティ」があります。
偶数パリティ
偶数パリティは、データとパリティビットを合わせた「1」の数が偶数になるようにする方式です。
例えば、「1011」には「1」が3個あります。
3は奇数なので、パリティビットに「1」を追加します。
1011 1
これで「1」は4個になり、偶数になります。
逆に、最初から「1」が偶数個の場合は、パリティビットを「0」にします。
奇数パリティ
奇数パリティは、データとパリティビットを合わせた「1」の数が奇数になるようにする方式です。
例えば、「1011」には「1」が3個あります。
すでに奇数なので、パリティビットは「0」にします。
1011 0
この場合、「1」の数は3個のままなので奇数です。
このように、
- 偶数になるようにする → 偶数パリティ
- 奇数になるようにする → 奇数パリティ
と覚えると簡単です。
垂直パリティと水平パリティ
パリティには、データをどのようにまとめてチェックするかによって、「垂直パリティ」や「水平パリティ」といった方式もあります。
垂直パリティは、一定の単位ごとにパリティを付加する方式です。
一方、水平パリティは、複数のデータを並べて、同じ位置のビットをまとめてパリティ計算する方式です。
また、垂直パリティと水平パリティを組み合わせることで、単純な1ビットのパリティよりも多くのエラーを検出できる場合があります。
パリティの仕組み

パリティの基本的な仕組みは、それほど難しくありません。
大きく分けると、
- 送信側でパリティビットを付ける
- データを送る
- 受信側で「1」の数を確認する
- ルールと一致するか確認する(パリティチェック)
という流れです。
例えば、偶数パリティを使用するとします。
元のデータが、「1011」だった場合、「1」は3個なので奇数です。
そこでパリティビットに「1」を追加します。
1011 1
これで「1」は4個となり、偶数になります。
このデータを受信した側では、「1」の数を確認します。
「1」が4個なら、偶数になっているため問題がないと判断できます。
一方、通信途中などでビットが変化し、
1010 1
のようになった場合、「1」は3個です。
偶数になるはずなのに奇数になっているため、データにエラーが発生した可能性があると判断できます。
このように、パリティはデータそのものを復元するのではなく、主にエラーが発生したことを検出するための仕組みです。
パリティチェックとは?
パリティチェックとは、パリティを利用してデータにエラーがないか確認することです。
例えば、偶数パリティを使ってデータを送ったとします。
送信側では、「1」の数が偶数になるようにパリティビットを追加します。
受信側では、受け取ったデータの「1」の数を確認します。
もし「1」の数が偶数なら、「パリティの条件を満たしている」と判断できます。
反対に「1」の数が奇数になっていれば、「データのどこかでエラーが発生した可能性がある」と判断できます。
この確認処理がパリティチェックです。
パリティのメリット・デメリット
【メリット】
- 仕組みがシンプル
→「1」の数が偶数か奇数かを確認するという非常にシンプルな仕組み - 追加するデータが少ない
→元のデータに1ビットを追加するだけ - エラー検出に利用できる
→通信や記録の途中でデータが変化した場合、パリティの条件が崩れることでエラーを検出できる
【デメリット】
- エラーを修正することは基本的にできない
→基本的に「エラーが発生した可能性がある」と検出するための仕組み - 複数のエラーを見逃す場合がある
→2ビットが同時に変化すると、「1」の数の偶奇が元に戻ってしまう
パリティとRAIDの関係
パリティは、RAIDでも重要な役割を持っています。
RAIDとは、
複数のハードディスクやSSDなどのストレージを組み合わせて、データの保存性能や信頼性を高める技術です。
RAID5やRAID6などでは、複数のドライブにデータを分散して保存するとともに、パリティ情報も保存します。
例えば、複数のドライブにデータを分散して保存し、そのデータから計算したパリティを別のドライブ領域に保存します。
これによって、ドライブの故障が発生した場合でも、残ったデータとパリティを利用して失われたデータを復元できる場合があります。
このため、RAIDにおけるパリティは、単純な「エラー検出」だけでなく、故障したドライブのデータを復元するための冗長情報として重要な役割を果たします。
ただし、RAIDのパリティと通信などで使われる単純なパリティチェックは、目的や仕組みが完全に同じというわけではありません。
パリティとチェックサム・CRCの違い
パリティと似た言葉に、「チェックサム」や「CRC」があります。
どれもデータの誤りを検出するために使われますが、仕組みは異なります。
パリティ
データに含まれる「1」の数の偶奇を利用して、エラーを検出します。
仕組みが非常にシンプルなのが特徴です。
チェックサム
データを一定のルールで計算し、その計算結果を利用してデータの異常を検出します。
CRC
CRCは「巡回冗長検査」と呼ばれるエラー検出方式です。
パリティよりも複雑な計算を行うことで、より多くのエラーを検出できる仕組みとして利用されています。
簡単に整理すると、
| 方式 | 特徴 |
|---|---|
| パリティ | 仕組みがシンプル |
| チェックサム | データを計算して異常を確認 |
| CRC | より高度な計算でエラーを検出 |
という違いがあります。
まとめ
パリティとは、簡単にいうと、データにエラーが発生していないかを確認するための仕組みです。
ポイントを整理すると、
という特徴があります。
パリティは一見すると難しそうな言葉ですが、「データの1の数を数えて、決めたルールと合っているか確認する仕組み」と考えると理解しやすくなります。
特に、今後RAIDやストレージについて学ぶ場合には、パリティの基本的な考え方を理解しておくと、RAID5やRAID6の仕組みも理解しやすくなります。


