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

133 lines
6.7 KiB
Markdown
Raw Normal View History

2019-03-31 11:00:21 +00:00
---
title: 'isbn10 > isbn13'
author: kazu634
date: 2007-12-02
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>