概要
突然ですが、todo.txtって使ってますか?
todo.txtとは、ある特定のフォーマットに則ってTODOを記述して、タスクを管理する手法です。
例えば、以下のようなイメージです。
↓
ベッドから起きる done
歯磨きする done
朝ごはんを食べる
今回は各TODOに対して、完了したら「done」をつけるだけでしたが、期限をつける等もありですね!
(色々なフォーマットがあるので、調べてみてください)
「わざわざこれ作ってなんの意味があるの?」って思われる方もいるかと思います。
ただ、これって単純に文章を書いているだけなので、iPhoneのメモアプリでもいいですし、VSCodeで記述してもいいですし、とどのつまり環境に左右されないのです!
これがtodo.txtの強みなのです!!
とても軽量ですしね!
というわけで、本記事では todo.txt に基づく、github CLI で動く TODO 管理システムを構築しました。
基本的には todo.txt に TODO が追加されていき、完了した TODO は done.txt に蓄積されます。
github CLI で動く TODO 管理システムを記載したリポジトリです!!
↓
https://github.com/rtkjm22/CUI_TODO_SYSTEM
動作イメージ
導入方法
1. リポジトリを作成
お使いの github アカウントから、リポジトリを作成します。
ローカルマシンにも作成したリポジトリ用のディレクトリを作成しておいてください。
TODO を外部から参照してほしくない場合はプライベートにしましょう!
2. todo.txt の追加
todo.txt をルートディレクトリに追加します。
現在進行中の TODO はこちらに蓄積されるようになります。
touch todo.txt
3. done.txt の追加
done.txt をルートディレクトリに追加します。
完了した TODO はこちらに蓄積されるようになります。
touch done.txt
4. .gitconfig に定数追加
ルートディレクトリにいる状態で、pwdコマンドを実行してください。
pwd
以下コマンドを実行して、~/.gitconfig に定数を追加していきます。
後ほど TODO 関連のコマンドを追加するときに、定数を参照します。
Windows の方は別途対象となるファイルを確認してください。。
git config --global todo.repoPath <pwdで出力された文字列>
git config --global todo.todoFile "tasks.txt"
git config --global todo.doneFile "done.txt"
.gitconfig に以下内容が追記されていれば OK です!
[todo]
repoPath = /path/to/repository/root
todoFile = todo.txt
doneFile = done.txt
5. .gitconfig にエイリアス追加
vi でも vim でも VSCode でも良いので、お使いのテキストエディタで.gitconfig にエイリアスを追加します。
なお、git-config.txt の内容をそのまま.gitconfig に追記するだけで OK です。
エイリアスとは、ショートカットみたいなものです。checkoutをcoと登録しておけば、git coで実行できるみたいなイメージです。
6.完了!!!
お疲れ様でした!
コマンド一覧
TODO の一覧
git todo list (または git todo)
上記コマンドを実行することで確認できます。
1. (A) テストA +AnyProject @home due:10/10
2. (B) テストB +SomeProject @company due:11/11
なお、現在進行中の TODO が存在しない場合は以下のように出力されます。
(no TODOs)
TODO の新規追加
git todo add
上記コマンドを実行することで、質問形式で TODO の属性を入力することができます。
タスク内容: テストA
優先度 (A/B/C, 空可): A
プロジェクト (+Project, 空可): AnyProject
コンテキスト (@context, 空可): home
期限 (MMDD, 空可): 10/10
TODO の完了
git todo done <todo_id>
上記コマンドを実行することで、特定の TODO を完了にします。
完了になった TODO は、done.txt に自動で追記されます。
todo_idはgit todo listで確認できます。
以下テスト B を完了したい場合は、git todo done 2と入力すれば OK です。
↓
1. (A) テストA +AnyProject @home due:10/10
2. (B) テストB +SomeProject @company due:11/11
すべての TODO を完了にする(git todo done -all)
git todo done --all
上記コマンドを実行することで、すべての TODO を完了にします。
以下確認が入るので、yを入力したときにすべての TODO が完了になります。
通常のdoneと同様に、完了になった TODO は done.txt に自動で追記されます。
本当に全 2 件を done にしますか? (y/N): y
すべての TODO を完了にする(git todo delete)
git todo delete
こちらはgit todo done --allのエイリアスです。
同じ動作をします。
TODO の物理削除
git todo delete --hard
上記コマンドを実行することで、現在進行中のすべての TODO を物理的に削除します。
以下確認が入るので、yを入力したときにすべての TODO が物理削除されます。
通常のdoneは異なり、物理削除になった TODO は done.txt に追記されず、完全に削除されます。
本当に全 2 件を物理削除しますか?(y/N): y
やってみて
git コマンドを拡張するのは、これまで push を ps というエイリアスに置き換える程度しかやったことがなかったので、とても新鮮で楽しかったです。
また、todo.txt プロジェクトを知ったときは「えっ、これで十分じゃん!」と衝撃を受けました。
確かに .txt ファイルならバージョンを気にする必要もなく、長期的な運用に大きなアドバンテージがあるのだと実感しました。
私は普段、日々のタスク整理にメモアプリを使っていましたが、ターミナル上で確認できなかったり、少し不便さを感じることもありました。
その点、この仕組みなら git 管理で履歴を追える うえに、ターミナルからいつでも確認できる。
まさに自分の運用スタイルにピッタリだと思っています。
(ないと思いますが、何かしらの原因でgitが使えなくなった場合もそのままtxtファイルを使い続ければいいですしね!)
ここまで読んでくださって、本当にありがとうございます!
少しでも参考になったり「面白そう!」と思っていただけたら嬉しいです。
これからも楽しく工夫しながら取り組んでいきたいと思いますので、どうぞよろしくお願いします!
最後に
あらためて、最後まで読んでくださりありがとうございます。
もし記事が参考になったら、「いいね」と「ストック」をしてもらえるとすごく励みになります!
また、内容に誤りや気になる点があれば、遠慮なくご指摘していただけると嬉しいです!
他にもいろいろな記事を投稿しているので、もしよかったら見てみてください!
ではでは!
参考
記事を執筆するにあたって、以下の資料を参考にさせていただきました。
先人たちの知見に感謝です!
