今回はコマンドラインからバーコードを生成してみましょう。以前、QRコードを生成しました。
・第91回「QRコードを生成」
https://news.mynavi.jp/techplus/article/natonakucommand-91/
バーコードはQRコードよりも歴史が古く今でも現役で広く使われています。高性能なQRコードに置き換わってもよいのでは?と思う人もいるかもしれませんが、狭い領域などではやはりバーコードが活躍します。
バーコードは無理にコマンドラインから生成しなくても各種ツールやアプリを使えば十分に用に足りることもあるでしょう。ここらへんは状況に応じて使い分ければよいと思います。
○zintのインストール(Linux)
コマンドラインからバーコードを生成する方法はいくつかありますが今回はzintを使います。
・zint
https://zint.org.uk/
すでにzintが入っているかどうかは以下のコマンドを入力します。インストールされていればzintのバージョンが表示されます。インストールされていない場合はコマンドが見つかりません、といったメッセージが表示されます。
zint --version
まず、ラズベリーパイにインストールしてみましょう。以下のようにコマンドを入力します。
sudo apt update
sudo apt upgrade -y
アップデートが終わったら、以下のようにコマンドを入力します。
sudo apt install zint -y
正常にインストールされたか確認します。
zint --version
○zintのインストール(macOS)
次にmacOSにzintをインストールします。macOSの場合、あらかじめHomebrewをインストールしておきます。
・Homebrew
https://brew.sh/ja/
brewがインストールされていない場合は以下のコマンドを入力します。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brewがインストールされたら(もしくはされているか確認するには)以下のようにコマンドを入力します。バージョンが表示されれば正常にインストールされています。
brew --version
brewがインストールされていれば以下のコマンドを入力するとzintがインストールされます。
brew install zint
正常にインストールされたか確認します。以下のようにコマンドを入力します。
zint --version
○zintでバーコードを生成する(EAN-13/JANコード/ISBNコード)
それではzintでバーコードを生成してみましょう。ここでは広く使われているEAN-13 (European Article Number 13) 、日本だとJANコードのネーミングの方が馴染みがあるかもしれません。なお、バーコードリーダー(アプリ)によってはEAN-128と認識されてしまうこともあります。
EAN-13は一般的な商品に付いているバーコードです。13桁の数字で構成され、最初の2桁は国コード、次の5桁はメーカーコード、さらに次の5桁は製品コード、最後の1桁はチェックデジットになっています。
それではバーコードを生成してみましょう。生成されたバーコードは画像になります。ここではデスクトップ上にあるsampleディレクトリ内にバーコード画像を生成し保存します。生成時にパスを指定するのも面倒なのでデスクトップ上にsampleディレクトリを作成し、そこをカレントディレクトリとします。samppleディレクトリはGUIでフォルダとして作成しても構いません。sampleディレクトリを作成したら以下のコマンドでsampleディレクトリをカレントディレクトリとします。環境によってはデスクトップの名称が異なっているかもしれません。その場合は適宜読み替えて以下のコマンドを入力してください。
cd ~/Desktop/sample
バーコードを生成するにはdオプションの後にバーコードの文字列を指定し、その後にoオプションで生成するバーコード画像のファイル名(ファイルパス)を指定します。
以下のように指定すると指定したバーコードがカレントディレクトリにb1.pngという名前で生成されます。
zint -d "4987246601955" -o b1.png
次に書籍で使用されているISBN-13コード(以下ISBNコード)を生成してみましょう。ISBNコードを生成する場合も先ほどと同様にオプション等を指定します。手持ちの書籍などのバーコードを指定し生成させてみてもよいでしょう。
zint -d "9784839987664" -o b2.png
○zintでQRを生成する
zintはバーコードだけでなくQRコードも生成することができます。QRコードを生成する場合はbオプションを使い58を指定します。
以下のように指定するとmyNaviのQRコードが生成されます。
zint -b 58 -d "myNavi" -o q1.png
QRコードを読み取れるアプリやカメラで撮影すると指定したキーワードが表示されます。URLにしておけばタッチ(タップ/クリック)した場合に該当するURLがブラウザ等で表示されます。
zintは日本語にも対応しています。日本語を使う場合は文字コードを指定する必要があります。日本語の場合はUTF-8またはShift JISの文字コードであることをeciオプションで指定する必要があります。eciオプションで指定する文字コードは他にもあり、以下のようになっています。
3: ISO/IEC 8859-1 - Latin alphabet No. 1 (default)
4: ISO/IEC 8859-2 - Latin alphabet No. 2
5: ISO/IEC 8859-3 - Latin alphabet No. 3
6: ISO/IEC 8859-4 - Latin alphabet No. 4
7: ISO/IEC 8859-5 - Latin/Cyrillic alphabet
8: ISO/IEC 8859-6 - Latin/Arabic alphabet
9: ISO/IEC 8859-7 - Latin/Greek alphabet
10: ISO/IEC 8859-8 - Latin/Hebrew alphabet
11: ISO/IEC 8859-9 - Latin alphabet No. 5 (Turkish)
12: ISO/IEC 8859-10 - Latin alphabet No. 6 (Nordic)
13: ISO/IEC 8859-11 - Latin/Thai alphabet
15: ISO/IEC 8859-13 - Latin alphabet No. 7 (Baltic)
16: ISO/IEC 8859-14 - Latin alphabet No. 8 (Celtic)
17: ISO/IEC 8859-15 - Latin alphabet No. 9
18: ISO/IEC 8859-16 - Latin alphabet No. 10
20: Shift JIS (JIS X 0208 and JIS X 0201)
21: Windows 1250 - Latin 2 (Central Europe)
22: Windows 1251 - Cyrillic
23: Windows 1252 - Latin 1
24: Windows 1256 - Arabic
25: UTF-16BE (High order byte first)
26: UTF-8
27: ASCII (ISO/IEC 646 IRV)
28: Big5 (Taiwan) Chinese Character Set
29: GB 2312 (PRC) Chinese Character Set
30: Korean Character Set EUC-KR (KS X 1001:2002)
31: GBK Chinese Character Set
32: GB 18030 Chinese Character Set
33: UTF-16LE (Low order byte first)
34: UTF-32BE (High order bytes first)
35: UTF-32LE (Low order bytes first)
170: ISO/IEC 646 Invariant (ASCII subset)
899: 8-bit binary data
この連載のタイトルを含む文字列のQRコードを生成するには以下のようになります。(UTF-8の文字コードを指定)
zint -b 58 -d "なんとなくコマンド" -o q2.png --eci=26
古いデバイス等の場合はShift JISの方が良いかもしれません。この場合は以下のようになります。Shift JISを指定してもiPhoneなどのカメラでは問題なく日本語として読み取られます。
zint -b 58 -d "なんとなくコマンド" -o q3.png --eci=20
○ファイルに記載された値からバーコードを生成する
最後にテキストファイルに記載されたバーコードの値からバーコード画像を生成してみましょう。ここらへんはシェルスクリプトを使うと手軽にできます。
まず、テキストファイルは以下のようなバーコードの値が行単位で入っているものとします。テキストファイルの名前は1.txtとしています。
・1.txt
4987246601955
4573252944010
4972796220404
4953103468689
4901473912790
4901881812958
1行ずつ読み込んで処理するにはforを使います。以下のようにするとファイルに記載された値をバーコードとして生成します。なお、ファイル名はバーコードの値を利用しています。
シェルスクリプト名はbcd1.shとしています。
・bcd1.sh
#!/bin/bash
while read line
do
zint -d "${line}" -o "${line}.png"
done < "1.txt"
このシェルスクリプトを実行すると以下のように複数のバーコードが生成されます。
上記のシェルスクリプトだと常に読み込むファイル名が1.txtになっていますので、汎用性がありません。そこで、コマンドラインからシェルスクリプトにファイル名をパラメーター(引数)として渡すように改良しましょう。
コマンドラインから渡されるパラメーターは$1、$2、$3のように$の後に数字が付いたものになります。数字が1であれば最初のパラメーター、2であれば2番目のパラメーターという具合になります。
コマンドラインからファイル名をパラメーターとして渡すようにすると先ほどのシェルスクリプトは以下のようになります。シェルスクリプト名はbcd2.shとしています。
.











![[USBで録画や再生可能]Tinguポータブルテレビ テレビ小型 14.1インチ 高齢者向け 病院使用可能 大画面 大音量 簡単操作 車中泊 車載用バッグ付き 良い画質 HDMI端子搭載 録画機能 YouTube視聴可能 モバイルバッテリーに対応 AC電源・車載電源に対応 スタンド/吊り下げ/車載の3種類設置 リモコン付き 遠距離操作可能 タイムシフト機能付き 底部ボタン 軽量 (14.1インチ)](https://m.media-amazon.com/images/I/51-Yonm5vZL._SL500_.jpg)