派遣業など、従業員の勤務時間に応じて料金を請求する場合や、時給で人を雇っている場合には「その人がどの作業に何時間使ったのか」を適切に記録する必要があります。「Kimai」はそうした記録を簡単に行えてグラフで視覚化してくれたりCSVやExcel形式でエクスポートしてくれたりするオープンソースなタイムトラッカーとのことなので、実際に使い勝手を試してみました。

Kimai - time-tracker

https://github.com/kimai/kimai

Kimaiのセットアップ方法はComposerを利用するものとDockerを利用するものがありますが、今回はDockerを利用するため、下記のリンクから自分の環境に合った方法でDockerをインストールします。

Install Docker Engine | Docker Documentation

https://docs.docker.com/engine/install/

今回はDebianを利用するため、下記のコマンドを入力しました。

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

まずはデータベースを下記のコードで起動します。

docker run --rm --name kimai-mysql-testing \
-e MYSQL_DATABASE=kimai \
-e MYSQL_USER=kimai \
-e MYSQL_PASSWORD=kimai \
-e MYSQL_ROOT_PASSWORD=kimai \
-p 3399:3306 -d mysql

その後、下記のコードでKimai本体を起動。

docker run --rm --name kimai-test \
-ti \
-p 80:8001 \
-e DATABASE_URL=mysql://kimai:kimai@${HOSTNAME}:3399/kimai \
kimai/kimai2:apache

起動時、自動でアップデートチェックが始まるのでしばらく待機します。



続いて新たにターミナルを立ち上げ、下記のコマンドで管理ユーザーを追加します。ドキュメントでは「kimai:create-user」を利用するように指示されていましたが、記事作成時は「kimai:create-user」を利用すると「The command "kimai:reset:locales" does not exist.」というエラーが出て進めませんでした。なお、下記コードの「admin」部分がIDで「admin@example.com」部分がメールアドレスとして設定されるので、必要に応じて変更してください。

docker exec -ti kimai-test \
/opt/kimai/bin/console kimai:user:create admin admin@example.com ROLE_SUPER_ADMIN

上記のコマンドを入力するとパスワードを聞かれるので入力します。8文字以上でないとエラーになる点に注意が必要です。



サーバーにアクセスし、先ほど設定したユーザー名とパスワードを入力して「ログインする」をクリック。



初期設定が始まります。「Next」をクリック。



言語・タイムゾーン・テーマを設定して「Next」をクリックします。



初期設定が完了しました。「Next」をクリック。



「タイムシート」と書かれた画面に移動します。もちろんまだ何も表示されません。



まずは「管理」の「得意先」ページから「新規作成」をクリックします。



名前・説明・国・通貨・タイムゾーンなどを設定して下にスクロール。



最下部にある「保存する」ボタンをクリックします。



続いて「プロジェクト」ページに移動し、「新規作成」をクリックします。



プロジェクト名と、このプロジェクトに紐付ける得意先を選択。



最下部までスクロールして「保存する」をクリックします。



今度は「アクティビティ」ページを開き、「新規作成」をクリック。



名前・色・プロジェクトを入力して下にスクロールします。



「保存する」をクリック。



同様の手順でいくつかアクティビティを設定しました。アクティビティが設定できたので、右上の再生マークのボタンをクリックしてみます。



プロジェクトとアクティビティを選択し、「保存する」をクリック。



すると計測が始まりました。停止ボタンを押すと勤務時間が記録されます。



リアルタイムで記録する方法のほか、後から入力する方法も存在しています。「タイムトラッキング」の「タイムシート」をクリックし、「新規作成」をクリック。



期間・プロジェクト・アクティビティを設定して「保存する」をクリックします。



同様の手順で1週間分の記録を入力してみました。



一度記録したアクティビティは、右上の回転矢印マークのボタンから簡単に入力できるようになります。回転矢印マークをクリック。



最近行ったアクティビティが表示されるので、クリックすれば再生マークのボタンを押したときと同様にリアルタイムの計測が始まるというわけ。



「Weekly hours」ページでは1週間でどのアクティビティにどれくらいの時間を使ったのかを確認できます。



「カレンダー」ページでは記録されているアクティビティをカレンダー形式で表示可能。



「エクスポート」ページではデータを出力可能です。期間・得意先・プロジェクトを選択し、「検索」をクリック。



検索結果を「CSV」「Excel」「PDF」で保存できます。また、保存せずに「エクスポート済み」状態にするボタンが右側に存在していました。



CSV形式で出力してみるとこんな感じ。



しかし、PDF形式で出力してみると日本語の部分が文字化けしてしまいました。



「ダッシュボード」ページではこの1週間でどんなアクティビティに時間を費やしたのかを一目で確認できます。



また、「Reporting」ページではさまざまなデータを見やすく整えてくれる機能がそろっています。「Weekly view for one user」をクリックしてみます。



すると下図のように、1人のユーザーの活動状況が一目で分かる表が表示されました。



「Weekly view for all users」を表示してみると下図の通り。日ごとの合計勤務時間のみが表示されることで複数人の状況をさっと確認可能です。



活動時間以外にも、収入単位で表示することも可能です。選択してみましたが、まだ収入を何も設定していないので全て0と表示されています。



収入は「得意先」「プロジェクト」「アクティビティ」のいずれかで設定すればOK。今回は「得意先」で設定するので、得意先のページから先ほど作成した得意先をクリックします。



設定の中にある「料金」のプラスマークをクリック。



設定対象のユーザーと時給の金額を入力して「保存する」をクリックします。「得意先」で設定すればその得意先に紐付いているプロジェクトおよびアクティビティ全てに同じ設定が適用されますが、その中でも特定のプロジェクトやアクティビティだけ設定を変えたい場合はプロジェクトやアクティビティのページで設定すればOK。アクティビティ>プロジェクト>得意先の優先順位で給与が適用されます。



この給与は設定後、新たに記録を作成した分だけに適用されます。



請求書を作成する機能を試してみます。まず「請求書」タブの「請求書のテンプレート」をクリックし、名前・タイトル・会社名を入力。



下にスクロールして「保存する」をクリックします。



「Create invoice」ページで請求に含める期間・得意先・プロジェクトを選択し、「検索」をクリック。



「Preview」をクリックして確認してみます。



すると日本語をPDFに入力する場合にはやはり文字化けしてしまうようでした。