📝

todo.txtで管理するタスク管理

に公開

TL;DR

プレーンテキスト1つでタスク管理を完結させる、todo.txt形式を試してみました。複雑なアプリに疲れた方におすすめです。

はじめに

タスク管理、どんなアプリで管理してますか?
世の中にはたくさんの選択肢があります。

  • Todoist、TickTick、Asanaなどの高機能アプリ
  • Notion、Obsidianなどのオールインワン系
  • Google Keep、Apple Remindersなどのシンプル系

どれも素晴らしいアプリだとは思うのですが、使ってるうちにこんな課題に直面しませんか?

  • アプリが重くなってきて動作が遅い
  • 月額課金が気になってくる
  • 機能が多すぎて設定に時間を取られる
  • データのエクスポートが面倒で乗り換えしづらい
  • 3日坊主をすると使い方を忘れる

個人的にはこれらの問題で何度もアプリを乗り換えてきたのですが、最近「todo.txt」という形式に出会って、これがかなり良い感じだったので紹介してみます。

todo.txtとは?

https://github.com/todotxt/todo.txt

todo.txtは、2006年にLifeHackerのGina Trapaniさんが考案したプレーンテキストベースのタスク管理形式です。Getting Things Done(GTD)の考え方をベースに設計されており、シンプルながら実用的な仕様が特徴です。

最大の魅力は、ただのテキストファイルなので以下の特徴があることです。

  • どんなエディタでも編集可能
  • OSに依存しない
  • 軽量で高速
  • データが消える心配がない
  • 無料で使える

todo.txtの設計思想

todo.txtは、Getting Things Done(GTD)の考え方に基づいて設計されています。

プロジェクト管理の考え方

大きなプロジェクトを前進させる唯一の方法は、それに関連する小さなサブタスクに取り組むことです。「ガレージの掃除」というプロジェクトでは、「ガレージを掃除する」ではなく「グッドウィルに寄付品の回収を依頼する電話をする」というような具体的な次のアクションを記述します。

コンテキスト別管理

GTDの著者David Allenが提唱する「コンテキスト」という概念も重要です。これは、タスクを実行する場所や状況で分類する考え方です。

  • @email: 送信すべきメッセージ
  • @phone: かけるべき電話
  • @home: 家でする作業

車の中で携帯電話を使える数分の時間があるとき、簡単に@phoneタスクをチェックして電話をかけることができます。

todo.txtの構成要素

上の図は、todo.txtファイル内の1行がどのような要素で構成されているかを示しています。

基本的な構造は次のようになっています。

  • 完了マーク(Completion)として小文字のxを行頭に記述
  • 優先度(Priority)で(A)から(Z)までの重要度を任意で設定
  • 完了日(Completion date)で2025-01-15のような日付を記録
  • 作成日(Creation date)で2025-01-10のような作成時の日付を記録
  • タスクの説明文(Description)に実際の作業内容を記述し、その中に以下を含めることができる
    • プロジェクト(Project)として+プロジェクト名で分類
    • コンテキスト(Context)として@場所で実行場所や状況を指定
    • キー・バリュー形式のタグ(Key-Value tags)でdue:2025-01-20のような拡張情報

3つの基本フォーマットルール

この仕様の魅力は、完全に非構造化されていることです。各タスクに追加できる項目は、基本的に制限がありません。

ルール1: 優先度の記法

優先度は大文字のA-Zを括弧で囲み、その後にスペースを入れます。

(A) Mom に電話する

以下は正しい優先度の記法ではありません。

本当にMomに電話しなきゃ (A) @phone @someday
(b) 上司に返事する
(B)->TPS報告書を提出

ルール2: 作成日の配置

優先度がない場合、作成日が行の最初に配置されます。作成日を記録する場合は、YYYY-MM-DD形式で記述します。

2011-03-02 +TodoTxt タスク形式をドキュメント化
(A) 2011-03-02 Mom に電話する

以下は作成日の記法として正しくありません。

(A) Mom に電話する 2011-03-02

ルール3: プロジェクトとコンテキストの記法

  • コンテキストは単一スペースとアットマーク(@)で始まる
  • プロジェクトは単一スペースとプラス記号(+)で始まる
  • プロジェクトやコンテキストは空白以外の文字を含む
  • 1つのタスクに0個、1個、または複数のプロジェクトとコンテキストを含めることができる

実際の例を見てみましょう。

(A) Mom に電話する +Family +PeaceLoveAndHappiness @iphone @phone

この例では、FamilyとPeaceLoveAndHappinessという2つのプロジェクト、iphoneとphoneという2つのコンテキストが指定されています。

