Skip to the content.

最終更新日:2026年9月27日

まず結論

ランレングス符号化(Run-Length Encoding:RLE)とは、同じ値が連続する部分を、「値」と「連続回数」の組に置き換えてデータ量を減らす可逆圧縮方式です。

例えば、

AAAAABBBAA

を、

A5 B3 A2

のように表します。

基本情報技術者試験では、問題文に

同じ文字・値が連続する
+
連続回数で表す

とあれば、ランレングス符号化を疑います。

連続回数を見る → ランレングス符号化

直感的な説明

長い文字列を、そのまま全部書く代わりに「何が何回続いたか」をメモするイメージです。

例えば、

AAAAAA

なら、Aを6回書く代わりに、

A6

と表せます。

もう少し長い例では、

AAAABBBBBBAA

を、

A4 B6 A2

とできます。

同じ値が長く続くほど、元のデータより短くしやすくなります。

一方で、

ABABABAB

のように値が頻繁に切り替わるデータでは、

A1 B1 A1 B1 A1 B1 A1 B1

となり、かえって長くなることもあります。

つまり、

RLEは「何でも小さくできる方式」ではなく、「同じ値が連続しやすいデータ」に向く方式

です。

定義・仕組み

ランレングス符号化では、連続する同じ値をひとまとまりの区間として扱います。

この連続区間を run(ラン)と考えると分かりやすいです。

AAA | BBBBB | AA
 ↑      ↑      ↑
run    run    run

それぞれのrunについて、

値
+
長さ

を保存します。

AAA
→ A3

BBBBB
→ B5

AA
→ A2

したがって全体は、

A3 B5 A2

となります。

可逆圧縮

RLEは、圧縮したデータから元のデータを完全に復元できます。

A3 B5 A2
↓
AAA BBBBB AA

このように、元の情報を失わずに戻せる圧縮を可逆圧縮といいます。

2種類の値だけなら回数だけで表す場合もある

データが2種類だけで、どちらから始まるかをあらかじめ決めている場合は、値そのものを省略し、連続回数だけで表す方法もあります。

例えば、

AAAAABBBBBBBBBAAA

で、最初はAから始まり、AとBが交互に現れると決めておけば、

5 9 3

と表せます。

ただし、FE対策ではまず一般形の

A5 B9 A3

を理解しておけば十分です。

このテーマは基本情報技術者試験の基礎理論やデータ表現に関係します。公式の出題範囲や最新シラバスは、IPA:試験要綱・シラバスについてから確認できます。

科目Aでどう出る?

科目Aでは、圧縮や符号化の説明から方式名を選ぶ問題として出ます。

特に次の切り分けが重要です。

問題文の中心 判断する用語
同じ値が連続し、その回数で短くする ランレングス符号化
出現頻度が高い記号ほど短い符号を割り当てる ハフマン符号
文字に番号を割り当てて表現する 文字コード
誤りを検出・訂正する 誤り検出・訂正用の符号

試験中は、圧縮の仕組みを一言にしてから選択肢を見ると判断しやすくなります。

連続回数を使う?
→ RLE

出現頻度を使う?
→ Huffman

ハフマン符号との違い

ランレングス符号化とハフマン符号は、どちらもデータ量を減らすために使われますが、見るものが違います。

AAAAABBBBBBBBBAAA
のように「連続」が多い
→ ランレングス符号化

Aが50%、Bが30%…のように
「出現頻度」に偏りがある
→ ハフマン符号

つまり、

RLEは並び方を見る。Huffmanは出現頻度を見る。

と切り分けます。

どんな場面で使う?

ランレングス符号化は、同じ値が長く続くデータと相性がよい方式です。

例えば、

  • 同じ色が広い範囲に続く単純な画像
  • 0や1が長く連続するビット列
  • 同じ記号が繰り返されるデータ

などです。

イメージとして、

00000000001111110000

のようなデータなら、

0が10個
1が6個
0が4個

のように連続回数でまとめられます。

一方、

010101010101

のように頻繁に値が切り替わるデータでは、RLEの効果は小さくなります。

よくある誤解・混同

ランレングス符号化は出現頻度で符号長を変える

それはハフマン符号の考え方です。

同じ値が何回続くか
→ RLE

各記号がどれくらい頻繁に出るか
→ Huffman

詳しくは、ハフマン符号とは?可変長符号と平均符号長の考え方で整理しています。

連続していなくても、同じ文字ならまとめられる

通常のRLEでは、連続していることが重要です。

AAABBB
→ A3 B3

とできますが、

ABABAB

のAをまとめてA3とすることはできません。

元の並び順が失われるからです。

RLEは必ずデータを小さくできる

必ずではありません。

短いrunが大量にある場合、値と回数を記録する分だけデータ量が増えることがあります。

AAAAAA
→ 圧縮しやすい

ABABAB
→ 圧縮しにくい

EBCDICやASCIIも圧縮方式

違います。

ASCIIやEBCDICは、文字をどの値で表すかを決める文字コードです。

文字をどう表す?
→ 文字コード

連続データをどう短くする?
→ ランレングス符号化

誤り検出用の符号と同じ

目的が違います。

データ量を減らす
→ 圧縮

通信や記録の誤りを検出・訂正する
→ 誤り検出・訂正符号

「圧縮」と「誤り対策」を分けて考えます。

まとめ(試験直前用)

  • ランレングス符号化は、同じ値の連続を「値+回数」で表す可逆圧縮
  • AAAAABBBAA → A5 B3 A2 のイメージ
  • 同じ値が長く続くほど圧縮しやすい
  • 値が頻繁に切り替わるデータでは効果が小さい
  • 連続回数 → RLE
  • 出現頻度 → Huffman
  • 文字コードは文字表現、誤り検出符号は誤り対策であり、圧縮とは目的が違う

「同じ文字が繰り返され、その回数で短くする」→ ランレングス符号化。

© 2024-2026 stemtazoo. All rights reserved.