RaspberryPiを使って事業部のリアルカンバンを毎日撮る作業を自動化した話

futabooo
futabooo
Dec 24, 2018 · 10 min read

なぜリアルカンバンの状況を写真に撮ってSlackに投稿する作業が必要だったのか

エウレカでは今年の4月からPairs日本版の着手中なプロダクトバックログアイテムの管理にリアルカンバンを使うようになっています。リアルカンバンについてはこれまでの記事も参考にしてください。

繰り返しやる作業を自動化する

やってる作業は単純だし脳みそを使うわけでもないので手動で毎朝やっててもなにか問題があるわけではなかったのですが、やはりめんどくさい気持ちがあったので自動化しました。


写真を撮る

Raspberry Pi 3のModel Bを使い、Amazonで買った専用のカメラモジュールをつけています。

$ sudo raspi-config
$ raspistill -o image.jpg

Slackに投稿する

SlackのAPIでfiles.uploadを使用して特定のチャンネルに画像を投稿します。

$ curl -F file=@image.png -F "initial_comment=Raspberry Piで撮ったよ" -F channels=[your channel ids] -H "Authorization: Bearer [your access token]" https://slack.com/api/files.upload

写真を撮ってSlackに投稿するのを定期的に実行する

cronを使います。 設定はこちらの記事を参考におこないました。

$ crontab -l
05 02 * * 1-5 sudo sh /home/pi/image-upload.sh
#!/bin/bashcd /home/pi
DATE=$(date +“%Y-%m-%d-%H%M”)
raspistill -q 100 -h 1200 -o /home/pi/$DATE.jpg
curl -F file=@$DATE.jpg -F “initial_comment=${DATE}” -F channels=[your channel ids] -H "Authorization: Bearer [your access token]" https://slack.com/api/files.upload
rm /home/pi/$DATE.jpg

今後の課題

自動化したもののいくつか課題があります。

  • カメラの位置が悪いことでまれに撮影に失敗する

カメラの画質が低いことで付箋の内容までは把握できない

Raspberry Piにつけているカメラモジュールは2592x1944なので、遠くから撮影した場合に付箋の文字が認識できるほど細かくは撮影できません。 カメラをもっと高画質なものに変更することでこの問題は比較的簡単に解決ができそうです。

カメラの位置が悪いことでまれに撮影に失敗する

リアルカンバンとRaspberry Piのカメラとの間に物理的に距離があります。タイミングによってリアルカンバンの前に人が立っていたりすると見事に写り込んでしまいます。

機能追加

現在はSlackへの投稿をRaspberry Piから直接行っていますが、前日の画像との差分画像を出力させたり、上記課題の2点目である映り込みを検知させたりする処理を行うサーバーを用意し、事前処理を行った上でSlackに投稿するように変更中です。Raspberry Pi内で実行しても良かったのですが、画像処理は潤沢なリソースがあるサーバーでやらせるほうがいいと思い別で用意しています。

おわりに

Slackへの画像投稿を自動化した話をしました。最後の機能追加の部分では試しにGKEを動かしっぱなしにしてみたところ1100円/Dayかかったので構成を考え直したい気持ちでいっぱいです。ただ画像をSlackに投げたいだけなのに明らかなオーバースペックです。

Eureka Engineering

Learn about Eureka’s engineering efforts, product developments and more.

    futabooo

    Written by

    futabooo

    Senior Engineer & ScrumMaster at eureka,Inc. CouplesのAndroid版開発に従事したのち、現在はPairsのAndroid版とサーバーサイドの開発をしながらスクラムマスターとしてチームの支援をしています。

    Eureka Engineering

    Learn about Eureka’s engineering efforts, product developments and more.