完了タスクの記録方法

タスクが完了したことを示すには2つの要素があります。

1つ目は、小文字のxを行頭に配置することです。このxの直後にスペースを入れます。2つ目は、完了日の記録です。作成日を記録していた場合、完了日の直後に作成日が表示されます。

x 2011-03-03 Call Mom
x 2011-03-02 2011-03-01 Tim のプルリクエストをレビュー +TodoTxtTouch @github

小文字のxを使う理由は、標準的なソートツールでタスクリストを並び替えたときに、完了済みタスクが自動的にリストの下部に移動するためです。まるでチェックボックスにチェックを入れたような見た目にもなります。

拡張メタデータ

開発者はkey:value形式を使って、追加のメタデータを定義できます。

(A) 2025-01-15 プレゼン準備 +仕事 @オフィス due:2025-01-20 pri:A

keyvalueはともに空白文字を含まない文字で構成され、コロンも含まれません。1つのコロンのみがkeyvalueを分離する役割を果たします。

よく使われる拡張タグとしては、due:(締切日)、t:(開始日)、rec:(繰り返し設定)などがあります。

実際のファイル例

GitHubの公式リポジトリに記載されている基本的な例を見てみましょう。

(A) Thank Mom for the meatballs @phone
(B) Schedule Goodwill pickup +GarageSale @phone
Post signs around the neighborhood +GarageSale
@GroceryStore Pies

この例の構成を整理すると以下のようになります。

  • (A)(B)で優先度を設定
  • +GarageSaleでガレージセールというプロジェクトに分類
  • @phone@GroceryStoreでコンテキスト(実行する場所・状況)を指定

私が実際に使用している todo.txtファイルの一部も紹介してみます。

(A) 2025-01-15 ブログ記事執筆 +技術ブログ @パソコン due:2025-01-20
(B) 2025-01-14 プロジェクト進捗確認 +仕事 @電話
(C) 買い物 +家事 @外出時 
2025-01-13 読書記録更新 +個人 @自由時間
x 2025-01-15 2025-01-10 会議資料確認 +仕事
x 2025-01-14 2025-01-12 部屋の掃除 +家事 @家

公式仕様に加えてdue:(締切日)という拡張メタデータも使用しています。このように、基本的な仕様を理解すれば、自分のニーズに合わせてカスタマイズできる柔軟性があります。

おすすめのアプリ・ツール

todo.txtファイルはただのテキストなので、メモ帳でも管理できますが、専用アプリを使うとより便利です。

クロスプラットフォーム: sleek

https://github.com/ransome1/sleek

Windows、macOS、Linuxで使えるオープンソースのアプリ。モダンなUIで、フィルタリングや検索機能も充実してます。無料で使えるのが嬉しいとこですね。

コマンドライン: todo.txt-cli

公式のコマンドラインツールもあります。ターミナル好きな方にはこちらがおすすめ。

$ todo.sh add "(A) 新しいタスク +プロジェクト @コンテキスト"
$ todo.sh list
$ todo.sh do 1

使ってみた感想

良いとこ

  • 動作が軽い: テキストファイルなので当然ですが、どのアプリも爆速で起動します
  • データの自由度が高い: DropboxやGitでバックアップ・同期が簡単
  • 学習コストが低い: 覚えるルールは5分もあれば十分
  • 拡張性: due:rec:など、独自のタグも追加可能

ちょっと気になるとこ

  • リッチなUIは期待できない: 画像添付やリンク埋め込みなどは基本的に無理
  • チーム共有には向かない: 複数人での編集は競合が発生しやすい
  • 複雑なプロジェクト管理は厳しい: ガントチャートや進捗率などは管理できない

まとめ

todo.txtは、シンプルさと実用性のバランスが取れた素晴らしい仕様だと感じました。複雑なタスク管理アプリに疲れた方や、データの永続性を重視する方には特におすすめです。

私自身、NotionやSlackのリスト、Taskwarriorを使っていた時期もありましたが、今はtodo.txtにしてみました。設定に時間を取られることもなく、純粋にタスクの実行に集中できるのが気に入ってます。

また、AIエージェントとの相性もよく、ClaudeやCopilotからの操作も容易です。ほかツールだとたまに暴走する(ワークスペースのタスク文字列のファイルをgrepし始めるとか)ことがありましたが、ファイルとして指定をしやすいです。

まずはテキストエディタで試してみて、気に入ったら専用アプリを導入してみてください。きっと新しい発見があるはずです。

参考文献

Discussion