シンプルな時間記録アプリ gtimelogを使ってみる

はじめに

作業時間の記録は生産性向上に欠かせないが、複雑なツールは継続が難しい。
gtimelogは、シンプルで直感的なインターフェースを持つ時間記録アプリケーションのようだ。

GNOMEデスクトップ向けに設計されているが、他の環境でも動作し、最小限の操作で日々の作業時間を記録できる。 少し使って試してみる。

環境

Ubuntu 24.04 LTS
gtimelog 0.12.1

gtimelogの特徴

以下が特徴のようだ。

  • テキスト入力のみで時間記録
  • 自動的な時間計算
  • 直感的なユーザーインターフェース

表示形式

  • Chronological: 時系列表示
  • Grouped: 同一タスクをグループ化
  • Summary: カテゴリ別要約

レポート機能

  • 日次・週次・月次レポート
  • メール送信機能
  • プレーンテキスト形式での出力

インストール

Ubuntu/Debian

sudo apt update
sudo apt install gtimelog
ログ
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  crack-common gyp libcares2 libgl1-amber-dri libglapi-mesa libjs-async libjs-events libjs-inherits
  libjs-is-typedarray libjs-prettify libjs-regenerate libjs-source-map libjs-sprintf-js
  libjs-typedarray-to-buffer libllvm17t64 liblttng-ust-common1t64 liblttng-ust-ctl5t64 liblttng-ust1t64
  libnotify-bin libqt5x11extras5 libre2-10 libssl-dev libuv1-dev libxcb-damage0 mesa-utils-bin node-abbrev
  node-ampproject-remapping node-ansi-regex node-ansi-styles node-aproba node-are-we-there-yet node-arrify
  node-async node-async-each node-auto-bind node-babel-plugin-add-module-exports node-babel7-runtime
  node-balanced-match node-base64-js node-binary-extensions node-brace-expansion node-busboy
  node-camelcase node-caniuse-lite node-chownr node-chrome-trace-event node-ci-info node-cjs-module-lexer
  node-cli-boxes node-cli-cursor node-clone node-collection-visit node-color-convert node-color-name
  node-colors node-commander node-commondir node-concat-stream node-console-control-strings
  node-convert-source-map node-core-js node-core-js-pure node-core-util-is node-data-uri-to-buffer
  node-decompress-response node-deep-is node-defaults node-define-property node-delegates node-depd
  node-diff node-electron-to-chromium node-encoding node-end-of-stream node-err-code node-error-ex
  node-es-module-lexer node-escape-string-regexp node-eslint-utils node-eslint-visitor-keys node-esquery
  node-estraverse node-esutils node-events node-fancy-log node-fast-deep-equal node-fast-levenshtein
  node-fetch node-find-up node-flatted node-foreground-child node-fs-readdir-recursive
  node-fs-write-stream-atomic node-fs.realpath node-function-bind node-get-caller-file node-get-stream
  node-get-value node-glob node-globals node-got node-graceful-fs node-growl node-has-flag
  node-has-unicode node-has-value node-has-values node-hosted-git-info node-iconv-lite node-ieee754
  node-iferr node-imurmurhash node-indent-string node-inflight node-inherits node-ini node-interpret
  node-ip node-ip-regex node-is-arrayish node-is-binary-path node-is-buffer node-is-descriptor
  node-is-extglob node-is-path-cwd node-is-plain-obj node-is-plain-object node-is-stream
  node-is-typedarray node-is-windows node-isarray node-isexe node-isobject node-js-tokens node-json-buffer
  node-json-parse-better-errors node-json-schema node-json-schema-traverse node-json-stable-stringify
  node-jsonify node-jsonparse node-kind-of node-levn node-loader-runner node-locate-path
  node-lodash-packages node-lowercase-keys node-lru-cache node-map-visit node-memfs node-merge-stream
  node-mimic-response node-minimatch node-minimist node-minipass node-mute-stream node-n3 node-negotiator
  node-npm-run-path node-object-inspect node-object-visit node-once node-optimist node-optionator
  node-osenv node-p-cancelable node-p-limit node-p-locate node-p-map node-pascalcase node-path-dirname
  node-path-exists node-path-is-absolute node-path-is-inside node-path-type node-pify node-pkg-dir
  node-postcss-value-parser node-prelude-ls node-process-nextick-args node-promise-inflight
  node-promise-retry node-promzard node-prr node-pump node-punycode node-quick-lru node-randombytes
  node-read node-readable-stream node-rechoir node-regenerator-runtime node-regenerator-transform
  node-regexpp node-regjsgen node-repeat-string node-require-directory node-require-from-string
  node-resolve node-resolve-cwd node-resolve-from node-restore-cursor node-resumer node-retry
  node-run-queue node-safe-buffer node-serialize-javascript node-set-blocking node-set-immediate-shim
  node-shebang-command node-shebang-regex node-shell-quote node-signal-exit node-slash node-slice-ansi
  node-source-list-map node-source-map node-spdx-correct node-spdx-exceptions node-spdx-expression-parse
  node-spdx-license-ids node-sprintf-js node-ssri node-stack-utils node-string-decoder node-strip-bom
  node-supports-color node-tapable node-terser node-text-table node-through node-time-stamp
  node-to-fast-properties node-tslib node-type-check node-typedarray node-typedarray-to-buffer node-undici
  node-unicode-canonical-property-names-ecmascript node-unicode-match-property-value-ecmascript
  node-unicode-property-aliases-ecmascript node-unset-value node-uri-js node-util-deprecate node-uuid
  node-v8flags node-validate-npm-package-license node-wcwidth.js node-webpack-sources node-wordwrap
  node-wrappy node-write-file-atomic node-xtend node-y18n node-yallist node-yaml nodejs-doc xbitmaps
