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

TL;DR

  • 自作のVSCode拡張 を使ってMarkdownでタスク管理してみたらしっくりきた
  • GFM で拡張されたMarkdownはそのままでもタスク一覧として見やすい
  • でもそのままだと黙々と処理をこなしていくのは難しいよね
  • 自作のVSCode拡張次の記事 で紹介するよ

はじめに

少し前からタスクはMarkdownで管理している。

Markdown自体は所謂フォーマットなので管理するという行いについては何か補助的なツールが必要なのだが、 VSCode用拡張機能 を作ってからはしっくりときて結構長く続けることができている。

ということで、新年一発目のポストは意識高めにMarkdown形式でのタスク管理について2回にわけて書いてみる。既に2月というところで意識の高さ具合は容易にバレるけど。

  • しっくりくる管理方法とそこに至るまでの経緯と問題点 ← この記事
  • VSCode用拡張機能の紹介と問題点の解決方法 ← 次の記事

この記事を書くにあたり、同じような事を書いてる記事を探してみた。そこそこヒットするので、タスクをMarkdownで管理しようというのはまあみんな考えつくようなことだとは思う。

だけど、ヒットする記事の殆どは管理というより「タスクをMarkdownフォーマットで書いてHTML形式で閲覧しよう」というものなので、 VSCode用拡張機能をつかった管理方法 まで踏み込めば少しは役立つ記事になると思う。

Markdown形式でのタスク管理

Markdownでタスク管理と聞いただけでだいたい予想がつくとは思うが、フォーマット的には以下の感じになる。

# Project
## SubProject

Description

- [ ] Todo [dueDate]
  Note
  - [ ] Todo#1
  - [ ] Todo#2 [dueDate]
    - [x] Task#1 -> doneDate
    - [ ] Task#2

ほぼ見慣れたMarkdownで説明不要だと思う。SubProjectやDescription、Noteは必要に応じて使う感じ。

拡張? してる部分というか、ルールとしては、 dueDatedoneDate の部分。期限と完了日なのだが、 dueDate の方は管理する上で重要なルールになる。

これをHTMLで表示させると、

md_task_format

となる。

処理系やCSSで見た目は異なるだろうが、逆に言えばそれはいろいろな環境で表示出来るということになる。 また、処理系やCSSで表示方法を調整することが容易に出来るので、データを中心として最適なツールを選ぶことが出来る。

ここまででもMarkdownでタスク管理することについていろいろ夢が広がってくると思う。人によってはこれだけでも十分かもしれない。

が、次項以降ではタスク管理に求める機能をリストアップし、 次の記事 ではその機能を実装した VSCode用拡張機能 を紹介する。

Markdownでのタスク管理へ至った経緯

個人的には、タスクの先頭に毎回「今より良いタスク管理ツールを探す」と入れたくなるほど管理ツールで出来ることはかなり重要だし、他のタスク管理ツールが気になる。なんと言っても、いろいろメモってもメモったことを忘れたりメモっても見返したりしない性格なので、もうツールに頼るしか無いのだ。

そのため、これまでWebサービスからコマンドラインツール、スマホ用アプリからEmacsで動くものまで目につくものはいろいろ試してきた。

しかし、どれも一長一短で自分の環境にしっくり来るものはなかった。管理してるタスクの粒度、納期の扱い、全体のボリュームだったりが人によって違うので当然なのだが。

そんな中でも、一番良かったのはEmacsで動く howm というツール。タスク管理ツールというよりはメモ管理ツールなのだが、付属のタスク管理機能の出来? 思想? が良くて今でも求める機能のベースとなっている。じゃあ howm を使い続けたらいいんじゃない? って話になるのだが、Emacs専用ってところで(ry

次に良かったのは、 Taskpaper というiOSアプリ。今はmacOS用しか存在しないのだが、以前はiOS用が存在していて愛用していた。アプリは有償だったがデータはテキストファイルだったので、iOSアプリのみ購入してPCではDropbox経由のEmacsで編集していた。非常にシンプルなんだけど、機能的には必要十分でこちらも結構長く使った。だけど、iOS用のアプリが開発中止になり、自分自身もEmacsを使わなくなってきたってことで(ry

そんな時に、GitHubより拡張された GFM なるMarkdownフォーマットがメジャーになってきたり、AtomやVSCodeでJavaScriptによる拡張機能が書ける(iOSでも 1Writer ってエディタなどJavaScriptで機能を追加することも出来るものが増えてきた)という状況になってきた。そんな風に周りの状況が整うと「もう自分で作ったほうが早くない?」ということになるわけですね。Elispに比べたらJavaScriptの壁なんてあってないようなものですから(もっと言うと、AtomでのTypeScriptもちょっとしたツールを作るだけなのに敷居が高かった)。

タスク管理に必要な機能

必要な機能をリストアップする前に、前提となる環境を書いておく。

操作のほぼ全てはデスクトップで行い、必要に応じてモバイル環境でも補助的な操作を行えるようにする。なので、内容的には必然的にPCへ向かって仕事してる内勤者向けになる。外でスマホ利用が主という外勤者には向かないと思う。

というような前提条件で、個人的に必要なのは以下の機能。

  1. PlainTextで管理できる これについては GFM なMarkdownフォーマットで実現できてる

  2. JS等のスクリプト言語で簡単に拡張できる これについては、PCならAtomやVSCode、iOSでも 1WriterEditorial 等で対応できている

  3. Dashboard的な画面 日付入りのタスクを納期順に一覧表示し、何も考えずに上から順にこなしていきたい

  4. 期限切れタスクの可視化 期限が過ぎてしまったタスクや直近に迫ったタスクをひと目で分かるようにしたい

  5. 日付を簡単に更新 日付を決めるときは「10日後」や「来週の月曜日」な感じにゆるく指定したい

  6. タスクには親子関係をもたせる 子タスクをすべて完了したら親タスクも完了としたい

  7. キーボードだけで操作したい マウスポチポチも便利だが、やはりキーボードだけで操作できるといろいろ捗る

1と2については機能というより選定するプラットフォームの問題なので、実際に追加機能として必要なのは3以降となる。

ほぼ howm ベースで、少し Taskpaper の影響があるかな? って感じ。それほど howm の影響は大きかった。

まとめ

以上、タスク管理にMarkdownを採用すると良いんじゃない? という提案と、でもMarkdownはフォーマットだから補助ツールが必要だよねという話でした。

このまま、 VSCode用拡張機能の MDTasks という管理用補助ツール紹介ページ へ続きます。


久しぶりに howmTaskpaper を思い出したけど、両方共いいものでした。

テキストファイルってのは良いものですよね。