丘と水路と橋と火を

言葉と技術

タスクごとに作業時間を記録するCLIツール「dakoku」をGolangでつくった。

つくったもの

github.com

DEMO

Demo

何ができるのか

ターミナル上で、タスクの登録と、それぞれのタスクごとの作業時間の記録をつけられます。
名前の由来は「打刻」。

どうしてつくったのか

「Goの勉強がてら、何か自分の役に立つものを作れないかなあ」と考えたのがきっかけ。
日頃ターミナルの黒い画面を見つつ作業することが多いのですが、その時に「ターミナルから離れずにタスク管理が行えたらな」というのが最初のモチベーションでした。
また最近は「より効率的な時間の使い方を身につけていかなければならない」と感じることが増え、タスクごとに時間を計測できるようなツールがあればタイムマネジメントの役にも立てられるのではないか、という考えもありました。

ToDo系のCLIツールはちょくちょく見るのですが、作業時間の計測まで行ってくれるものはあまりなかった印象があるため、今後役に立ってくれそうで個人的には満足。
今後自分自身で使いながら、少しずつブラッシュアップしていく予定です。

どうやってつかうのか

冒頭に挙げたGitHubのREADMEに記載の通りですが、一応こちらにも利用方法を。

まず、Golangの環境が必要です。まだインストールされていない方は、以下からインストールします。

golang.org

もしかしたら、SQLite3の環境も必要かも。Windowsなら以下などが参考になります。
macOSHomebrewなどが入っているなら、brew install sqlite3などで問題ないはず。
(もしかしたらmacOSなら最初から入ってる……?)

www.dbonline.jp

上記が準備できたら、以下のコマンドでインストール。

go get -u github.com/ashnoa/dakoku

正常にインストールが完了したら、まずは以下のコマンドで初期化します。

dakoku init

初期化するとカレントディレクトリにdb.sqlというファイルが出来上がります。これに情報が保存されていきます。このファイルがある位置でdakokuは利用します。

新規タスクの登録は以下。空白が含まれる場合にはダブルクオートなどで囲ってください。

dakoku create タスクの題名

登録したタスクを確認するのは以下。showコマンドではいくつかオプションが利用できますが、デフォルトでは今日登録されたタスクを表示します。現状では、オプション指定で「N日前から今までのタスクの表示」「全期間のタスクの表示」などが利用可能です。

dakoku show

showで一番左側に表示されているのがタスクIDです。これを利用してタスクの開始・停止を行います。

# タスクの開始
dakoku start タスクID
# タスクの停止
dakoku stop タスクID

タスクの開始・停止に伴って、タスクごとの作業時間が記録されていきます。

つくったときにお世話になった方々

ライブラリ

記事

今回学んだこと

  • Golangでの基本的なコーディング
  • cobraを利用したCLIツールの実装およびテスト手法
  • go-sqlite3を利用したGoでのDB操作
  • auroraでのコマンドの出力のカラーリング方法
  • README駆動開発は良い
  • デモ用のGIFの作り方

今回は学んでいないこと

  • viperでの設定ファイルの読み込み
    • 設定をユーザーが色々切り替えられるようにしたらもっと便利そう。
  • goroutinechannelはまだ未知の領域
  • Webアプリケーションとか、gRPCを利用するマイクロサービスとか、そういう方向についても実装してみたい

感想

Golangをほとんど触った事がない状態から、本当に数日でこれくらいのツールができるというのは驚きでした。
今後もネタを見つけて役に立ちそうなものをつくっていきたいと思います。

これも持ってるんだけどほとんど読めてないから反省……。