ISBNを扱うのに ISBN Tools というライブラリを使っている。
なんでかっていうと ISBN_Tools.hyphenate_isbn13 っていうメソッドがあって,数字だけのISBNをハイフンの入ったISBNに変換してくれるのが使えると思ったからだ。
こんな感じ:
irb(main):006:0> ISBN_Tools.hyphenate_isbn13('9780672328848') => "978-0-6723-2884-8"
ところがこのメソッド,肝心の日本(グループ番号4)に対応してくれてない。
ソースを見たところ,data/ranges.dat にグループ番号と出版者記号の定義を追加すればいいみたいだ。
というわけでちょっと調べてみた。
日本国内のことなんだから日本のISBNを管理しているところへいけばいいんだろう,と思ったんだけど,その日本図書コード管理センターのサイトの中を探してみても規則で割り当ててるのか,どうもどこにも載ってない。
同じ不満をもっる人がネットのあちこちにいるみたいだな。どうなってんだ。
で,結局 ISBN の本家 International ISBN Agency のサイトでPDFを見つけた。これでいいんだよな。
これによると日本の出版者記号は下のような規則になっているようだ。
2ケタ | 00~19 |
3ケタ | 200~699 |
4ケタ | 7000~8499 |
5ケタ | 85000~89999 |
6ケタ | 900000~949999 |
7ケタ | 9500000~9999999 |
さて,ISBN Tools に戻ろう。
調べた成果を反映するには前述の data/ranges.dat に次の1行を追加すればいい。
4,00..19,200..699,7000..8499,85000..89999,900000..949999,9500000..9999999
カンマ区切りになってて,はじめの値がグループ番号,2つめ以降に出版者記号の連続する範囲を列挙している。これで日本の出版者にも対応するようになった。
irb(main):007:0> ISBN_Tools.hyphenate_isbn13('9784863540224') => "978-4-8635-4022-4"
10ケタのISBNでもできる。
irb(main):008:0> ISBN_Tools.hyphenate_isbn10('4873110238') => "4-87311-023-8"