—本記事は、福地研究室2年生・橋本優太郎がお送りします—
私達の研究室では、電子機器のケーブル類や本、収納ボックスなどの整理にテプラを利用しています。特にPCに接続してソフトから印刷できる「テプラ PRO」は便利で重宝しています。
しかしながら、数多くの備品それぞれにラベルを印刷するために印刷ソフトを立ち上げて作業するのはやや面倒くさく、ついラベルを貼るのを怠りがちで、整理の障害になっていました。
そこで、日頃から研究室内の連絡ツールとして利用している slack にコマンドを投げるだけで手軽に印刷できるようにしてみました。
テプラ PRO の問題点
研究室で利用している「テプラ PRO SR3700P」では専用ソフト「SPC10」を起動してラベルを印刷するのですが、これが結構めんどくさい!
ただ単に1枚ラベルを印刷したいだけでも、SPC10 からやろうと思うと、まずソフトが入ってるPCのそばまで行って、ソフトを起動して色々操作してテキストを入力して印刷ボタンを押す、という一連の儀式が必要になります。
SPC10 にはもちろん様々な機能があるので、凝ったラベルを作るには便利です。しかし、備品の整理程度であれば細かい装飾は不要です。またそんなにしょっちゅう使うソフトでもないので、たまに起動しても使い方がすぐには分からないこともしばしばです。もっと簡単にラベルを作れれば、備品にラベルを貼る習慣も根付くのではないかと思いました。
そこで、普段からよく使っている slack 経由で自分のPCやスマートフォンから「これプリントしてよ」と話しかけるぐらいの気軽さでラベルが印刷できる環境を作ることにしました。
解決手法
SPC10 には「SPC10-API」という、外部ソフトウェアから SPC10 の機能を利用する API が備わっています。これを叩く slack bot を作成し、その bot にコマンドを送るためのラベル印刷専用チャンネルを研究室 slack に作りました。
今回は名前が1行に収まるようなラベルが作れればいいので、”tepra print” というコマンドの後に続くテキストを印刷できるようにしました。
例えば、専用チャンネルで
“tepra print Hello world!”
とコメントすると”Hello world!”と書かれたラベルが印刷されます。
slack から入力するとすぐに印刷がスタートするので、slack を開くところから数えても十数秒ほどでラベルを印刷できるようになりました。
備品の整理をしながらスマートフォンでさっと印刷するのも簡単ですし、買い物の帰りにそのラベルの印刷を指示しておいて、研究室に着いたらすぐ整理、なんてこともできます。
作ってみて
ラベルを印刷する時というのは、新しいものを買ったり、新しい人が来たり、備品の整理をしたりとバタバタしていることが多く、ソフトの使い方をいちいち思い出したり説明書を読んだりするのは億劫なものです。
このやり方なら使い方は簡単だし、忘れてしまったとしてもコマンド履歴が slack のログとして専用チャンネルに残っているので、困ることはなさそうです。
これまでにも急ぎの時などはテプラの代わりに白ビニールテープに黒マジックで間に合わせていたりしたのですが、tepra bot はそれよりも早くラベルが作れる上に読みやすいので、快適です。
また、だれがどんなラベルを印刷したかの情報が slack の専用チャンネルに流れてくるので、新しい備品の到着や整理状況の変化などの情報の共有にもなってくれるというのも面白いところです。
作り方詳細
SPC10-API は、接続しているPCから引数を与えて起動すると GUI を経由しなくても印刷をすることができる仕様になっています。具体的には、ラベルの装飾や文字の配置などの情報が入ったテンプレートファイルと、印刷されるテキスト情報が入った CSV ファイルのパスを引数に与えて実行します。
そこで、 slack で受け取ったテキスト情報を含んだ CSV ファイルを生成し、SPC10に渡すという方法で実装しました。slack の方では slack bot を立ち上げ、ユーザーからのコマンドを受け取るような仕組みを作ります。
今回はこれをGo言語で実装しました。Go言語での slack bot の実装は以下を参考にしています。
問題点
tepra bot はいまのところ便利に使えてはいるのですが、現在の実装では問題点も残っています。
- 専用チャンネルに入って “tepra print ____” と打ち込むのはちょっと冗長
- 同じものを一度に複数枚印刷できない
- SPI10-API の仕様上、ラベルの長さが固定になってしまう(後述)
- そのため文字数が少ないと余白ができ、逆に多いラベルだと文字がつまってしまう
- 印刷に失敗したり、ラベルの残量がなくなってもわからない
- テンプレートの切り替えに未対応
これらの内、ラベルの長さが固定になってしまう問題は、もともと SPC10-API はラベルの長さが固定されたテンプレートに文字列を流し込んで印刷することを想定したものである事に起因しています。入力文字列に応じてテンプレートを切り替える事で対処できそうですが、まだ手を着けていません。
もっと凝ったラベルデザインを可能にするにはコマンドを色々と増やす必要がありそうですが、暇ができたらやってみたいところです。