JUST.SFA オリジナルAPの開発

こんにちは

JUST.SFA で案件管理やコスト管理を行うようになり、従業員の作業実績も管理できれば KPI分析や案件ごとのコストを把握するのに役立ちます。
ただ、すべての従業員に JUST.SFA へログインして実績を入力してもらったり、エクセルで実績を作成してアップロードしたりなどは手間がかかります。
なるべく簡単入力&すぐにデータ化 を実現する Webアプリを開発しましたのでご紹介します。

作業実績入力Webアプリ概要

作業実績を入力するための画面は Webで用意しました。そのため Webアプリを別のサーバーで稼働しています。
サーバー内にデータベースを配置して、案件マスタ、従業員毎の利用案件、作業時間と作業内容の登録を行います。
案件マスタは JUST.SFA と連動しています。JUST.SFA で案件マスタが更新されると WebHook で更新内容が Webアプリ側に送られて反映する仕組みです。
登録された作業実績は WebAPI で JUST.SFA の作業実績テーブルに登録されます。登録時にレスポンスで返されるレコードIDを Webアプリ側のデータベースに保存して、実績の削除に利用します。
従業員に支給している iPhoneでの入力を想定して画面と操作方法をデザインしています。

用意したもの

  • Webアプリ
    Webアプリは PHPで開発しました。カレンダーの表示は JQuery、リロードをなるべく排除してデータの取得も送信も Ajaxを使用します。カレンダーで日付をタップする度にリロードするようなことはなく、スムーズに動作します。
    カレンダー形式で日付を選択し、案件、タスク、作業時間を選択式で入力します。従業員の負担にならないように操作はタップのみに絞っています。
    画面をスクロールするのも手間なので、登録するための入力項目はトグル式に開閉して、閉じた状態だとカレンダーと実績の一覧のみ表示するようになります。(下図)
    時間が入力されるとカレンダーに色を付けて未入力がすぐにわかるようにしました。1日の作業時間が規定に満たない場合は赤く表示しています。

    ログインは Googleアカウントによる OAuth2認証で実現していますので、ユーザー管理やログイン画面の作成は必要ありません。
    案件は数が多いため、すべてを選択対象にするのは無理があります。ですので、自分の担当の案件をユーザーが選択する画面を用意しています。
    作業実績を登録するときには自分の案件のみ選択肢に表示されます。

    レスポンシブに作成したので PCのブラウザでみてもそれなりに表示されます。
  • WebHook の受付
    JUST.SFA で案件が更新されたときにデータを受け付ける窓口を作成しています。
    JSON形式で送られてきたデータを 更新内容(登録・更新・削除)にあわせてローカルのデータベースに反映します。
    ちなみに JUST.SFA の WebHook更新内容は JSON内の”type”プロパティを調べることでわかります。
    (登録:ADD_RECORD、更新:UPDATE_RECORD、削除:DELETE_RECORD になっているようです。)
  • Googleアカウント
    従業員は全員会社のGoogleアカウントを付与しています。
    Google Cloud Platform の APIとサービス で サービスアカウントの登録や OAuth同意画面の設定を行いました。
    Webアプリ側では Google APIs Client Library for PHP を使って認証を行っています。

運用にあたって

いままではエクセルで勤怠を作成していたこともありましたがリアルタイムの数字が見えない、集計に手間がかかるためKPIとして活用しにくかったと思います。
アプリで入力するにしても文言を備考欄に入力するようなことはせず、従業員の負担にならないようシンプルにして社内全員に利用をお願いしました。ITの導入で手間が増えるのは絶対に避けるべきだと思っているからです。
社内で運用を開始してから、いくつか要望がありましたが 今のところ順調に利用していただいています。
考えておくべきこととして、JUST.SFA の WebAPIには1日あたりのリクエスト上限があることです。利用ユーザーがあまり多いとすぐに上限がきてしまうでしょう。その場合の対応は むずかしいですが WebAPI を コマンドラインツールに置き換えるくらいでしょうか。