Skip to content

Latest commit

 

History

History
609 lines (440 loc) · 20.1 KB

specification.md

File metadata and controls

609 lines (440 loc) · 20.1 KB

Tritask-sta specification

Tritask-sta の概要や仕様をまとめる。

対象バージョン: v1.11.0

タスクのフォーマット

1 2--------- 3-- 4---- 5---- 6----------
M YYYY/MM/DD DOW HH:MM HH:MM DESCRIPTION
  • 1 マーク(Mark) ソート用マーク。
  • 2 実行日(Execution Date) このタスクを実行する日。
  • 3 曜日(DOW) 日付に対応する曜日。
  • 4 開始時間(Start Time) このタスクの開始時間。
  • 5 終了時間(End Time) このタスクの終了時間。
  • 6 タスク内容(Description) タスク内容。後述する 属性(Attribute) も記述可。

タスクの種類

タスクは実行日、開始時刻、終了時刻などの値に応じて種類が分かれる。

有効なタスク

                             INBOX
4 2017/07/11 Thu  9:52 10:33 YESTERDAY DONE
2 2017/07/12 Wed             TODAY TODO
2 2017/07/12 Wed  9:52       TODAY START
1 2017/07/12 Wed  9:52 10:33 TODAY DONE
3 2017/07/13 Thu             TOMORROW TODO
種類名 略称 説明
INBOX inbo インボックス。実行日の決まっていないタスク(メモとしても使用可)
YESTERDAY DONE ye 昨日以前に終了したタスク
TODAY TODO tt 今日行うタスク
TODAY START ts 現在実行中のタスク(開始時間が記入されている)
TODAY DONE td 今日終了したタスク(開始時間と終了時間が記入されている)
TOMORROW TODO tom 明日以降のタスク

無効なタスク

Tritask-sta では「今日のタスク(実行日が今日のタスク)」のみ扱うことを考える。もっと言えば人が過去や未来にタイムスリップできないように、Tritask でも過去のタスクや未来のタスクを開始することはできない。この考えに基づき、Tritask-sta では YESTERDAY TODO, YESTERDAY START, TOMORROW DONE, TOMORROW START を無効なタスクとして扱う。

4 2017/07/11 Thu             YESTERDAY TODO      <=== 無効
4 2017/07/11 Thu  9:52       YESTERDAY START     <=== 無効
2 2017/07/12 Wed             TODAY TODO
2 2017/07/12 Wed  9:52       TODAY START
1 2017/07/12 Wed  9:52 10:33 TODAY DONE
3 2017/07/13 Thu 10:00       TOMORROW START      <=== 無効
3 2017/07/13 Thu 10:00 10:22 TOMORROW DONE       <=== 無効

以下は無効と判断した理由である。

種類名 無効である理由
YESTERDAY TODO 過去のタスクは目に入らず、見失いやすいから
YESTERDAY START 過去のタスクを開始することはありえないから
TOMORROW START 未来のタスクを開始することはありえないから
TOMORROW DONE 未来のタスクを終了することはありえないから

無効タスクの対処

Tritask-sta では、無効なタスクについては その実行日を今日に修正する 措置を行う。こうすることでこれら無効なタスクが今日のタスクとして浮上し、目に付くようになる。目に付けば、何らかの対処ができる。

各フィールドの実装

マーク

タスク種別に対するマークは以下のとおりに定める。

マーク値 タスク種別
(スペース) inbo(Inbox)
1 td(Today Done)
2 tt(Today Todo), ts(Today Start)
3 tom(Tomorrow Todo)
4 ye(Yesterday Done)

意図としては、まずメモ領域として使える Inbox は最上位に表示させる。また Today, Tomorrow, Yesterday については、Today が一番使うはずなので一番上、次いで明日以降の予定である Tomorrow、最後に(過去の記録を参照したい以外は普段は使わないであろう)Yesterday、という順にしてある。

日付と曜日

以下のパターンのみ有効とする。

  • Inbox の場合
    • 日付も曜日も空文字列の時のみ有効
  • Today, Tomorrow, Yesterday の場合
    • 有効な日付が指定された時のみ有効

以下に例を挙げる。

                             有効(Inboxの場合)
