iPhoneで Grafanaの グラフを 参照できる アプリ Grafanizer 作ってます。 詳しくは こちらへ

はじめに

前の記事 では「 GFM なMarkdownフォーマットでタスク管理してみたらしっくりと来てなかなか良いんだけど、Markdown自体はフォーマットなので管理するためにはなにか補助的なツールが必要だよね」というところまで説明した。

今回はその補助的なツールについて書こうと思う。 前の記事 にはあまり役立つ内容がないが、このページを読む前に観ておいたほうがいろいろ理解しやすいと思う。

また、これも前に書いたのだが、人によってタスク管理に求めるものは違うと思うので「こういうアプローチがあるんじゃない?」的に読んでもらうのがよいかも。

ということで、この記事では 「VSCodeでGFMなMarkdownフォーマットなタスクリストを管理する」ために作った自作拡張 を紹介する。

紹介

ベタな名前だが、 MDTasks という名前で MSのマーケットプレイスにもパブリッシュ してある。

mdtasks

タスクというと、VSCodeではタスクランナー的なものと勘違いされそうな気するが、もうアップしたものは仕方ない。まあいいだろう。

このツールでは 前の記事 でリストアップした、個人的に必要なタスク管理機能が実装されている。下記のGIF動画でイメージが掴めるだろうか。

screencast

MSMarketplace → marketplace

GitHub → GitHub

機能

ということで、 前の記事 でリストアップした必要な機能について、項目別に機能を紹介したいと思う。

Dashboard的な画面

本来であればDashboard的な専用画面が欲しいところだが、そこまでは作り込まずにVSCodeのQuickPickで実装している。

mdtasks_dashboard

日付順でソートしたリストにProject名を付加してるので、絞込みは容易にできるはず。

VSCodeで実装する前は、Atomでも同じようなツールを作ってた(未公開)。Atomのほうは自由に画面を作ることができたので、リストアップした日付にも色付けできたのだが、VSCodeではそれができない。VSCodeでも自由な画面が作れるようになるか、QuickPickへの色付け機能が欲しいところ。

期限切れタスクの可視化

GFM なmarkdownなのだが、独自ルールとして [] で囲んだ日付は dueDate 扱いにしている。

(スクリーンショット撮影は2018/01/17)

dueDate が過去日だったら背景色が赤になるので、ざーっと全体を見てるときでも期限切れタスクがひと目で分かる。

また dueDate が今日だったり、明日だったり、直近1週間だったりするときもそれなりの色付けがされる。なので、全体像を把握しやすい(はず)。

ちなみ、これらの色は設定変更できるのでテーマに合わせて調整して欲しい。

日付を簡単に更新

これは MDTasks の機能ではなく、 ActionLock という拡張機能に実装している機能なのだが、日付を認識すると自動的に下線がひかれるので下線上で `Enter` キーを叩いてQuickPickから日付を簡単に選ぶことが出来る。

実際の日付 2018-01-20 等は当然として、 Today だったり TomorrowNext Friday 等も定義しているので具体的な日付を考えなくても適当に日付を設定出来る。

またAtomの話になるのだが、AtomではModalウィンドウも作ることが出来たので +20 などと事前に定義してない日付でも都度計算できた。が、VSCodeではそれが出来ないみたい。APIの実装が議論されてはいるが、対応はまだまだの様子。早めに実装してもらえるとありがたいんだけどなぁ...

ActionLock で出来ることについては こちらの記事 を参照ください。Emacs用のメモ環境ツールである howm にインスパイアされて作成した拡張機能です。

タスクには親子関係をもたせる

これも ActionLock 側に機能をもたせているのだが、子タスクをすべて完了させるとその親タスクも完了させるようにしてある。

これが思ってたより便利だし、一気に親の親の親まで駆け上がって完了になると結構気持ちが良い。

思ったより面倒で複雑な処理になったのだが、色んなパターンでテストを作ってるのでまあまあ信頼できるはず。

もしおかしな動きをしてしまってたら具体的な動きを教えてほしい。テストパターンに取り込みたい。

キーボードだけで操作したい

スマホでのタスク管理ってのは、確かにお手軽で通知と絡ませると非常に相性が良い。けど、入力が面倒なわけです。

一度ならず、何度もPCでのテキストファイルベースなタスクと、iOSのリマインダーとかを連携させようと思ったのだがもう諦めた。

今はPCで出来るだけ効率よく操作と管理が出来るようにし、スマホでは確認だけできればいいかなと思ってる。

必要あればGoogleCalendarのTaskに転載して登録すれば良いわけだし(自動的に転載することは容易なのだが削除や変更時まで考えると面倒なのでやらないほうが吉)。

テキストファイルベースなので、好きなエディタで開いておもむろにザザザーってBrainDump的に一気に入力して適当にプロジェクト分けして、必要に応じてショートカットとかエンターキーでクローズさせていくほうがなんとなくうまくいってる。

おわりに

という感じで、この記事では自作の拡張機能を紹介した。何度も同じ話になるが、しっくりくるタスク管理方法ってのは人によって違うとおもうので、この方法でしっくり来るという人はあまりいないかもしれない。

だが、一般的に普及しているMarddownフォーマットでタスクを編集し、簡易的なスクリプト言語でエディタを拡張して管理するという方法はそれなりに魅力的だと思う。

この方法に少しでも興味が湧いたら、この拡張機能を使ってみてほしい。もししっくり来なかったとしても、自分で機能を簡単に追加できる。そして機能を追加したあかつきには、 GitHub経由でPullRequestを頂ける とありがたい。もちろんコードを書けなければ要望だけでも構わない。

ということで、2回にわけてMarddownフォーマットで記述したタスクをVSCode用拡張機能で管理すると非常に良かったという話でした。

それでは、よいタスク管理ライフを!


タスク管理ライフって言うと、なんとなく「タスクに追われる日々」というのを想像してしまう。

でも、タスクって作られるものじゃなく自分で作りだすものなんだよね。 (最後にちょっと意識高め発言