【Mac】QRコード画像をサクッと作れる Segno を試してみた

プログラム

普通の人はあんまり無いかもしれませんが、QR コードが作りたくなることが最近ありました。その際にお世話になった Segno がなかなか素敵だったので簡単な紹介を書いてみます。

テスト用の QR コード作成に立ちはだかる壁

私的なプロジェクトで QR コードを扱うものを考えてた時に、サンプルとなる QR コードをどうやって生成するかが課題となりました。つまり、テストデータとしてそこそこの数を手軽に作成できることと、自分で思ったデータを作成できることが要件となります。一般的な QR コード作成アプリの場合、単純なデータは作成できますが、理想的なテストデータを作るのに向いてなかったりします。

例えば、一つのデータを複数の QR コードに分割できる Structured Append 形式に対応しているものはほぼありません(そもそもそんなマイナー形式を扱う必要性が薄いのですが……)し、画像出力形式が JPEG 固定だったり、出力画像サイズが選べなかったり。

救世主となった QR エンコーダー 『Segno』

そんな時にググっていたら発見したのが Segno です。Python ベースのコマンドラインツールなので、Python は必要ですが、こいつがかなり素敵な仕上がりとなっています。何と言っても、対応している QR フォーマット、痒い所に手が届くオプション機能や出力フォーマットの多彩さが魅力です。

対応フォーマット

QR フォーマット

  • QR コード バージョン1〜40
    • Structured Append(分割 QR コード)対応
  • マイクロ QR コード M1〜M4

出力フォーマット

  • PNG
  • SVG
  • SVGZ
  • EPS(Photoshop 等で利用)
  • PDF
  • コマンドライン出力
  • テキスト出力

出力してみた

コマンドラインで出力するとこんな感じ。頑張って出力している感がスゴイ。フォントのサイズによりちょっと縦長になってしまっているあたりも愛らしい。当然ですが手元のスマホでも読めました。

テキスト出力してみたのがこちら。0 が白で 1 が黒だと思ってもらえれば良いかと……。何に使うのがあんまりイメージは湧きませんが、インパクトからくる面白さはなかなかのもの。

00000000000000000000000000000
00000000000000000000000000000
00000000000000000000000000000
00000000000000000000000000000
00001111111000010011111110000
00001000001010110010000010000
00001011101011110010111010000
00001011101000010010111010000
00001011101001001010111010000
00001000001001100010000010000
00001111111010101011111110000
00000000000001110000000000000
00000111011000101000001100000
00000001100101100111111010000
00001101011101000101000110000
00000111110000001001010100000
00001010111111011110000010000
00000000000010011011001010000
00001111111000101111100000000
00001000001011010101011110000
00001011101001011000011000000
00001011101011000010011100000
00001011101011001001001000000
00001000001011010111100010000
00001111111000110111001000000
00000000000000000000000000000
00000000000000000000000000000
00000000000000000000000000000
00000000000000000000000000000

他にも便利な機能が……

出力形式の多さもオススメポイントですが、他にも設定できると便利なものがいくつかありました。

誤り訂正機能

QR コードは色々な所に貼られる性質上、コードが汚れたり欠損したりしてしまうケースがあります。そこで QR コードの機能として誤り訂正機能があります。これにより最大約30%(公式サイトによると実証実験として50%のものもあるとか)のコードが欠損しても QR コードのデータが正常に読めるようになります。

この誤り訂正機能を segno でも指定することができ、レベル L(約7%)〜レベルH(約30%)まで対応しています。

スケーリングとパディング

出力データに関するものですが、QR コードを実際に出力するときの画像サイズ(解像度)を指定できます。さらに、外枠のサイズまで指定できるので、思った通りのサイズの QR コードをゲットできます。テストコード向けのものだと画像サイズは最小限で良いですし、余白もほぼ不要です。試しに出力した最小サイズのコードがこちら。

色の設定

QR コード自体の色と背景色が設定できます。最近では色々な印刷物に QR コードが印刷されていますが、 コードの色味によっては読みにくくなることもあるので、そのあたりのテストデータを作成するのにも良さそうです。

Python からライブラリとして呼び出せる

ここまでは QR コードを出力するための機能として紹介しましたが、Python のコードからライブラリとして利用することもできるので、これまで紹介したような出力方式でアウトプットを得ることが可能です。大量のテストデータを作ったりすることもできるようになりますね。

コマンドラインでの使い方

(Python がインストールされてない場合はまずそちらをインストールしてください)
Segno は pip という Python のパッケージ管理ツールで簡単にインストールできます。

$ pip install segno

その後は segno コマンドを叩くだけで実行可能です。下記の例だと “Hello Segno” というテキストを含んだ QR コードがコンソール上に出力されます。

$ segno "Hello Segno"

もっと他の形式を試したい場合は 公式サイトのコマンドラインサンプル を見れば、ほぼ何ができるかわかるとは思います。

まとめ

万人が必要とする様なものでは無いとは思いますが、ピンポイントで必要な人はいそう感じがします。今回は単純なテスト用に1つコードを出力するために利用しましたが、ライブラリとして利用することで別の使い方もできそうな感じがしています。例えば大量の URL 一覧に対してアクセスするための QR コードを大量に発行する必要がある場合とか。そんな時にはこの segno のことを思い出すことになるはず。

コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。

プログラム
1
久々にGitHubを使おうとしたらエラーが出たので対応した話

久しぶりにGitHubにコードをpushしようとしたら、以下のようなエラーが発生した話。 ローカルの …

プログラム
AWS 利用料支払いをクレジットカードで出来なかった件

とある昼下がりの午後(だったかは定かではない)に一通のメールが届きました。 タイトルはこんな感じです …

プログラム
ファイルを読み込む html/JavaScript をローカル環境で実行したかった件

ローカル環境で html/JavaScript を書いている機会が増えて、色々と詰まったところがあっ …