2 2017/07/12 Wed             有効
2 2017/07/12                 有効(曜日部分はソート時に補完される)
2 2017/07/12 WED             有効(曜日部分はソート時に補完される)
2 2017/07/12 abc             有効(曜日部分はソート時に補完される)
2            Wed             無効なフォーマット(日付がない)
2 2017/07/32 WED             無効なフォーマット(日付が有効でない)

属性

TEMPLATE

  • (属性の表記方法1)
  • (属性の表記方法2)
  • ...
  • (表記に関する補足1)
  • (表記に関する補足2)
  • ...

(属性に関する概要や詳細説明)

    • (属性の表記例1) (例1に関する説明)
    • (属性の表記例2) (例2に関する説明)
    • ...

繰り返し(Repeat)

  • rep:N
  • N は 1 以上の整数

このタスクを終了すると、N日後の Tomorrow Todo が複製される。

    • rep:1 毎日実行する繰り返し。
    • rep:7 一週間に一度実行する繰り返し。
    • rep:30 (おおよそ)一月に一度実行する繰り返し。

スキップ(Skip)

  • skip:曜日文字列
  • 曜日文字列は の組み合わせ

このタスクは、ソートされた時、日付が「指定された曜日」だった場合に、日付が +1 される。

    • rep:1 skip:休 平日のみ毎日実行する繰り返し
    • rep:1 skip:水日 水曜日と日曜日以外で毎日実行する繰り返し

指定は曜日個別、平日、休日(土曜日と日曜日)の三パターンを指定可能。

全ての曜日が指定された場合、永遠にインクリメントされ続けるため、 ツール側で停止しなければならない。Tritask-sta では処置済。

ホールド(Hold)

  • hold:N
  • N は整数

このタスクは、ソートされた時に、今日を 0 として、その差分の日付が常に設定される。

    • hold:0 このタスクは常に日付が今日になる
    • hold:1 このタスクは常に日付が明日になる
    • hold:-1 このタスクは常に日付が昨日になる

リファレンス(Reference)

  • ref:KEY
  • KEY は1文字以上で、かつファイル名として採用できる文字列

このタスクが持つリファレンス KEY を開く。

リファレンスとはキーとファイルからなるメモ領域であり、実体は (tritaファイルのあるディレクトリ)/ref 配下に (キー名).md という形で保存される。

リファレンスはタスクに関する補足情報を記述するのに便利である。

キーは何でも良いが、tritask-sta では現在日時の YYMMDD_HHMMSS で固定する。

見積もり(Estimate)

  • m:N
  • N は 1 以上の整数

このタスクは N 分で終了予定であることを示す。

この属性を付与しておくと、Report Today 機能で「今日の総見積時間」や「今日すべてのタスクを終えるのにあと何分かかる見込みか」といった情報を算出できるようになる。

クローン(Clone)

  • clone:N
  • N は 0 または 1 以上の整数

N が 0 の時、このタスクは何もしない。

N が 1 以上の時、このタスクはソート時、自身から clone:N を省いたタスクを N 個だけ増やす。また自身は日付を +1 する(このとき N の値も 0 に戻す)。

もしソート時に clone:0 を持つタスクの日付が今日だった場合、そのタスクが増やしたと思われるタスクはすべて削除する。これは前日やり残した「増やしたタスク」をクリアするためである。

    • clone:3 3個増やす

操作一覧

menu

注釈:

  • 「指定タスク」とは現在選択している(キャレットがある)行のタスクを指す
  • 「複数選択」とは複数選択している行全てのタスクを指す
    • ただし後述の「Multi と Find In Today について」も参照
  • Before/After 内では、キャレットは I で表記する

TEMPLATE

(一言説明)

Before

適用前の内容

After

適用前の内容

(詳細説明)

================

Add Task

現在行に Today Todo を追加する。

Before

  2017/08/04 Fri             タスク1
  2017/08/04 Fri             Iタスク2
  2017/08/04 Fri             タスク3

After

  2017/08/04 Fri             タスク1
  2017/08/04 Fri             I
  2017/08/04 Fri             タスク2
  2017/08/04 Fri             タスク3

Add Inbox

