blog/content/post/2007/12/02/2007-12-02-isbn10-isbn13.md

134 lines
6.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 'isbn10 > isbn13'
author: kazu634
date: 2007-12-02
url: /2007/12/02/isbn10-isbn13/
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:3385;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- Perl
---
<div class="section">
<p>
 『<a href="http://d.hatena.ne.jp/asin/4797336803" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/4797336803', '新版Perl言語プログラミングレッスン入門編');">新版Perl言語プログラミングレッスン入門編</a>』を読んでいます。現在、ハッシュの勉強中。色々できて楽しそうだ。少し慣れてきたら、isbn10をisbn13に変換するPerlスクリプトを作ってみようと思う「車輪の再発明」なのは承知の上。練習したいのです
</p>
<p>
 というわけで、isbn13の仕組みを調べてみた。<a href="http://ja.wikipedia.org/wiki/ISBN" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://ja.wikipedia.org/wiki/ISBN', 'Wikipedia');" target="_blank">Wikipedia</a>によれば、
</p>
<blockquote title="ISBN:title - Wikipedia" cite="http://ja.wikipedia.org/wiki/ISBN">
<p>
ISBNは13桁のコードで表され、通常5つのパートからなる。
</p>
<p>
ISBNnnn &#8211;&#8211; AAAA &#8211; BBBB &#8211; C
</p>
<p>
●、A、Bの各部分の桁数は決まっておらず、合計で9桁の範囲内でそれぞれの部分は増減する。
</p>
<ul>
<li>
n部分 &#8211; 「接頭記号」: nnn は 978 または 979 のいずれか数字3桁である。
</li>
<li>
●部分 &#8211; 「グループ記号」2006年以前と基本的に同じ。上記解説を参照。ただし、接頭記号が異なれば、グループ記号が同じでも異なる言語圏を指す可能性もある。
</li>
<li>
A部分 &#8211; 「出版者記号」2006年以前と同じ。上記解説を参照。
</li>
<li>
B部分 &#8211; 「書名記号」2006年以前と同じ。上記解説を参照。
</li>
<li>
C部分 &#8211; 「チェックデジット」: 0 &#8211; 9 の数字1桁が入る。以前のISBNのチェックデジットとは計算法が異なり、10桁→13桁に変換する際は再計算が必要となる。
</li>
</ul>
<p>
各パートの間は、ハイフン(またはスペース)で区切りを付けるのが正式な表示法である。(区切りを付けなくても書籍を特定する上での問題はない。)
</p>
<p>
<cite><a href="http://ja.wikipedia.org/wiki/ISBN" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://ja.wikipedia.org/wiki/ISBN', 'ISBN &#8211; Wikipedia');" target="_blank">ISBN &#8211; Wikipedia</a></cite>
</p>
</blockquote>
<p>
ということらしいので、●-AAAA-BBBBの部分はisbn10と等しいらしい。つまり、図書の場合「978-●-AAAA-BBBB」からある計算式を用いてCを求めることになる。Cの計算式は、例として ISBN978-4-10-109205-□で考えてみると
</p>
<blockquote title="ISBN:title - Wikipedia" cite="http://ja.wikipedia.org/wiki/ISBN">
<ol>
<li>
9×1 + 7×3 + 8×1 + 4×3 + 1×1 + 0×3 + 1×1 + 0×3 + 9×1 + 2×3 + 0×1 + 5×3 = 9 + 21 + 8 + 12 + 1 + 0 + 1 + 0 + 9 + 6 + 0 + 15 = 82
</li>
<li>
82 ÷ 10 = 8 あまり 2
</li>
<li>
10 &#8211; 2 = 8
</li>
</ol>
<p>
<cite><a href="http://ja.wikipedia.org/wiki/ISBN" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://ja.wikipedia.org/wiki/ISBN', 'ISBN &#8211; Wikipedia');" target="_blank">ISBN &#8211; Wikipedia</a></cite>
</p>
</blockquote>
<p>
となるらしい。つまり(1)の計算は
</p>
<p>
<center>
</center>
</p>
<p>
<img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?~\{~&#40;9~+~8~+~1~+~1~+~9~+~0&#41;~\times~1~\}~+~\{~&#40;7~+~4~+~0~+~0~+~2~+~5&#41;~\times~3~\}~=~82" class="tex" alt=" ¥{ &#40;9 + 8 + 1 + 1 + 9 + 0&#41; ¥times 1 ¥} + ¥{ &#40;7 + 4 + 0 + 0 + 2 + 5&#41; ¥times 3 ¥} = 82" />
</p></p>
<p>
こんな感じになるわけだから、「(奇数桁の数字の合計×1) + (偶数桁の数字の合計×3)」ということか。
</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/dp/4797336803/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/4797336803/?tag=hatena_st1-22&ascsubtag=d-7ibv', '');"><img src="https://images-na.ssl-images-amazon.com/images/I/51LwEY4XTiL._SL160_.jpg" class="hatena-asin-detail-image" alt="新版Perl言語プログラミングレッスン入門編" title="新版Perl言語プログラミングレッスン入門編" /></a></p>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title">
<a href="http://www.amazon.co.jp/dp/4797336803/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/4797336803/?tag=hatena_st1-22&ascsubtag=d-7ibv', '新版Perl言語プログラミングレッスン入門編');">新版Perl言語プログラミングレッスン入門編</a>
</p>
<ul>
<li>
<span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%B7%EB%BE%EB%B9%C0" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%B7%EB%BE%EB%B9%C0', '結城浩');" class="keyword">結城浩</a>
</li>
<li>
<span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%BD%A5%D5%A5%C8%A5%D0%A5%F3%A5%AF%A5%AF%A5%EA%A5%A8%A5%A4%A5%C6%A5%A3%A5%D6" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%A5%BD%A5%D5%A5%C8%A5%D0%A5%F3%A5%AF%A5%AF%A5%EA%A5%A8%A5%A4%A5%C6%A5%A3%A5%D6', 'ソフトバンククリエイティブ');" class="keyword">ソフトバンククリエイティブ</a>
</li>
<li>
<span class="hatena-asin-detail-label">発売日:</span> 2006/10/21
</li>
<li>
<span class="hatena-asin-detail-label">メディア:</span> 単行本
</li>
<li>
<span class="hatena-asin-detail-label">購入</span>: 16人 <span class="hatena-asin-detail-label">クリック</span>: 235回
</li>
<li>
<a href="http://d.hatena.ne.jp/asin/4797336803" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/4797336803', 'この商品を含むブログ (86件) を見る');" target="_blank">この商品を含むブログ (86件) を見る</a>
</li>
</ul>
</div>
<div class="hatena-asin-detail-foot">
</div>
</div>
</div>