はじめまして、4月に入社しました永江です。
今回は、私が新人研修で開発した勤怠管理アプリ「Hello Goodbye」を紹介します。
はじめてのScala
新人研修で使うプログラミング言語はScala縛りだったので、Hello GoodbyeはScalaとPlay Frameworkで動いています。
それまではScalaを使ったことがなかったので本当に完成するか心配だったのですが、アドバイスを貰いながらですが2ヶ月でなんとか動くものが出来ました。
画像はHello Goodbyeのトップページ。メンバーの出退勤の確認とメッセージを見ることができます。
Hello Goodbyeのしくみ
Hello GoodbyeはTypetalkのWebhook機能を利用しています。
利用者が出社時に”Hello”、退社時に”Bye”とTypetalkのボットに対してメンションを投げるとTypetalkは予め設定しているWebhook URLにそのメンション情報を送信してくれます。
Hello Goodbyeはそのメンション情報を取得した後メッセージを解析し、勤怠情報を保存します。そして最後にメンションに対する返信を生成しTypetalkに送信しています。
(参考: Typetalk 上にボットをより簡単に作成でき、Webhookも使えるようになりました)
Hello Goodbyeを作ってみて
今まではWebアプリケーション開発はPHPかJava(それと、ちょっとだけRuby)しか使ったことがなく、フレームワークもあまり経験がなかったので最初はわからないことばかりでしたが、Hello Goodbyeが完成する頃にはScala・Play Framework・その他開発ツールなど、だいたい使えるようになりました。
また、設計からテストまでの一連の流れを実践的に勉強できたので、とても良い経験になりました。
非接触型ICカードでHello Goodbye
こんにちは中原です。
ここからはSuicaやEdyなどの非接触型ICカードでHello Goodbyeを利用するシステムを紹介します。私の場合は新人研修でもなく、仕事の合間に勝手に作っただけなのでプログラミング言語の縛りなどは全くありません :p
すでに上で説明されている通り、出社時には”Hello”を退社時には”Bye”をTypetalkにポストする必要があります。ただポストするためにパソコンを起動したりスマートフォンからアプリを開いたりするのが面倒な時があります。 このシステムを使えばカードをかざすだけで自分の代わりに”Hello”、”Bye”のメッセージをTypetalkにポストしてくれます。カードには普段自分が利用しているSuicaやEdyを利用します。
カードリーダー側の処理
カードリーダを繋いだRaspberry Pi側はnfcpyを利用してカードID(クリティカルな用途で無いのでなのでIDmを利用)を読みます。 読み込んだカードIDを管理サーバへ送信すると、どの音声ファイルを再生するかの情報が返ってくるのでその音声を再生します。
カードのIDmの取得する処理はnfcpyのexampleにあるので、皆さんが思っているほど難しいプログラムを書く必要はありません。
カード管理サーバの処理
カードID、TypetalkのAPIトークンを管理しています。カードリーダが送信したカードIDに対応するTypetalkのAPIトークンで”Hello”,”Bye”をポストします。未登録のカードIDが来た場合はカード登録用のコードを返してリーダ側でコードを音声でユーザに伝えます。 またカードの管理画面があって、OAuth2を利用してTypetalkのAPIトークンの取得・登録をしたり、カードの追加・削除ができます。
これで帰るときにパソコンを閉じた後に、「あっ!bye してない!」とスマホを出す手間が省けました 😀
先日(2015年7月30日)に、Typetalkはデスクトップアプリケーションもリリースしていますので、そちらもお試しください。