現在行に Inbox を追加する。

Before

  2017/08/04 Fri             タスク1
  2017/08/04 Fri             Iタスク2
  2017/08/04 Fri             タスク3

After

  2017/08/04 Fri             タスク1
                             I
  2017/08/04 Fri             タスク2
  2017/08/04 Fri             タスク3

Copy Task

指定タスクを次行に複製する。その際、開始時間と終了時間はクリアする。

Before

  2017/08/04 Fri 09:30 09:54 Iタスク2
  2017/08/04 Fri             タスク3

After

  2017/08/04 Fri 09:30 09:54 タスク2
  2017/08/04 Fri             タスク2I
  2017/08/04 Fri             タスク3

Start Task

指定タスクに開始時間を書き込む。

Before

  2017/08/04 Fri             Iタスク1

After(14:30に開始した場合)

  2017/08/04 Fri 14:30I      タスク1

既に開始されている場合は開始時間をクリアする(開始時間記入のトグル)。

End Task

指定タスクに終了時間を書き込む。

Before

  2017/08/04 Fri 13:31       Iタスク rep:3

After(14:30に終了した場合)

  2017/08/04 Fri 13:31 14:30 タスク rep:3
4 2017/08/07 Mon             タスク rep:3I

もし Repeat 属性がある場合、当該タスクを(日付を指定日後に変更してから)複製する。

開始時間が書き込まれてない場合は 無効タスク(開始してないのに終了している)となってしまうが、処理の中断や警告は行わない 開始時間も書き込む(v1.7.1より) 何もしない(v1.8.0より)

Close Task

Start と End を同時に行う。

Before

  2017/08/04 Fri             Iタスク1

After(14:30に開始した場合)

  2017/08/04 Fri 14:30 14:30Iタスク1

(主な用途) 「書いてはいたが、する必要がなくなった(不発したタスク)」を一気に終了することができる。愚直に Start して、End して、だと少々面倒である。ちなみに「記述そのものを消せばいいのでは?」と思われるかもしれないが、一般的にタスクは(不発したものであっても)なるべく記録として残した方が良い。残しておけば、あとで読み返せる。

End Task(Posteriori End)

指定タスクを報告的終了する(v1.10.0より)。

報告的終了とは「さっきまで~~をやっていた」を記録すること。報告的終了を実行すると、指定タスクは「"最も直近に終了したタスク" の直後から現在日時まで行っていた」と解釈され、開始時間と終了時間が記入される。

Before

1 2017/08/04 Fri 12:22 12:34 タスク
1 2017/08/04 Fri 12:34 12:37 タスク
  2017/08/04 Fri             コーヒー飲んでたI

After(12:55に報告的終了した場合)

1 2017/08/04 Fri 12:22 12:34 タスク
1 2017/08/04 Fri 12:34 12:37 タスク
  2017/08/04 Fri 12:37 12:55 コーヒー飲んでたI

ただし「最も直近に終了したタスク」が無い場合は何もしない。

Edit Task

指定タスクのタスク内容部分を範囲選択する。

Before

  2017/08/04 Fri 12:34I      タスク1

After

  2017/08/04 Fri 12:34       タスク1I
                             ^^^^^^^
                             この部分が範囲選択される

(主な用途) タスクの Description 部分を素早く編集したい場合に用いる。

================

Walk day

指定タスクの日付を指定日だけ増減させる。複数選択可能。Find In Today可能。

指定可能な増減値は整数値。

  • 増減値の例
    • -3 : 3日前
    • 0 : 今日
    • 1 : 1日後
    • +1 : 1日後

Walk +1 day(Smart-walk)

rep:N があれば N 日後を、無ければ 1 日後(+1)を設定する Walk day。複数選択可能。Find In Today可能。

Change to Today

指定タスクの日付を今日にする。複数選択可能。Find In Today可能。

Before(二つとも選択しているとする)

4 2017/08/02 Wed             タスク
4                            タスク

After(今日が 17/08/05 とする)

2 2017/08/05 Sat             タスク
2 2017/08/05 Sat             タスク

Clear Date

指定タスクの日付を空文字列にする(inboにする)。

Before

  2017/08/04 Fri             タスクI

