3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

gitコマンドでTODOアプリつくってみた

3
Last updated at Posted at 2025-12-18

概要

突然ですが、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

動作イメージ

CleanShot 2025-12-18 at 02.44.02.gif

導入方法

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 です。

エイリアスとは、ショートカットみたいなものです。checkoutcoと登録しておけば、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_idgit 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 コマンドを拡張するのは、これまで pushps というエイリアスに置き換える程度しかやったことがなかったので、とても新鮮で楽しかったです。

また、todo.txt プロジェクトを知ったときは「えっ、これで十分じゃん!」と衝撃を受けました。
確かに .txt ファイルならバージョンを気にする必要もなく、長期的な運用に大きなアドバンテージがあるのだと実感しました。

私は普段、日々のタスク整理にメモアプリを使っていましたが、ターミナル上で確認できなかったり、少し不便さを感じることもありました。
その点、この仕組みなら git 管理で履歴を追える うえに、ターミナルからいつでも確認できる
まさに自分の運用スタイルにピッタリだと思っています。
(ないと思いますが、何かしらの原因でgitが使えなくなった場合もそのままtxtファイルを使い続ければいいですしね!)

ここまで読んでくださって、本当にありがとうございます!
少しでも参考になったり「面白そう!」と思っていただけたら嬉しいです。
これからも楽しく工夫しながら取り組んでいきたいと思いますので、どうぞよろしくお願いします!

最後に

あらためて、最後まで読んでくださりありがとうございます。

もし記事が参考になったら、「いいね」と「ストック」をしてもらえるとすごく励みになります!
また、内容に誤りや気になる点があれば、遠慮なくご指摘していただけると嬉しいです!
他にもいろいろな記事を投稿しているので、もしよかったら見てみてください!

ではでは!

参考

記事を執筆するにあたって、以下の資料を参考にさせていただきました。
先人たちの知見に感謝です!

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?