Use 'sudo apt autoremove' to remove them.
Suggested packages:
  vim-gnome
The following NEW packages will be installed:
  gtimelog
0 upgraded, 1 newly installed, 0 to remove and 48 not upgraded.
Need to get 215 kB of archives.
After this operation, 545 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu noble/universe amd64 gtimelog all 0.12.0-1 [215 kB]
Fetched 215 kB in 2s (130 kB/s)
Selecting previously unselected package gtimelog.
(Reading database ... 116736 files and directories currently installed.)
Preparing to unpack .../gtimelog_0.12.0-1_all.deb ...
Unpacking gtimelog (0.12.0-1) ...
Setting up gtimelog (0.12.0-1) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for gnome-menus (3.36.0-1.1ubuntu3) ...
Processing triggers for man-db (2.12.0-4build2) ...
Processing triggers for libglib2.0-0t64:amd64 (2.80.0-6ubuntu3.4) ...
Processing triggers for desktop-file-utils (0.27-2build1) ...

基本的な使い方

アプリケーションの起動

gtimelog

起動すると、シンプルなウィンドウが表示される。

01

時間記録をしてみる

  1. 作業開始時: 「arrived」と入力してEnter
  2. タスク開始時: タスク名を入力してEnter
  3. タスク終了時: 次のタスク名または「lunch」「break」を入力

記録例

タスクの開始、終了を記録するにはよさそう。

09:00 arrived
09:15 reading email
10:30 project A: bug fixes
12:00 lunch
13:00 project A: testing
15:30 meeting: weekly standup
17:00 project B: new feature
18:00 left

便利な機能

履歴とオートコンプリート

  • 過去のタスク名が自動補完される
  • 上下キーで履歴を参照可能

作業時間の確認

ウィンドウ下部に以下が表示される

  • 今日の作業時間
  • 目標時間との差分
  • 現在のタスクの継続時間

レポート生成

日次レポート

実際にこれを日報としては使えるかどうかということだけど、これをAIに渡して日報にすることはできそう。

  1. メニューから「Report…」を選択
  2. 日付と期間を選択
  3. プレビューで内容確認
  4. 必要に応じてメール送信

レポート形式

2025-09-20

project A: bug fixes         1.25 h
project A: testing          2.50 h
meeting: weekly standup      0.50 h
admin: time tracking        0.25 h

Total work done: 4.50 h

設定とカスタマイズ

設定ファイル

# 設定ファイルの場所
~/.config/gtimelog/gtimelogrc

# データファイルの場所
~/.local/share/gtimelog/timelog.txt

主な設定項目

  • 1日の目標作業時間
  • オフィス時間
  • 仮想的な日付変更時刻
  • レポートスタイル

参考

おわりに

gtimelogは複雑な機能を持たない分、継続して使いやすい時間記録ツールとなっていた。
実際に、業務でも作業時間を管理する必要があったりするので、これくらいシンプルのほうが書きやすそう。 他のツールも探しながら使うかどうかは検討しようと思う。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。