見出し画像

タスクの整理方法について

KanbanGantt(仮)ではタスクの整理にタグを使用できます。
1つのタスクはタグを複数設定できます。未設定も可能です。

今回はこの構造を採用した理由を書いてみようと思います。

フォルダ構造とタグ構造

例えば散らかった書類を整理するとき、請求書、領収書、個人的な手紙…の様な形で、それぞれ専用のフォルダに分けることができるかと思います。これがフォルダ構造の分け方です。
ただし、この分け方の場合、「こうもり問題」というどちらに分類してよいのか分からなくなる問題が発生してしまいます。
こうもり問題が起きないようにフォルダ構造で分類するのは、MECEと呼ばれるダブりのない分け方にする必要があるのですが、これが結構頭を使います。後からMECEでないと気付いたときに、今まで分類していたものを再分類するにも手間がかかります。こう言うことを考えるのが好きなコンサル脳の人たちには面白い議題ですが、世の中そういう人たちばかりではないというかむしろ少数かなと思います。

一方タグ構造の分け方では、1つのデータに対してそのデータがもつ属性情報をタグ付けして分類します。タグなので複数つけることができます。よってこうもり問題は発生しません。
先ほどの例では、領収書には「領収書」「株式会社○○」とか、個人的な手紙には「手紙」などのタグを付けて分類します。現実世界でこんな整理の仕方をしたら後で探すのが大変ですが、デジタルの世界では簡単に検索できますので問題ありません。

人気のあるタスク管理サービスのバックログはどうなっているかというと、
種別とカテゴリーというものがあります。
種別は1タスクにつき1つ。カテゴリーは複数設定できるので、種別はフォルダ構造の整理方法、カテゴリーはタグ構造の整理方法になっています。

バックログのカテゴリー設定
バックログのカテゴリー設定 複数選択

1つ選択するときと複数選択するときでUIが変えられるのはうまいなと思います。KanbanGantt(仮)でも採用しよう、笑

タグ構造での整理を採用

こうもり問題を回避するため、KanbanGantt(仮)ではタグ構造の分類方法を採用することにしました。
ただタグでの整理はいくつか気を付けるべき点があるため、UIや細かな仕様によるサポートでそのあたりを解決していきたいと思います。
メリット/デメリットのバランス感覚が難しいですが、次のような施策をしてみます。

簡単に付けられるようにする

タグはタスクの属性を表しますが、1つのタスクには多くのタグが付く可能性があります。例えば、「ランディングページの制作」というタスクだったら、「design」「lp」「marketing」「coding」「writing」…など色々想定されます。なのでカジュアルにアドホックにどんどん設定できるUIが好ましいです。
noteのハッシュタグ設定はその様になっています。

noteのハッシュタグ設定

タグの乱立を防ぐ

上記の様なUI実装のせいでもありますが、タグというのは増えやすいのです。かなり丁寧なUIを実装しないと、同じようなタグが乱立してしまい、検索性が落ちてしまいます。
また、命名規則の問題もあります。XやInstagramのハッシュタグや、このnoteのタグもそうですが、タグをつけるときに大文字、小文字の違いだったり、スペース区切りなのかキャメルケースなのかなどで迷ってしまいます。SNSではとりあえず思いつくものを全部つけておけばよいのですが、タスク管理サービスでそれをやってしまうのはちょっと雑すぎるというか違う気がします。

なのでKanbanGantt(仮)ではタグに使用できる文字列を制限しています。
小文字の半角英数字、_(アンダースコア)のみです。
ひらがな、カタカナ、漢字も許可したかったのですが、たとえば「デザイン」なのか「design」なのかで迷うといったケースを避けるためにあえてこうしています。文字数は20文字以内としました。

英語圏以外の人が必要なタグ名を簡単な英単語もしくは熟語に落とし込むのが難しいという懸念はあります。この問題に対しては、ChatGPTなどのAIアシスタントのAPIを使ったりして解決できないかと思っています。
例えば「要検討」というタグ名をつけたい場合、良い単語を知らなかったのでChatGPTに質問したところ以下の様になりました。

「要検討」のタグ名は?

情報が平坦化されてしまう

タグと一言でまとめてしまっても、それぞれのタグは粒度や重要度が異なる可能性があります。
例えばFPSゲーム制作のプロジェクトにおいて、ゲーム内のシーンで使う「建物のモデリング」タスクと「銃のモデリング」タスクがあったとします。どちらのタスクも「modeling」というタグが付きそうです。追加で「建物のモデリング」には「scene_assets」、「銃のモデリング」には「gun」というタグが付くかもしれません。
タスク管理者がモデリング全般の進捗を見たいときは「modeling」で検索して、銃のモデリングのみの進捗を見たいときは「gun」で検索すればよいです。この時、「modeling」は「scene_assets」や「gun」よりも大きなくくりです。
また、タスクの進行中に他のメンバーにアドバイスを求める必要が出てきたとします。後で忘れないように、それらのタスクには「need_advice」とか「help」などのタグがつけられるかもしれません。これらのタグはアドバイスをもらったらタスクから削除する一時的なものです。この「need_advice」の様なタグは上記の「modeling」などのタグとは明らかに性質が異なります。