After

                             Iタスク

================

Sort

現在開いている trita ファイルに対してソートを実行する。

ただしソートを実行する前に全行を走査し、以下の前処理を行う。

  • 日付に対応するマークを付ける(既にマークが記入されている場合は上書きする)
  • 日付に対応する曜日を埋める(既に曜日が記入されている場合は上書きする)
  • 属性の解釈を行い、当該タスクの中身を変更する
    • 例1: hold がある場合、日付を指定日にホールドする
    • 例2: skip がある場合、日付が指定スキップ日であれば、そうならなくなるまで日付を増やす

Jump to Starting-Task

Today Start のある行にジャンプする。

Before

  2017/08/04 Fri             タスクI
  2017/08/04 Fri             タスク
  2017/08/04 Fri             タスク
  2017/08/04 Fri             タスク
  2017/08/04 Fri             タスク
  2017/08/04 Fri             タスク
  2017/08/04 Fri 14:34       タスク
  2017/08/04 Fri             タスク
  2017/08/04 Fri             タスク

After

  2017/08/04 Fri             タスク
  2017/08/04 Fri             タスク
  2017/08/04 Fri             タスク
  2017/08/04 Fri             タスク
  2017/08/04 Fri             タスク
  2017/08/04 Fri             タスク
  2017/08/04 FriI14:34       タスク
  2017/08/04 Fri             タスク
  2017/08/04 Fri             タスク

Today Start が複数存在する場合、最初に登場する Today Start にジャンプする。

Open Reference

指定タスクにリファレンスを付与する。

Before

  2018/04/26 Thu             テストI

After

  2018/04/26 Thu             テスト ref:180426_131649I

リファレンスキー名は現在日時の YYMMDD_HHSSMM を自動的に用いる。また、付与後は当該リファレンスファイル( YYMMDD_HHSSMM.md )を「関連付けられたエディタ」で開く。

Open Commandline

指定タスクが持つコマンドラインを実行する。

コマンドラインは o:(コマンドライン) のように o (小文字のオー)属性にて指定する。

例:

  2019/09/03 Tue             ニュース XXXX を見て気になることをメモする o:notepad.exe

注意事項

  • 内部的には start "" "(CommandLine)" をそのまま実行
  • (CommandLine) としてスペースを含む文字列は利用不可

Simple Completion

指定タスクに対して補正(日付情報から正しい曜日文字列を算出する、ソートマークを正しく反映する等)をかける。

Before

  2018/11/10IThu             テストI

After

3 2018/11/10ISat             テスト

(主な用途) ソートを行わずに、タスク一つのみに対して補正を行いたい場合に用いる。特に日付を手動で更新した際に、その日付が何曜日なのかを知りたい場合などに用いる。

================

Report Today or Selected-Range

今日のタスク情報からレポートを作成し、ダイアログにて表示する。

today_report

ただし範囲選択を行っている場合は、今日のレポート(Today)ではなく「選択範囲内のタスク(Selected-Range)に関するレポート」を表示する。

selected_range_report

注意事項:

  • 見積もり(見込み)の計算は、見積もり属性 m:(見積もり[分]) を付与したタスクのみ対象となる。付与していないタスクの見積時間は 0 分として扱われる。

================

Programming helper script

ヘルパースクリプト helper.py を秀丸エディタで開く。

Programming this macro

マクロファイル tritask.mac を秀丸エディタで開く。

その他挙動などの解説

複数選択(Multi)と Find In Today について

一部の操作は「指定タスク」として「複数(行)のタスク」を指定できる。

指定方法として以下がある。

  • Multi …… 複数行(2行以上)範囲選択されたタスクすべて
  • Find In Today …… キーワード(選択範囲の文字列)を持つ「今日のタスク」すべて。 v1.9.0 から追加

つまり指定方法は以下のように区別される。

  • 範囲選択していない
    • → 指定タスク = 現在行
  • 範囲選択しており、範囲は単一行
    • → 指定タスク = Find In Today
  • 範囲選択しており、範囲は複数行
    • → 指定タスク = Multi

対応している操作には、メニュー項目にその旨を表示している。

multi_and_findintoday_display