イノベーション エンジニアブログ


株式会社イノベーションのエンジニアたちの技術系ブログです。ITトレンド・List Finderの開発をベースに、業務外での技術研究などもブログとして発信していってます!


このエントリーをはてなブックマークに追加

書籍のあれこれを元書店アルバイターだったエンジニアが調べてみた

本屋でアルバイトの話

こんにちは。小笹です。

今でこそエンジニア風に働かせていただいていますが、
元々大学の時分には本屋にてアルバイトをしていました。

レジでの販売業務はもちろん在庫の管理から、
取次店への返品業務も行なっていました。

アルバイトで稼いだ賃金は書籍に消えていくという
好循環の中、生活をしていたことを思い出します。

その関係でモノとしての書籍というものに思い入れがあるのです。

エンジニアにとっての本

世の中の情報の多くはネットに転がっているものの、
書籍を出版するに当たっては編集のプロセスを踏むことで多くの情報が整理精査されていくものだと私は理解しています。

ですからエンジニアの学習の場面でも書籍が重用されることも往々にしてあるわけです。

弊社においてはエンジニアの学習を支援するという意味で、
学習用の図書購入を会社が負担できるよう予算を組んでおり、
実際100冊以上の書籍が今まで購入されました。

本棚

書籍の内容は直接業務で使っているものから今後使うであろうものまで様々です。

起きたこと

こうやって図書が増えていくことは喜ばしいことなのですが、 買い始めた当初は管理のことまでは考えられていなかったので、

・ これ買ったっけ?

・ これあったのか!

などの問題が発生しつつあり、対策が必要だと課題認識している現状です。
(今いまは私の記憶と本棚が頼りになってしまっています・・・)

何かしら仕組みを作ろう!と思ったのですが、
まずは書籍について色々調べてみた結果をまとめてお伝えします。

ISBNについて

書籍を識別するコードにはISBNコードというものがあります。

ISBNは、International Standard Book Numberの略称であり、
これは書籍JANとも呼ばれるもので書籍をユニークに判別する値になります。

また、JANとはJapanese Article Numberの略称で、日本国内での呼び方になります。

国際的にはGTIN(Global Trade Item Number)として運用されており、
GS1という流通コードの管理や流通標準に関する国際機関が定めた商品識別コードになります。

通常ISBNは書籍の裏側にバーコードと数字で記載されており、
Amazonなどのネット通販サイトにおいてもこのコードを元に書籍を検索することが可能です。
また実際私が働いていた本屋でもISBNコードを元に在庫の管理を行なっておりました。

バーコードの読み方

ISBN

例えば、 日本図書コード管理センターに記載の分類表を 元に画像の数値を読み解くと、

  • 日本の書籍であること

  • (有)明日香出版社が出版していること

  • 書名が1196で管理されていること

  • 販売対象は「実用」

  • 発行形態は「単行本」

  • 分類は「社会科学・経営」

  • 1500円(税抜き)

であることが分かるのです。

個人的にはチェックデジットが入っていることを知らなかったので、
この仕組みが入ることで誤読率を抑えているというのが面白いと感じました。

ISBN(もしくはJAN)のチェックデジットは「モジュラス10 ウエイト3-1」という算出方法で設定されています。

数値の左端から3・1・3・1と順番に掛け算をして、その掛け算の結果の総和を求めます。 その総和を10で割った余りを出し、今度は10からその余りを引いた値をチェックデジットとします。

PHPで書いてみると以下な感じでしょうか?

$n = 'チェック対象の数値';
$arr = str_split($n);

$s = 0;
foreach ($arr as $i => $value) {
    if ($i%2 == 0) {
        $s += $value * 1;
    } else {
        $s += $value * 3;
    }
}

// 余りが0の場合はチェックデジットも「0」になるというルールがあります。
if (($s%10) == 0) {
    $check = ($s%10);
} else {
    $check = 10 - ($s%10);
}

echo $check;

例えば、
9784756911964というISBNがあった際には
チェックデジットを抜いた978475691196が算出対象になり、
4との整合性がチェックされるわけです。

バーコード

バーコードはこれらの数値を図形として表現しているものになるんですね、 図形として表現することにより、 数値として読み取るよりも読み取りの速度と正確性が担保できると理解しています。

また、二次元バーコードは、 水平方向と垂直方向に情報を持つのでより多くの表現が可能になっています。 QRコードなどが例ですね。

終わりに

生活の近いところでも多くの技術・アルゴリズムが活躍しているのだと、 改めて気がつきました。

よかった!

色々調べすぎて問題が解決していないとしても!!

続く