タグはタスクを分類するために重要な属性ではありますが、上記の様な理由から、全てのタグを表立って表示したくはありません。
表示スペースも限られます。

そこでKanbanGantt(仮)では、タスクに設定したタグに順番を持たせることで、タグ間の重要度の違いのニュアンスを表現することにしました。
最初の3つのタグをMain Tagsと呼ぶことにして、強調表示します。
カンバンボードでのタスク表示でも、Main Tagsのみ表示することにしています。

実装したUI

これらのことを踏まえて実装するとこの様なUIになりました。

タグ入力UI
タグ入力UI

タグの追加は「+」ボタンからその場で可能です。

タグの追加
タグの並び替え

タグ入力のUIは意外と簡単でした。VueとBulmaが優秀。タグの並べ替えをドラッグ&ドロップでできるようにしています。最初の3つを強調表示します。
並び替えはvue.draggable.nextにお世話になっております。

マイルストーン

タスクにはマイルストーンを設定できるようにする予定です。用途としてはたとえばアプリを開発しているときに、ver. 1.0.0 のリリースに関連するタスクをまとめて表示したい時などに使います。この時の ver. 1.0.0というのがマイルストーンになります。

これもタグでできるのでは? と一瞬考えましたが、マイルストーンはタグとは別の性質を持っています。
一番の違いはリリース日や締切日となる日付を持っている点です。これによりタグとは別に管理するのは理にかなっています。

やらないこと

フォルダ構造の整理方法

KanbanGantt(仮)ではフォルダ構造の整理方法はあえて実装しない予定です。何故ならタグ機能で実現可能だからです。
バックログやワードプレスの様に、フォルダ構造とタグ構造の2つの整理方法があると、どちらで整理すれば良いのか迷ってしまいます。
(ワードプレスは記事の整理にSEO的な観点もあるので少し話が違うかもしれませんが。)
軽くネット検索しただけでもそういった悩みが散見されます。また、それらの悩みへの回答で説明される、フォルダ構造の整理方法の使い方や必要性について、個人的には的を得たものが見当たらず、ひとまずフォルダ構造の整理方法は実装しないことにしました。

タグ構造の整理方法はある程度柔軟性もあるので、フォルダ構造の整理方法に頼らずとも、ユーザーが各々の運用方法に合わせてルールを決めて使うこともできるかなと期待しています。

バックログのフォルダ構造での整理方法である「種別」の役割には、種別ごとに説明のテンプレートを設定できることが挙げられますが、KanbanGantt(仮)ではテンプレートはそれ自体で定義してロードできるようにする予定です。

親子課題

KanbanGantt(仮)では課題の親子関係は実装しません。これは好みが分かれる仕様かもしれません。しかし個人的に親子課題という構造が大嫌いなのです、笑
以下理由を挙げてみます。

  • タスクの説明を親課題に書くのか子課題に書くのか迷う。結果、似たような説明が親課題にも子課題にもできて二重管理になってしまう。

  • 1つのタスクを行ったとき、親課題、子課題の2つの説明やステータスを更新しなければならないケースが発生することがあり手間となる。更新のし忘れで情報に矛盾が生じることもある。

  • 子課題の粒度を揃えるのに迷う。エスカレートすると孫課題が欲しくなってくる。

  • (実装が面倒くさい。(小声))

タスクの親子関係ではなく、関連するタスクをリンクする仕組みの方が優れていると考えているのでそちらは実装予定です。

実は…

カテゴリー機能(タスクに1つだけ設定できる分類)は実装していました汗
最初はカテゴリー機能とタグ機能の2つの整理方法を実装した理由について書き始めたのですが、書いていく中でどうしてもカテゴリー機能の役割についてうまく説明できず、結局カテゴリー機能を廃止するという結果になりました。
文章で考えをまとめるのはつくづく大事だな、と。

引き続き、KanbanGantt(仮)ではできるだけシンプルで使いやすいものを目指して開発中です。
もちろんまだリリース前なのでここで書いた仕様は変わる可能性もありますが…。
それではまた次回の記事で。

もしこの記事があなたのお役に立てたなら幸いです。 よろしければサポートをお願いします。今後の制作資金にさせていただきます!