バージョン 1.0 — 2026年2月
有限会社 パオ・アット・オフィス
https://www.pao.ac/
Barcode.Ruby gem版 は、C++ で書かれた高性能バーコードエンジンを Ruby から利用するためのラッパーgemです。
2つのバリエーションがあります:
| パッケージ | gem名 | エンジン | 特徴 |
|---|---|---|---|
| Native版(FFI) | barcode_pao_ffi |
C++ DLL/SO(FFI経由) | 最高速。Linux/Windows対応 |
| WASM版 | barcode_pao_wasm |
C++ WASM(Node.js経由) | Node.js があればどこでも動く |
どちらも Pure Ruby版と同じ API(setter メソッドパターン)で使用でき、全18種 のバーコードを PNG / JPEG / SVG で出力できます。
require 'barcode_pao_wasm'
qr = BarcodePaoWasm::QRCode.new(BarcodePaoWasm::FORMAT_PNG)
qr.draw("https://www.pao.ac/", 300)
base64 = qr.get_image_base64
| 特長 | 説明 |
|---|---|
| C++ エンジン | 実績のある C++ バーコードライブラリを Ruby から利用 |
| 2つの選択肢 | FFI(最高速)と WASM(ポータブル)から選べる |
| Pure Ruby版と同じAPI | setter メソッドパターンで統一 |
| 18種のバーコード | 1D・2D・GS1・郵便まで網羅 |
| PNG / JPEG / SVG | 用途に応じた出力形式 |
Pure Ruby版と同じ 全18種 に対応しています。
| カテゴリ | バーコード |
|---|---|
| 1次元 | Code39, Code93, Code128, GS1-128, NW-7, ITF, Matrix2of5, NEC2of5 |
| 商品 | JAN-8, JAN-13, UPC-A, UPC-E |
| GS1 DataBar | 標準型, 限定型, 拡張型 |
| 郵便 | 郵便カスタマバーコード |
| 2次元 | QRコード, DataMatrix, PDF417 |
WASM版(barcode_pao_wasm):
| 項目 | 要件 |
|---|---|
| Ruby | 3.0 以降 |
| Node.js | 18 以降(WASMランタイム) |
Native版(barcode_pao_ffi):
| 項目 | 要件 |
|---|---|
| Ruby | 3.0 以降 |
| gem | ffi |
| OS | Linux(.so)または Windows(.dll) |
https://www.pao.ac/barcode.ruby/#download
barcode_ruby_gem/
├── easy2steps/
│ ├── Gemfile
│ ├── app.rb
│ └── views/index.erb
├── allinone/
│ ├── Gemfile
│ ├── app.rb
│ ├── views/index.erb
│ └── public/
└── barcode_pao_wasm/
├── lib/barcode_pao_wasm.rb
├── lib/barcode_pao_wasm/...
└── wasm/
├── barcode.wasm
├── barcode.mjs
└── _barcode_runner.mjs
cd barcode_ruby_gem/easy2steps
bundle install
ruby app.rb
# → http://localhost:5742
require 'barcode_pao_wasm'
qr = BarcodePaoWasm::QRCode.new(BarcodePaoWasm::FORMAT_PNG)
qr.set_error_correction_level("M")
qr.draw("https://www.pao.ac/", 300)
base64 = qr.get_image_base64
image_bytes = qr.get_image_memory
File.binwrite("qr.png", image_bytes)
require 'barcode_pao_ffi'
qr = BarcodePaoFfi::QRCode.new(BarcodePaoFfi::FORMAT_PNG)
qr.set_error_correction_level("M")
qr.draw("https://www.pao.ac/", 300)
base64 = qr.get_image_base64
bc = BarcodePaoWasm::Code128.new(BarcodePaoWasm::FORMAT_SVG)
bc.set_show_text(true)
bc.set_text_even_spacing(true)
bc.draw("Hello-2026", 400, 100)
svg = bc.get_svg
require 'sinatra'
require 'json'
require 'barcode_pao_wasm'
get '/api/qr' do
content_type :json
code = params[:code] || "https://www.pao.ac/"
qr = BarcodePaoWasm::QRCode.new(BarcodePaoWasm::FORMAT_PNG)
qr.draw(code, 300)
base64 = qr.get_image_base64
{ base64: base64 }.to_json
end
gem版(FFI/WASM)は setter メソッドパターン を使用します:
| Pure Ruby版 | gem版(FFI/WASM) |
|---|---|
bc.show_text = true |
bc.set_show_text(true) |
bc.text_even_spacing = true |
bc.set_text_even_spacing(true) |
bc.extended_guard = true |
bc.set_extended_guard(true) |
bc.foreground_color = [r,g,b,a] |
bc.set_foreground_color(r, g, b, a) |
bc.fit_width = true |
bc.set_fit_width(true) |
出力メソッドは共通です:get_image_base64, get_svg, get_image_memory
| メソッド | 説明 |
|---|---|
set_output_format(fmt) |
出力形式("png", "jpeg", "svg") |
set_foreground_color(r, g, b, a) |
前景色(RGBA) |
set_background_color(r, g, b, a) |
背景色(RGBA) |
set_fit_width(bool) |
幅ぴったり描画 |
set_px_adjust_black(adj) |
黒バー幅調整 |
set_px_adjust_white(adj) |
白スペース幅調整 |
get_image_base64 |
Base64 データURI取得 |
get_svg |
SVG文字列取得 |
get_image_memory |
バイト列取得 |
| メソッド | 説明 | デフォルト |
|---|---|---|
set_show_text(bool) |
テキスト表示 | true |
set_text_even_spacing(bool) |
テキスト均等割付 | true |
set_text_font_scale(scale) |
フォントサイズ倍率 | 1.0 |
set_text_vertical_offset_scale(scale) |
垂直オフセット倍率 | 1.0 |
set_min_line_width(width) |
最小線幅 | 1 |
draw メソッド: draw(code, width, height)
Code39 / NW-7: set_show_start_stop(bool)
Code128: set_code_mode(mode) — CODE128_AUTO / CODE128_CODE_A / CODE128_CODE_B / CODE128_CODE_C
JAN-8 / JAN-13 / UPC-A / UPC-E: set_extended_guard(bool)
GS1 DataBar 14: コンストラクタに symbol_type 引数(OMNIDIRECTIONAL / STACKED / STACKED_OMNIDIRECTIONAL)
GS1 DataBar 拡張型: set_no_of_columns(cols)
郵便カスタマバーコード: draw(code, height) — 幅は自動計算
| メソッド | 説明 | デフォルト |
|---|---|---|
set_string_encoding(enc) |
"utf-8" / "shift-jis" |
"utf-8" |
set_error_correction_level(level) |
"L" / "M" / "Q" / "H" |
"M" |
set_version(ver) |
0(自動)〜 40 | 0 |
set_encode_mode(mode) |
"N" / "A" / "B" / "K" |
"B" |
draw メソッド: draw(code, size) — 正方形
| メソッド | 説明 | デフォルト |
|---|---|---|
set_string_encoding(enc) |
"utf-8" / "shift-jis" |
"utf-8" |
set_code_size(size) |
DX_SZ_AUTO 等 |
DX_SZ_AUTO |
set_encode_scheme(scheme) |
DX_SCHEME_AUTO_BEST 等 |
DX_SCHEME_AUTO_BEST |
draw メソッド: draw(code, size) — 正方形
| メソッド | 説明 | デフォルト |
|---|---|---|
set_string_encoding(enc) |
"utf-8" / "shift-jis" |
"utf-8" |
set_error_level(level) |
0〜8 | 2 |
set_columns(cols) |
列数 | 0(自動) |
set_rows(rows) |
行数 | 0(自動) |
set_aspect_ratio(ratio) |
縦横比 | 3.0 |
set_y_height(h) |
Y高さ係数 | 3 |
draw メソッド: draw(code, width, height)
| 項目 | Pure Ruby版 | gem版(FFI/WASM) |
|---|---|---|
| エンジン | Ruby で実装 | C++ バイナリ |
| 依存 | chunky_png, ttfunk | FFI gem / Node.js |
| 速度 | 標準 | 高速(特にFFI版) |
| API | attr_accessor | setter メソッド |
| ポータビリティ | どこでも動く | FFI: OS限定 / WASM: Node.js必須 |
| ソースコード | Ruby ソース付き | バイナリ配布 |
どちらを選ぶべきか?
| 項目 | 要件 |
|---|---|
| Ruby | 3.0 以降 |
| Node.js | 18 以降 |
| OS | Windows / macOS / Linux |
| 項目 | 要件 |
|---|---|
| Ruby | 3.0 以降 |
| gem | ffi |
| OS | Linux / Windows |
Barcode.Ruby の使用について、利用者様と有限会社パオ・アット・オフィス(以下「弊社」)は、以下の各項目に同意するものとします。
1. 使用許諾書 — この使用許諾書は、利用者様がお使いのパソコンにおいて Barcode.Ruby を使用する場合に同意しなければならない契約書です。
2. 同意 — 利用者様が Barcode.Ruby を使用する時点で、本使用許諾書に同意されたものとします。
3. ライセンスの購入 — 製品版を使用して開発を行う場合、1 台の開発用コンピュータにつき 1 ライセンスの購入が必要です。お客様環境等、開発コンピュータでないマシンでの使用にはライセンスは不要です(ランタイムライセンスフリー)。
4. 著作権 — Barcode.Ruby の著作権は、いかなる場合においても弊社に帰属いたします。
5. 免責 — Barcode.Ruby の使用によって、直接的または間接的に生じたいかなる損害に対しても、弊社は補償賠償の責任を負わないものとします。
6. 禁止事項 — Barcode.Ruby およびその複製物を第三者に譲渡・貸与することはできません。開発ツールとしての再販・再配布を禁止します。ただし、モジュールとして組み込みを行い再販・再配布する場合は問題ございません。
7. 保証の範囲 — 弊社は Barcode.Ruby の仕様を予告なしに変更することがあります。
8. 適用期間 — 本使用許諾条件は利用者様が Barcode.Ruby を使用した日より有効です。
試用版: 生成されるバーコードに「SAMPLE」の透かしが表示されます。機能制限はありません。
製品版: 透かしなしでバーコードを生成できます。
| Webサイト | https://www.pao.ac/ |
| 製品ページ | https://www.pao.ac/barcode.ruby/ |
| メール | info@pao.ac |
Barcode.Ruby (gem版) ユーザーズマニュアル バージョン 1.0 — 2026年2月
© 2026 有限会社 パオ・アット・オフィス