部品庫の段ボールをQRコードで管理しようと考えてみたものの
部品置き場の前で、棚を見上げて立ち尽くしたことはありませんか?
「あの部品、どこに置いたんだっけ…」。棚を端から順番に探して、やっと見つけたと思ったら別の部品だった。工場では、そんな場面が毎日のようにあります。
そこで、部品の置き場所をQRコードで管理しよう、という話になります。ところが、ここで多くの方が足止めされます。部品が何百種類もあると、QRコードを作るだけで大仕事になってしまうからです。今回は、その「たくさんのQRコードを作る手間」を、Excelの部品リストから一気に片づける方法をご紹介します。
探す時間は、目に見えないコストです
たとえば、1回の探し物に5分かかり、それが1日に10回あったとします(あくまで仮の計算です)。それだけで1日50分、ひと月ならほぼ丸1日分が「探すだけ」で消えていきます。
もっと困るのは、置き場所が「ベテランの頭の中」にしかない場合です。その人がお休みの日は、誰も場所が分からない。そんな状態は、できれば早く抜け出したいですよね。
QRコードで置き場所を管理する、という考え方
やり方はシンプルです。棚や部品箱にQRコードを貼っておき、スマホのカメラで読み取ります。すると画面に「品番:ABC-123 / 棚:A-3 / 備考:ボルト M6」のように表示されます。
今回作るQRコードの中身は、この文字そのものです。ですから、データベースやシステムを用意しなくても、すぐに始められます。
では、何が大変なのでしょうか。無料のQRコード作成サイトを使えば、1個ずつなら誰でも作れます。しかし、文字を入力して、画像を保存して、ファイル名を付けて…という作業を、部品の数だけ繰り返すことになります。100個、300個となると、気が遠くなりますよね。
ポイント: 手間がかかるのは「QRコードの作り方」ではなく「同じ作業の繰り返し」です。繰り返しは、パソコンがいちばん得意な仕事です。
そこで、部品リストを1つ用意して、あとはPython(パイソン)に任せます。
まずは3個だけ作ってみましょう
いきなり300個ではなく、まずは3個で感覚をつかみましょう。ライブラリはqrcodeをつかいます。画像を扱うのでライブラリpillowもいれます。
品番、棚番号、備考の3つを入れた部品リストから、QRコードの画像を作ります。
from pathlib import Path
import qrcode
# 品番、棚番号、備考
ITEMS = [
("ABC-123", "A-3", "ボルト M6"),
("DEF-456", "B-1", "ワッシャー"),
("GHI-789", "C-2", "ナット"),
]
out_dir = Path("out")
out_dir.mkdir(exist_ok=True)
for part_no, shelf, note in ITEMS:
text = f"品番:{part_no}\n棚:{shelf}\n備考:{note}"
img = qrcode.make(text)
img.save(out_dir / f"QR_{part_no}.png")
print("作成:", part_no)
見ていただきたいのは、ITEMS と書かれた部分です。ここが部品リストです。その下の for は「リストの1行ずつ、同じ作業を繰り返す」という意味で、1行ごとにQRコードを作り、out フォルダに保存しています。
実行すると、out フォルダに3枚の画像ができます。ファイル名は、品番が入った QR_ABC-123.png のようになるので、あとで探すときにも迷いません。

今回のサンプルでは、作ったQRコードを実際に読み取って、日本語も含めて書いたとおりに表示されることを確認しています。
部品が300個あっても、やることは同じです
次は、いよいよ本題の「たくさん作る」です。部品リストを、いつものExcelで作ってください。1行目に見出し、2行目からが部品です。
| 品番 | 棚番号 | 備考 |
|---|---|---|
| P-0001 | A-1 | ボルト M6 |
| P-0002 | B-2 | ワッシャー |
| P-0003 | C-3 | ナット |
ファイル名を 部品リスト.xlsx として、Pythonのファイルと同じフォルダに置きます。Excelに慣れている方ほど、ここは安心できると思います。新しい部品が増えたら、Excelに1行足すだけです。
読み込む部分だけを変えたコードが、こちらです。
from pathlib import Path
import qrcode
from openpyxl import load_workbook
out_dir = Path("out")
out_dir.mkdir(exist_ok=True)
wb = load_workbook("部品リスト.xlsx")
ws = wb.active
count = 0
# 2行目から読む(1行目は見出し)
for part_no, shelf, note in ws.iter_rows(min_row=2, max_col=3, values_only=True):
if not part_no: # 空行は飛ばす
continue
text = f"品番:{part_no}\n棚:{shelf}"
if note:
text += f"\n備考:{note}"
qrcode.make(text).save(out_dir / f"QR_{part_no}.png")
count += 1
print(f"{count}枚のQRコードを作りました")
先ほどのコードとの違いは、部品リストを書く場所だけです。直接書く代わりに、Excelから1行ずつ読み込んでいます。空の行は飛ばし、備考が空欄の部品には備考の行を付けないようにしてあります。
Pythonで実行すると数秒で終了します。手作業で1枚1分かかると仮定すると、300枚で5時間です。この仮の計算と比べると、差は大きいですよね。しかも、リストを直して再実行するだけで、いつでも全部作り直せます。
使う前に知っておいてほしいこと
便利な方法ですが、できないこと、気をつけることもあります。
- QRコードの中身は文字そのものです。棚番号が変わったときは、QRコードを作り直して貼り替える必要があります。
- 読み取りアプリによっては、日本語が正しく表示されないことがあります。本番で貼る前に、現場で使うスマホで必ず試し読みをしてください。
- 小さく印刷したり、汚れたりすると読めなくなります。実際に貼る大きさで印刷して、確認してみましょう。
1つ目の「貼り替え」が負担に感じる場合は、QRコードには品番などの番号だけを入れ、置き場所はExcelやデータベース側で管理する方法もあります。この場合、棚が変わってもQRコードは貼ったままで済みます。
まとめ
部品置き場のQRコードは、作り方そのものは難しくありません。大変なのは数が多いことで、それは「Excelの部品リスト」と「Pythonの繰り返し」で解決できます。まずは3個から、気軽に試してみてください。
「うちの部品置き場の場合は、どう進めればいいの?」と思われた方は、お気軽にご相談ください。現場の状況をうかがいながら、無理のない進め方を一緒に考えます。
注)ブログ作成にClaudeを用いております。コードを流用したことによる損害、クレームについては応じかねます。
