▲ゴト技top| 第13章 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 20| 21| 22| 23| 24| 25| 26| 27| |
[第13章●本の買い方読み方しまい方] 24… ISBNのチェックデジット |
[2005.08.19登録] |
石田豊 |
いままで述べてきたように、国番号、出版者番号、書籍番号が決まると、その内容によって自動的に最後の桁であるチェックデジットが決まる。 チェックデジットとは機械で読み取る数字に、読み間違い(リードミス)やそのそもの転記ミスがあるかどうか調べるための「桁」である。たとえばバーコードを読んで買い物の金額を計算する(つまりPOSレジですね)場合、いちばんコワいのは、「違う商品のコード」として読んでしまうことである。100円の大根のバーコードを読んだつもりが、機械が5000円の松茸のそれと誤読み取りしてしまうと、客は怒るし、逆だったら店はソンする。そういう間違いを起こすくらいなら、いっそ、エラーで止まってしまう方がいい。 コードの数字そのものを、なんらかの方法で計算する。そして得られた「答え」をコードの最後(別に最初でもいいけど)に追加する。読み取り時にも同じ計算を行って、最後の桁と照合する。これがチェックデジットの基本的な考え方である。 たとえば「1853」というコードがあるとする。計算方法が「各桁の数字を全部足して、得られた答えの1の位をチェックデジットにする」というものであれば、1+8+5+3=17で「7」がチェックデジットになる。従って、コードそのものはこのチェックデジットをもふくめて「18537」というものになる。 しかし、このような計算では、転記の際にもっとも頻出する間違いである「桁の入れ違い」つまり「1853」を「1583」としてしまうの(よくやっちまうでしょ)でも通ってしまう。チェックデジットの計算方法としては、必ずしも優れたものではない。 このことからもわかるように、チェックデジットの計算式はなにも一色ではない。いろんなやりかたがある。ISBNでの計算法は「モジュラス11」(あるいはもっと正確に言うと「モジュラス11 ウエイト10-2」)という名の方法を用いている。 モジュラスとは「modulus」であって、数学用語でいうところの「法」という意味である。「法」とは「同じ数で割り切れる数の集合」だ。つまり直訳すると「11で割り切れ方式」にでもなるのだろう。 10桁のISBNコードを頭から1桁ずつ取り出し、1桁目の数字×10+2桁目×9+……9桁目×2という計算を行う。たとえば「4-8399-1451-6」というISBNなら 4×10+8×9+3×8+9×7+9×6+1×5+4×4+5×3+1×2 で、その答えは「291」になる。これ以上で一番小さい11の倍数を求める。11の27倍は297である。この11の倍数と291の差「6」がこの場合のチェックデジットになる。ほら、さっきのISBNの最後の桁と一致するでしょ。 この計算式だと「桁の入れ違い」という間違いにも対応できるし、「桁の読み飛ばし」なんかのエラーにもちゃんとひっかかる。精度はかなり高くなる。ちなみに足し算の答がそのまま11の倍数であった場合は、チェックデジットは「0」、差が「10」であった場合のチェックデジットは「X」である(この場合「X」は大文字で表記するのがルール)。 ISBNは国際ルールであるから、この計算方法は言うまでもなく国内だけのものではない。またもやセンデン臭い例を挙げさせていただくと、快読ショップYomuparaにて絶賛販売中のライトウェッジ(ページそのものを光らせる読書ライト。これもすごっくイイです。Yomuparaだけのオリジナルポーチがもれなく付いてくる!!←またもやPRごめん)のISBNは0-641-07749-1であるが、これも 0×10+6×9+4×8+1×7+0×6+7×5+7×4+4×3+9×2=186 であり11の17倍が187だから、チェックデジットはその差の「1」ということになる。正解。 電卓を使ってこの計算を行うのはとても面倒くさいが、コンピュータはなぜか計算が大好きで、100マス計算をせがむ子供のようにやらしてやらしてとうるさい。得意中の得意なのだ。プログラマがついうっかり目を離すと(つまり間違うと)、やつらはぶっ倒れるまで(つまり桁数がオーバーフローするまで)延々と単純計算を何十時間でも繰り返し、飽きることがない(ぼくはこの手の間違いを、なぜか昔からよくやらかす。無限ループってやつです)。 プログラム上でのチェックデジットの計算は当然のことながら言語ごとに異なるが、アルゴリズムとしては、 1)ISBNのn桁目×(11-n)をトータルに加算 2)それをn=1〜9まで繰り返す 3)トータルを11で割り、小数点以下を切り捨てる→A 4)(A+1)×11をBとする 5)トータルからBを引く 6)もし「11」なら0 7)もし「10」ならX という流れになるだろう。 もうひとつのやり方は、ちょっとアクロバチックだが、トータルの算出までは上と同じで 3)トータルを11で割り、小数点以下1位〜2位を取り出す 4)それを9で割った商と11の差ががチェックデジットになる 5)もし「10」ならX 6)もし「11」なら0 という流れ。どうです。ちょっくらスマートでしょ。ま、あんまり変わらんか。スクリプト言語ならともかく、エクセルなどではこっちのほうがちょっとだけは楽かもしれない(やってないけど)。 ともあれ、ISBNのチェックデジットはこのような方法で計算されているわけだ。 注意すべきは、この方法はあくまでもISBNが10桁の間の計算方法であり、13桁になった場合は、チェックデジットの算出方法が変わるということである。 ここまでで、いわゆるISBNコードの構造はご理解いただけたと思う。このようにして成り立っているISBNコードが本の裏表紙に記載されていることはご承知の通り。しかし、そのISBNの行の下にもうひとつのコードが記されている。たとえば ISBN4-16-730977-7 C0198 619E というような感じだ。ではこの「C〜」ってのは何かというのが次回のテーマになる。 |
この記事は
|
お読みになっての印象を5段階評価のボタンを選び「投票」ボタンをクリックしてください。 |
投票の集計 |
投票[ 13 ]人、平均面白度[ 4.8 ] ※「投票」は24時間以内に反映されます※ |
ひみつさんより [2006-09-06] |
JANのC/Dが知りたかった 外資の(流通)小売店に勤務しています。 社内の単品売り上げデータ等単品情報のJAN(UPC)コード欄にC/Dが未記載のため困ることがあり閲覧しました。 (国産の情報検索ソフトでJANコードをキーボード入力での検索ができない事。) この欄を読み手計算ができるようになりました。 ありがとうございます。(感謝です) ちなみに今までは0〜9までの数を順に入力していました。 |
ご意見をお聞かせください |
|
←デジタル/シゴト/技術topへもどる | page top ↑ |
▲ゴト技top| 第13章 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 20| 21| 22| 23| 24| 25| 26| 27| |
|ポット出版
|ず・ぼん全文記事|石田豊が使い倒すARENAメール術・補遺|ちんまん単語DB| |
|
|