つくったもの
DEMO
何ができるのか
ターミナル上で、タスクの登録と、それぞれのタスクごとの作業時間の記録をつけられます。
名前の由来は「打刻」。
どうしてつくったのか
「Goの勉強がてら、何か自分の役に立つものを作れないかなあ」と考えたのがきっかけ。
日頃ターミナルの黒い画面を見つつ作業することが多いのですが、その時に「ターミナルから離れずにタスク管理が行えたらな」というのが最初のモチベーションでした。
また最近は「より効率的な時間の使い方を身につけていかなければならない」と感じることが増え、タスクごとに時間を計測できるようなツールがあればタイムマネジメントの役にも立てられるのではないか、という考えもありました。
ToDo系のCLIツールはちょくちょく見るのですが、作業時間の計測まで行ってくれるものはあまりなかった印象があるため、今後役に立ってくれそうで個人的には満足。
今後自分自身で使いながら、少しずつブラッシュアップしていく予定です。
どうやってつかうのか
冒頭に挙げたGitHubのREADMEに記載の通りですが、一応こちらにも利用方法を。
まず、Golangの環境が必要です。まだインストールされていない方は、以下からインストールします。
もしかしたら、SQLite3の環境も必要かも。Windowsなら以下などが参考になります。
macOSでHomebrew
などが入っているなら、brew install sqlite3
などで問題ないはず。
(もしかしたらmacOSなら最初から入ってる……?)
上記が準備できたら、以下のコマンドでインストール。
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
タスクの開始・停止に伴って、タスクごとの作業時間が記録されていきます。
つくったときにお世話になった方々
ライブラリ
- GitHub - spf13/cobra: A Commander for modern Go CLI interactions
- CLIツールを作成する際の定番。さくさくコマンドが作れてたのしい。
- GitHub - mattn/go-sqlite3: sqlite3 driver for go using database/sql
- GoにおけるSQLite3ドライバ。
- GitHub - logrusorgru/aurora: Golang ultimate ANSI-colors that supports Printf/Sprintf methods
- コマンドの出力をカラフルにしてくれる。
記事
- Golangでどうでもいい知識を教えてくれるCLIツールを作った - 天色グラフィティ
- わかりやすい README 駆動開発 - Qiita
- README駆動開発に挑戦。ある程度の仕様を固めて作り始めることにもなるので、目標ややるべきことが明確になって良かったです。
- (Goに不慣れなのもあって、不完全だったけど)今回はテスト駆動開発も併用。組み合わせるとよりいい感じになりました。
- [Golang]cobraを使って本格的なCLIを作る - ken-aio's blog
cobra
の利用も初めてだったので、大変参考にさせていただきました。
- Golangのコマンドライブラリcobraを使って少しうまく実装する - Qiita
- 「
cobra
でデフォルトで生成されるコードをどうテストしたらいいんだ?」と思っていたら、どんぴしゃな記事があって本当に助かりました。
- 「
- Goのデータベース操作 - Qiita
- コードを見つつgo-sqlite3の利用方法を学習させてもらいました。
- GithubのReadmeに荒くないgifを作成から貼り付けまで - Qiita
- GitHubでツールなどをしっかり公開した事がこれまであまりなかったので、「デモのGIFをどう作るか?」みたいなコーディングとはまた違った部分でのノウハウをまとめてくださっている記事にはとても助けていただきました。
今回学んだこと
- Golangでの基本的なコーディング
cobra
を利用したCLIツールの実装およびテスト手法go-sqlite3
を利用したGoでのDB操作aurora
でのコマンドの出力のカラーリング方法- README駆動開発は良い
- デモ用のGIFの作り方
今回は学んでいないこと
viper
での設定ファイルの読み込み- 設定をユーザーが色々切り替えられるようにしたらもっと便利そう。
goroutine
とchannel
はまだ未知の領域- Webアプリケーションとか、gRPCを利用するマイクロサービスとか、そういう方向についても実装してみたい
感想
Golangをほとんど触った事がない状態から、本当に数日でこれくらいのツールができるというのは驚きでした。
今後もネタを見つけて役に立ちそうなものをつくっていきたいと思います。
Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る impress top gearシリーズ
- 作者:Sau Sheong Chang,武舎 広幸,阿部 和也,上西 昌弘
- 発売日: 2017/03/17
- メディア: Kindle版
これも持ってるんだけどほとんど読めてないから反省……。