カンバンの付箋作成をいい感じにしたい 〜環境構築編〜

こんにちは、ココナラ基盤チームのもときとひろたです。
今回は、タスク管理の効率化をチームで改善していこうというテーマに
ラズパイを使って業務の自動化をする話です。
チーム内でそれぞれ得意分野を担当して、複数回に渡って記事にしていきたいと思います。

全体像

今回の仕組みを考えた理由

日々の業務のタスク管理方法は?

  • 日々の業務ではGithubのissueを利用して作業の管理をしている
    • issueを付箋に落とし看板(ホワイトボード)に貼り付けて、見える化している。

タスク管理を行っていくにつれて、問題がいくつか浮き彫りになってきた。

  • GitHubのissueとホワイトボードに貼っている付箋の数が大きく違ってきてしまっている。
  • ユーザーからの問い合わせissueなどは、日々大量に来るため付箋化が遅れる。(またはしない)
  • 何の作業がたまってしまっているのかが目視で直ぐにわからなくなってしまっている。

上記問題点を元に共通の原因を探ってみた

結局のところ

Githubのissueを付箋に書き出すのが非常に面倒

これにつきる!

解決方法はなにかないか・・・

いくつか案だしをしてみた

  • でっかいモニターに出しちゃえば良いんじゃないの?
    • そんな金あるか!!w(by 岡村)
  • スプリントレビューでいつもより入念にチェックすれば良いんじゃないの?
    • めんどくさいよ!(by もとき)
    • ブヒ(by ひろた)
  • 付箋とかを自動で印刷して自動化しちゃえば良いんじゃない?(by もとき)
    • nemonic がLinuxとかのコマンドで自動で印刷できたら最高なんだよな・・・(by もとき)
    • ふが(by ひろた)
  • めんどくさいから、サーマルプリンタをRaspberry Piから制御出来る様にしちゃえば良いんじゃない?(by もとき)
    • それだ!(by 岡村)
    • ふご(by ひろた)

という事で、Raspberry Piからissueの内容をサーマルプリンタに出力する仕組みで決定!

概要図を描いてやりたいことを見える化してみる

具体的に、今回やりたいことの一連の流れを図式化すると以下の様になります。 f:id:coconalainc:20190204141340p:plain

このなかでRaspberry Piとサーマルプリンタにやらせたいことはこんな感じ

  • Raspberry Pi
    • Githubのissue起票を監視
    • 新しくissueが起票されたらサーマルプリンタにissue情報を送信
  • サーマルプリンタ
    • 印刷!!

より具体的に仕組みを落とし込んでみる

Github監視&印刷(バッチ)

  • Githubのイベントフックでissue番号をどこかに蓄積させる
    • 蓄積方法はSpreadsheetを一旦想定
  • Raspberry Piは蓄積されたissue番号を監視し、番号からissueの内容を取得しサーマルプリンタで出力する
    • 監視用バッチはPython(勉強がてら)で実装
    • データを整形し、サーマルプリンタで出力する

さて!作業開始!

まずはとにかく何か印刷してみるところから初めまます。

必要機材

  • Raspberry Pi 3 ModelB
  • サーマルプリンタ MunByn ITPPO68USE-BK 80mm
  • 感熱紙
  • サーマルプリンタ設定用WindowsPC(プリンタの初期設定で使います)

Raspbianのセットアップ

  • Raspbianの最新版をダウンロード
    • ※ 今回はフルパッケージ版を使います。
  • SDカードにOSイメージを書き込みます。
# 書き込み先のデバイス指定には注意してください。大変なことになります。 
$ sudo dd bs=1m if=2018-11-13-raspbian-jessie.img of=/dev/disk2
  • SDカードをラズパイに接続してbootさせます。
    • ラズパイのロゴマークがディスプレイに表示されればboot成功!
  • 無事デスクトップが表示されたら、libreofficeを削除しておきます。
# libre officeの削除
$ sudo apt-get remove --purge libreoffice*
$ sudo apt-get clean
$ sudo apt-get autoremove

ここまでで一旦Raspbianの初期設定は完了です。

サーマルプリンタ接続設定

こちらの記事の通り初期設定を行いました。
付属のユーティリティツールを利用するのですが、Mac非対応なのでWindows機を利用します。 USBポートモードで接続する方式となっているため、仮想COMポートモードで接続出来る様に設定変更する必要があるみたいです。

テスト印刷

python-ecsposを使ってテスト印刷してみます。

  • まずラズパイにpythonをインストールします。
root@raspberrypi:~# apt-get install --yes --no-install-recommends \
    build-essential \
    libjpeg-dev \
    python3-dev \
    python3-pip \
    python3-setuptools \
    zlib1g-dev

root@raspberrypi:~# python3 --version
Python 3.5.3
  • python-escposをインストールします。
root@raspberrypi:~# pip3 install python-escpos==2.2.0
  • pythonコンソールから、いざテスト印刷!
root@raspberrypi:~# python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import escpos.printer
>>> printer = escpos.printer.Serial("/dev/ttyACM0")
Serial printer enabled
>>> printer.text("Hello World!!!")
>>> printer.cut()
>>>
  • 印刷デキタ! f:id:coconalainc:20190204202954j:plain 文字の印刷から感熱紙のカットまで基本動作はバッチリです。

今回はここまで!

これでとにかくサーマルプリンタから文字を印刷することができました。 この後の作業は、ただいま現在進行形で進めているところです。 またキリのいいところでまとめて記事にしたいと思います。

それではまた!