読者です 読者をやめる 読者になる 読者になる

#5 新しい日報システムを考えた話

AdventCalendar2014

はじめに

皆様どうも。普段クライアントワークでアプリ開発をしている@ryusukefudaことデニールです。

突然ですが、日報書いてますか?毎日書くのは結構大変ですよね...

ということでアドベントカレンダー5日目は新しい日報を考えて実装した話です。

やりたいこと

日報の趣旨はいろいろありますが、"何をしてたか""心身共に元気か" が見る人に分かればいいんじゃないでしょうか。

ということでこの2点に絞りました。

ちょっと考えた結果、

何をしてたか → 定期的にPCのスクリーンショットを撮る

心身共に元気か → 定期的にPCのウェブカメラで顔を撮る

となりました。(仕事仲間なら顔をみれば何でも分かるはずです。)

つまり、1日に何回か画面のスクショとその時の顔を取ってそれを日報として見てもらえば"何をしてたか"と"心身共に元気か" が分かるというものです!

実装

Macのウェブカメラをコマンドから操作できるようにする

imagesnapを使用

$ brew install imagesnap

これでコマンドからMacのウェブカメラで写真が取れるようになります。

$ imagesnap ~/Desktop/$(date +%y%m%d%H%M%S).png

-w 1.00 オプションでカメラを起動してから1.00秒後にシャッターが押されます。

その他 連写ができたり、別のつながっているカメラデバイスで撮れたりもします。

コマンドからスクリーンショットを撮る

Macにはもともとスクリーンショットを撮るコマンドが用意されているのでそれを使用します。

 /usr/sbin/screencapture -m -C -T0 -x ~/Desktop/$(date +%y%m%d%H%M%S).png 

スクリーンショットと顔の写真を同時に撮るスクリプトを用意

#!/bin/sh
DIR=`date +%Y%m%d`
SCREENIMAGE=`date +%Y%m%d%H%M`_screen.png
FACEIMAGE=`date +%Y%m%d%H%M`_face.png

#Make directory
if [ ! -d ${DIR} ] ; then
    mkdir $DIR
fi
 
#Take screenshot
/usr/sbin/screencapture -m -C -T0 -x ./${DIR}/$SCREENIMAGE
#Take face photo
/usr/local/bin/imagesnap -w 2.00 ./${DIR}/$FACEIMAGE

実行してみましょう。

$ sh dailyScript.sh

日付のディレクトリの中にスクリーンショットと顔の写真が保存されています。

Cronに設定

後はこのシェルスクリプトをMacのcronに設定して毎日好きな時間に呼び出すと日報の完成です。

私はこの画像を自動でサーバーにあげ、ウェブからアクセスできるようにしたりしていました。

自分が真剣にコーディングしている顔が見れたり、Stack Overflowばかりの画面が続いていたりと面白い発見があるので、是非試してみてください。

最後に

カヤックには毎月個人が制作した凄いものや変なもの、凄い変なものを発表する場があり、その中の作品が見れるサイトもあるので是非見てみてください!

面白法人カヤックのつくってみたラボ

明日は天才のびー @fnobi が素晴らしい記事を書いてくれます。