<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>情報のしくみ on うごく図解</title><link>https://ugokuzukai.com/fields/joho/</link><description>Recent content in 情報のしくみ on うごく図解</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Sun, 04 Oct 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://ugokuzukai.com/fields/joho/index.xml" rel="self" type="application/rss+xml"/><item><title>QR コードは、なぜ欠けても読めるのか</title><link>https://ugokuzukai.com/articles/qr-code-error-correction/</link><pubDate>Sun, 04 Oct 2026 00:00:00 +0900</pubDate><guid>https://ugokuzukai.com/articles/qr-code-error-correction/</guid><description>&lt;figure class="ugoku" id="ugoku-0" data-ugoku-src="fig-paint.js"&gt;
 &lt;p class="ugoku-head"&gt;&lt;span class="ugoku-num"&gt;図1&lt;/span&gt;&lt;span class="ugoku-hint"&gt;&lt;svg class="touch-icon" viewBox="0 0 20 12" width="20" height="12" aria-hidden="true"&gt;&lt;rect x="1" y="4.5" width="18" height="3" rx="1.5" fill="currentColor" opacity=".35"/&gt;&lt;rect x="1" y="4.5" width="11" height="3" rx="1.5" fill="currentColor"/&gt;&lt;circle cx="12" cy="6" r="4" fill="var(--surface)" stroke="currentColor" stroke-width="2"/&gt;&lt;/svg&gt;
さわって動かせます&lt;/span&gt;&lt;/p&gt;
 &lt;div class="ugoku-stage"&gt;&lt;p class="ugoku-fallback"&gt;この図は、JavaScript を使って動きます。下の説明でも要点が分かるように書いています。&lt;/p&gt;&lt;/div&gt;
 &lt;figcaption class="ugoku-caption"&gt;&lt;p&gt;QR コードのマスをなぞると、白黒が変わります。読めるかどうかは、図の中で読み取りの計算をして決めています。誤り訂正レベル H で右下の 7×7 マスを白にすると、白黒が変わるのは 25 マスで、まだ読めます。左上の四角の中心の9マスを白にすると、それだけで読めなくなります。&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;script type="module"&gt;import U from "\/ugoku\/ugoku.63fee9c63a7e182bc3b36180e90a160bb0ec03de8f90759ea19221dd0653c888.js"; import fig from "\/articles\/qr-code-error-correction\/fig-paint.js"; U.mount(document.getElementById("ugoku-0"), fig);&lt;/script&gt;
&lt;p&gt;上の QR コードには &lt;code&gt;https://ugokuzukai.com/&lt;/code&gt; が入っています。マスを指かマウスでなぞると、そのマスが白（または黒）になります。&lt;/p&gt;
&lt;p&gt;試すと、いくつかのことに気づきます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;少し欠けたくらいでは、読めます。欠けた分は、QR コードが自分で直しています&lt;/li&gt;
&lt;li&gt;黒いマスを黒で塗っても、何も起きません。読み取りで誤りになるのは、白黒が変わったマスだけです&lt;/li&gt;
&lt;li&gt;同じ数のマスを欠いても、欠ける場所によって結果が違います。左上・右上・左下の大きな四角を欠くと、すぐに読めなくなります&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この「自分で直す」しくみを、誤り訂正といいます。QR コードを作ったデンソーウェーブは、汚れたり破損したりしても、コード自身でデータを復元できると説明しています。誤り訂正には、リード・ソロモン符号という方法を使っています。&lt;/p&gt;
&lt;h2 id="予備の数字を足すと間違いが直せる"&gt;予備の数字を足すと、間違いが直せる&lt;/h2&gt;
&lt;p&gt;リード・ソロモン符号の考え方を、短い数字の列で試します。&lt;/p&gt;
&lt;p&gt;5つの数字 3・1・4・1・5 を送るとします。数字だけを送ると、途中で1つが書き換わっても、受け取った側は気づけません。そこで、予備の数字を足して送ります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;予備 A：5つの数字の合計&lt;/li&gt;
&lt;li&gt;予備 B：それぞれの数字に「何番目か」を掛けてから足した合計&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="ugoku" id="ugoku-1" data-ugoku-src="fig-check-digits.js"&gt;
 &lt;p class="ugoku-head"&gt;&lt;span class="ugoku-num"&gt;図2&lt;/span&gt;&lt;span class="ugoku-hint"&gt;&lt;svg class="touch-icon" viewBox="0 0 20 12" width="20" height="12" aria-hidden="true"&gt;&lt;rect x="1" y="4.5" width="18" height="3" rx="1.5" fill="currentColor" opacity=".35"/&gt;&lt;rect x="1" y="4.5" width="11" height="3" rx="1.5" fill="currentColor"/&gt;&lt;circle cx="12" cy="6" r="4" fill="var(--surface)" stroke="currentColor" stroke-width="2"/&gt;&lt;/svg&gt;
さわって動かせます&lt;/span&gt;&lt;/p&gt;
 &lt;div class="ugoku-stage"&gt;&lt;p class="ugoku-fallback"&gt;この図は、JavaScript を使って動きます。下の説明でも要点が分かるように書いています。&lt;/p&gt;&lt;/div&gt;
 &lt;figcaption class="ugoku-caption"&gt;&lt;p&gt;5つの数字（3・1・4・1・5）に、予備の数字を足して送ります。予備 A は数字の合計（14）、予備 B は「何番目か」を掛けた合計（46）です。受け取った数字から A と B を計算し直し、送られた A・B とのずれを見ます。4番目の 1 が 7 に書き換わると、A は +6、B は +24 ずれます。24 ÷ 6 ＝ 4 なので、4番目が 6 だけ多いと分かり、直せます。予備が A だけだと、間違いがあることは分かっても、どこかは分かりません。&lt;/p&gt;</description></item></channel></rss>