私はバーコードが好きだ。それも、JAN-13/EAN-13形式限定で。理由はいくつかあるが、4種の太さのバーを4種の間隔に置くと13桁の数字を表現でき、それが世界中の企業や製品名とリンクしている、という情報量の少なさに比べたときの表現力の大きさに尽きる。バーの太さが重要な情報となるため、高い印刷精度...
私はバーコードが好きだ。それも、JAN-13/EAN-13形式限定で。理由はいくつかあるが、4種の太さのバーを4種の間隔に置くと13桁の数字を表現でき、それが世界中の企業や製品名とリンクしている、という情報量の少なさに比べたときの表現力の大きさに尽きる。バーの太さが重要な情報となるため、高い印刷精度と読取り精度が要求されるが、カメラを内蔵した携帯電話の普及やCCDの性能向上もあり、その活用範囲は拡がっている。
JAN-13/EAN-13の場合、最初の2桁は国コード(日本の場合49または45)、次の5桁(2001年以降は7桁)は商品メーカーコード、次の5桁(2001年以降は3桁)がメーカーが独自に決める商品アイテムコード、最後の1桁は読み取りが正しいかどうか判定するための情報(チェックデジット)とされている。
このJAN-13/EAN-13バーコードは、当コラムでいうところの「マッシュアップ」に使える素材だと考えている。そして最近、にわかにその必要性にかられているのだ。
というのも、CDの耐久性が気になり始めたから。一説にCDの寿命は数十年と言われるが、仮に30年が目安だとすると、自分のCDライブラリはそろそろヤバめということになる。プログレとかAORとか、GRP全盛期のフュージョンとか、購入から20年を経ているものが多いためだ。ふだんは湿気の少ない冷暗所(書斎ともいう)に保管しているが、それらが一斉に寿命を迎えたらかなりへこむ。
だから、CDが健全なうちにCD-Rへバックアップしようと考えている。数百枚は格納できるケースにCD-Rを収納し、PPシートへ管理タグ代わりにJAN-13/EAN-13バーコードを貼り付けよう、という計画なのだ。そのCDの情報が必要になったときは、スマートフォンのバーコード読み取りアプリを使えばいい。これも一種のマッシュアップと考えるが、いかがだろう?
肝心の方法だが……Rubyのバーコード生成ライブラリ「barby」を使うことにした。バーコードを生成してくれるWebサイトもあるが、さすがに数百枚ものCDを処理したくない。CD-Rへのバックアップは手作業にならざるをえないとして、チェックデジットを除いた12桁の数値をブラウザのテキストフィールドに手入力することは避けたい、そう考えれば自動処理を模索するのは必然だ。
準備はかんたん、Rubyを標準装備するOS Xの場合、TerminalからgemコマンドでBarbyとPNG出力用ライブラリをインストールすればOK。あとはスクリプトを用意すれば、バーコードを生成できるはずだ。
・BarbyおよびPNG出力用ライブラリのインストール $ sudo gem install barby $ sudo gem install barby-chunky_png
とりあえず作成したスクリプトは、ヘッダ部分を除き実質1行というかんたんなもの。それでも、引数として12桁の数値 — JAN-13/EAN-13バーコードの下にある数値の右端を除いた12桁 — を与え、出力先のPNGファイルを指定して実行すれば、立派なバーコードを作成できる。
今回はテストのためごく基本的な機能しか用意していないが、CSVファイルから数値を入力したり、複数のバーコードを帳票状に整形したりすれば、より実用的になるはず。マッシュアップは道半ば、引き続き改良を続けてみたい。
リスト1:バーコード生成用スクリプト(makeJAN13.rb) require 'rubygems' require 'barby' require 'barby/barcode/ean_13' require 'barby/outputter/png_outputter' print Barby::EAN13.new(ARGV[0]).to_png
コマンド実行例 $ ruby makeJAN13.rb 498800970102 > barcode.png
iPhoneでバーコード読み取りアプリ「ZBar Barcode Reader」を使い、今回用意したスクリプトで出力したPNG画像を読み取ったところ。ベンリに使えるかも
最新ニュース
はてなブックマーク - 新着エントリー - 総合 新着エントリー
- Amazon CloudWatch now supports OpenTelemetry metrics in public preview - AWSon 2026年4月2日 at PM 6:11
Amazon CloudWatch now supports OpenTelemetry metrics in public preview Amazon CloudWatch now supports native OpenTelemetry (OTel) metrics in public preview, enabling you to send metrics directly using the OpenTelemetry Protocol (OTLP) without custom conversion logic or additional tooling. You can...
- [#79]ゴーストフィクサーズ - 田中靖規 | 少年ジャンプ+on 2026年4月2日 at PM 3:29
ゴーストフィクサーズ 田中靖規 <毎週金曜更新>御厨ヶ丘ニュータウン。ここはある事象を境に、非現実的現象【GHOST】の坩堝と化した!そんな町に住む中学生ひふみは、ある日引っ越してきた少女と出会い…。『サマータイムレンダ』の田中靖規が描く、非現実校正アクション! [JC7巻発売中]
- difit-review スキルでエージェント自身に変更点をコメントしてもらおうon 2026年4月2日 at PM 3:25
difit はローカルの git 差分を GitHub スタイルのインターフェースで確認できる CLI ツールです。difit-review スキルを使用することでエージェントがコードの変更点にコメントを残した状態で difit を起動できます。この記事では、difit-review スキルを使用してエージェント自身にコードの変更点をコメントしてもらう...
- ちかちゃんはもっとしりたい - むぴー | 少年ジャンプ+on 2026年4月2日 at PM 3:01
ちかちゃんはもっとしりたい むぴー 小学2年生のちかちゃんはとなりのせきのゆうきくんが気になります。ゆうきくんのことをもっと知りたいちかちゃんはある時、チビというなぞの生物に出会い…!?
- [第12打]春雷卓球 - 平方昌宏 | 少年ジャンプ+on 2026年4月2日 at PM 3:00
春雷卓球 平方昌宏 <毎週金曜更新!最新3話無料>嵐野女子高校1年・轟美雷は、小柄ながら大の卓球好きで、全国に行くほどの実力を持っていた。しかし、全中時代、圧倒的な才能を前になすすべなく負け、卓球を辞めていた。そんな中、転校生として春咲桜花が卓球部にやってきて…?『デビィ・ザ・コルシファは負けず嫌い』平...
- [第4話]ブヨトピア - 雲母坂盾 | 少年ジャンプ+on 2026年4月2日 at PM 3:00
ブヨトピア 雲母坂盾 <毎週金曜更新>魔王を倒しきれず、世界を“ブヨブヨ”で溢れさせてしまった元勇者・ビヨンド。罪悪感から引きこもり続けた彼に、ある転機が訪れる…!!『ドリトライ』の雲母坂盾が描く、極限の“勇者VS社会生活”コメディ!!
- 1999年秋葉原ADV『世紀末之詩』、「作中の架空ゲーム20作品」を本当に作るプロジェクト始動。瀬戸口廉也・元長柾木・朱門優など夢の布陣に、ファン狂喜乱舞 - AUTOMATONon 2026年4月2日 at PM 1:53
Nekodayは4月1日、開発中の新作『世紀末之詩』に関して、スピンオフプロジェクト「20世紀 × 20の物語 × 20人」を発表した。 『世紀末之詩』は、中国・四川省発のインディーデベロッパーブランドであるNekodayが手がける終末青春群像ADVだ。中国と日本のクリエイター陣による共同制作ゲームプロジェクトで、2020年にリリ...
- 株式会社刀が大苦戦、ジャングリア沖縄に“救世主”が追加融資へ…資金集めの舞台裏《追加出資に応じなかったのは大和証券グループだけでなく…》 | 週刊文春on 2026年4月2日 at PM 1:52
テーマパーク失敗が相次ぐ「刀」の森岡毅。沖縄だけでなく、横浜のディズニー級テーマパーク計画にも水面下で関与。だが超人気漫画キャラクターの誘致で身勝手な提案を繰り返し――。カリスマの虚像を明らかにする。(ジャングリア沖縄編。横浜テーマパーク計画編はこちら) 刀といえば、2月には運営していた東京・お台場...

