ttask alternatives and similar packages
Based on the "Data" category.
Alternatively, view ttask alternatives based on common mentions on social networks and blogs.
-
semantic-source
Parsing, analyzing, and comparing source code across many languages -
lens
Lenses, Folds, and Traversals - Join us on web.libera.chat #haskell-lens -
code-builder
Packages for defining APIs, running them, generating client code and documentation. -
text
Haskell library for space- and time-efficient operations over Unicode text. -
cassava
A CSV parsing and encoding library optimized for ease of use and high performance -
compendium-client
Mu (μ) is a purely functional framework for building micro services. -
holmes
A reference library for constraint-solving with propagators and CDCL. -
resource-pool
A high-performance striped resource pooling implementation for Haskell -
primitive
This package provides various primitive memory-related operations. -
discrimination
Fast linear time sorting and discrimination for a large class of data types -
dependent-map
Dependently-typed finite maps (partial dependent products) -
IORefCAS
A collection of different packages for CAS based data structures. -
dependent-sum
Dependent sums and supporting typeclasses for comparing and displaying them -
orgmode-parse
Attoparsec parser combinators for parsing org-mode structured text! -
reflection
Reifies arbitrary Haskell terms into types that can be reflected back into terms -
streaming
An optimized general monad transformer for streaming applications, with a simple prelude of functions -
scientific
Arbitrary-precision floating-point numbers represented using scientific notation -
text-icu
This package provides the Haskell Data.Text.ICU library, for performing complex manipulation of Unicode text.
Collect and Analyze Billions of Data Points in Real Time
Do you think we are missing an alternative of ttask or a related project?
README
ttask
皆さん、進捗どうですか。
これは何
スクラムというアジャイル開発手法で用いられるスケジュール管理手法に感銘を受けて開発された、 セルフマネジメントを行うための簡単なタスク管理ツールです。
ちゅーんさんが作ったタスク管理ツール……tune san ga tukutta task kanri tool
を縮めてttask
です。どうも。
スプリントやプロダクトバックログといった仕組みを、個人のプロジェクトや、自学等に応用する事を目的とし、 最小限の機能をCUI上でなるべく簡単に操作出来る事を目的として開発しています。
尚、ドッグフーディングしながらの開発のため、当面の間は後方互換を保ちながら開発予定です。
あくまでベータ版のため、不具合が残っている可能性が高い事、使い方や表示等の変更はしばらく続く事、 まだどのくらい巨大なデータの扱いに耐えられるのかが不明な事等、色々と不完全な状態ですので、ご了承ください。
哲学
- スケジュールや目標は頻繁に変更されるものなので、柔軟に対応出来る事が求められる
- 正確な見積は困難なので、相対見積もりと実績から徐々に制度を上げていく仕組みが求められる
- 作業の振り返りを行い今後の改善に繋げるため、様々な集計機能が求められる
インストール
Stackをインストールした状態でこのリポジトリをclone
して。
stack install
を実行してください。
正しくインストールできていれば、
以下のようにttask -?
でgdgdな英語で書かれたヘルプが表示されるはずです。
$ ttask -?
Usage: ttask [OPTION...] <COMMAND> [ARGS...]
Task management tool for yourself is inspired by scrum.
Options:
-? --help display this help and exit
-v[n] --verbose[=n] set verbosity level
Commands:
project Switch other project. Or list all projects when project id is abbreviated.
add Add contents to active project
delete Delete contents from active project
move Move contents of active project
swap Swap contents of active project
active Show active projects information
pbl List all pbl stories
sprint List all sprint, Or show sprints detail when project id is not abbreviated.
story Show target story information and all tasks
run Update contents status to `Running`
finish Update contents status to `Finish`
wait Update contents status to `Wait`
nota Update contents status to `Not Achieved`
reject Update contents status to `Rejected`
log Analysis sprint log
用語
スクラムの手法はやや複雑なので、簡単に用語を説明します。
以下は、本ツールを用いて、本ツールそのものの今後の改修予定を管理している例です。
$ ttask active
PROJECT - ttask : 11pt [ Wait ] ttaskへの永続的な機能追加/修正
Active sprint(s) :
SPRINT - 1 : 11pt [ Running ] ttaskの公開
To Wait at 2016-05-03 17:29:30.337829
To Running at 2016-05-03 17:39:45.119291
STORY - 1 : 11pt [ Running ] 作業者はセルフマネジメントのためttaskをgithubからインストール出来る
TASK - 1 : 3pt [ Finished ] サンプルのプロジェクトを作成しながら標準出力を記録
TASK - 2 : 5pt [ Running ] README作成
TASK - 3 : 3pt [ Wait ] githubにリポジトリ作成〜pushまで
Product backlog :
STORY - 4 : 0pt [ Wait ] 作業者は現在よりもより手軽にPBLを並び替える事の出来るttaskを使う事が出来る
STORY - 9 : 0pt [ Wait ] 作業者が誤入力しても大丈夫なように一度作成したコンテンツの説明を修正出来る
STORY - 2 : 0pt [ Wait ] 作業者はレビューのためttaskで記録したスプリントのログを照会出来る
STORY - 5 : 0pt [ Wait ] 作業者はswapやmoveを失敗した際に、その失敗を直ちに認知する事が出来る
STORY - 11 : 0pt [ Wait ] 作業者は作業の相対見積もりを正しく行うためにいつでも基準となるタスクを見れる
STORY - 7 : 0pt [ Wait ] 作業者は実際に作業を行った作業時間を記録する事が出来る
STORY - 8 : 0pt [ Wait ] スクラムを知らない作業者はttaskの管理の仕組みを理解するための詳細な文章を読む事が出来る
STORY - 6 : 0pt [ Wait ] 作業者は日々の進捗状況を正確に把握するためのバーンダウンチャートを見る事が出来る
STORY - 10 : 0pt [ Wait ] 忙しい作業者は正しい振り返りのため複数のプロジェクトにまたがったログを照会出来る
- 要求仕様を自然言語で簡潔に記したものをユーザーストーリー(
STORY
)と呼びます- 書き方がちょっとルール違反だねごめんね dear 識者
- ストーリーは、優先度の高いものからプロダクトバックログ(
Product backlog
)と呼ばれるリストに並べられます - スケジュールを決める作業(プランニング)は、スプリント(
SPRINT
)と呼ばれる短い期間で区切って行います- だいたい一週間〜四週間くらい
- プロダクトバックログのストーリーのうち、優先度の高いものから順にスプリントで処理します
- タスク(
TASK
)はストーリーを実現可能にする最小の作業単位です- タスクの作業量は時間ではなく「ポイント(
pt
)」と呼ばれる単位で相対的に見積もります
- タスクの作業量は時間ではなく「ポイント(
ストーリーの切り方とかポイントの見積もり方とかヴェロシティとか、
詳しい事はそのうち(上記例で言う所のSTORY - 8
)Wikiあたりに纏めます。
あとはスクラムとかアジャイル関係の書籍とか文章を色々当たってみてください。
使い方
Helpだけだと多分無理ゲーなのでざっと使い方をまとめました。
わりと大急ぎで書き上げたので誤植いっぱいだったらごめんね。
プロジェクトの作成
ttask add project -n [プロジェクトの説明] [プロジェクトの識別名]
で新しいプロジェクトを作成します。
ttask add project -n "サンプルプロジェクトです" sample
ttask project
で現在のプロジェクトを一覧表示出来ます。[ ]
で括られているのが現在作業中のプロジェクトです。
$ ttask project
ttask
[sample]
test
また、作業中のプロジェクトを切り替えたい場合はttask project -i [プロジェクトの識別名]
です。
ユーザーストーリーの追加/並べ替え
ttask add story [ストーリーの内容]
でプロダクトバックログに対してストーリーを追加します。
$ ttask add story "Aさんは〜が出来る。それは〜だからだ。"
$ ttask add story "Bさんは〜が出来る。それは〜だからだ。"
$ ttask add story "Cさんは〜が出来る。それは〜だからだ。"
ttask active
でプロジェクトの現在の状況を見る事ができます。
$ ttask active
PROJECT - sample : 0pt [ Wait ] サンプルプロジェクトです
Running sprint is nothing
Product backlog :
STORY - 1 : 0pt [ Wait ] Aさんは〜が出来る。それは〜だからだ。
STORY - 2 : 0pt [ Wait ] Bさんは〜が出来る。それは〜だからだ。
STORY - 3 : 0pt [ Wait ] Cさんは〜が出来る。それは〜だからだ。
ストーリーは優先して実現したい事が上にくるように並べ替えを行います。
ttask move story -i [ストーリーのID]
でそのストーリーが先頭に移動します。
また、ttask swap story -f [入れ替え元ID] -t [入れ替え先ID]
で二つのストーリーを入れ替えられます。
$ ttask move story -i 3
$ ttask swap story -f 2 -t 1
$ ttask active
PROJECT - sample : 0pt [ Wait ] サンプルプロジェクトです
Running sprint is nothing
Product backlog :
STORY - 3 : 0pt [ Wait ] Cさんは〜が出来る。それは〜だからだ。
STORY - 2 : 0pt [ Wait ] Bさんは〜が出来る。それは〜だからだ。
STORY - 1 : 0pt [ Wait ] Aさんは〜が出来る。それは〜だからだ。
プロダクトバックログは常に更新され続ける事が良いとされているのですが、 この順番を並び替える機能はまだ足りていないので今後追加して管理しやすくなる予定です。
スプリントの作成
ttask add sprint [スプリントの説明]
でスプリントが追加されます。
ttask sprint
とだけ入力すると、(現在はひとつだけですが)全てのスプリントが一覧表示されます。
$ ttask add sprint "プロジェクト開始、重要度の高い機能をとりあえず作る"
$ ttask sprint
SPRINT - 1 : 0pt [ Wait ] プロジェクト開始、重要度の高い機能をとりあえず作る
新しく追加したスプリントのIDがこれで1
だとわかりましたので、
ttask move story -i [移動させるストーリーのID] -t [移動先スプリントのID]
というコマンドで、
このスプリントに対してプロダクトバックログの優先度の高いユーザーストーリーを移動させます。
$ ttask move story -i 3 -t 1
$ ttask move story -i 2 -t 1
スプリントの詳細を見るためには、ttask sprint -i [見たいスプリントのID]
を入力です。
$ ttask sprint -i 1
SPRINT - 1 : 0pt [ Wait ] プロジェクト開始、重要度の高い機能をとりあえず作る
To Wait at 2016-05-03 17:59:42.212454
STORY - 3 : 0pt [ Wait ] Cさんは〜が出来る。それは〜だからだ。
STORY - 2 : 0pt [ Wait ] Bさんは〜が出来る。それは〜だからだ。
プランニング
ttask add task -i [追加先のユーザーストーリー] -p [見積もりポイント] [タスクの説明]
というコマンドで、
ストーリーに対してタスクを追加して行きます。
$ ttask add task -i 3 -p 3 "機能Xを作る"
$ ttask add task -i 3 -p 1 "機能Yを作る"
$ ttask add task -i 2 -p 2 "機能Zを作るための技術Nについて調べる"
$ ttask add task -i 2 -p 5 "機能Zを作る"
$ ttask sprint -i 1
SPRINT - 1 : 11pt [ Wait ] プロジェクト開始、重要度の高い機能をとりあえず作る
To Wait at 2016-05-03 17:59:42.212454
STORY - 3 : 4pt [ Wait ] Cさんは〜が出来る。それは〜だからだ。
TASK - 1 : 3pt [ Wait ] 機能Xを作る
TASK - 2 : 1pt [ Wait ] 機能Yを作る
STORY - 2 : 7pt [ Wait ] Bさんは〜が出来る。それは〜だからだ。
TASK - 3 : 2pt [ Wait ] 機能Zを作るための技術Nについて調べる
TASK - 4 : 5pt [ Wait ] 機能Zを作る
ちなみに、削除する時はttask delete task -i [削除するタスクのID]
です。
プランニングが完了したので、実際に作業を開始して行きましょう。
ttask run [task/story/sprint] -i [それぞれのID]
でそのタスクの状態がWait
からRunning
に更新されます。
これで、スプリントがRunning
状態になったので、ttask active
コマンドの結果に、
スプリントの状態が表示されるようになりました。
$ ttask run task -i 1
$ ttask run story -i 3
$ ttask run sprint -i 1
$ ttask active
PROJECT - sample : 11pt [ Wait ] サンプルプロジェクトです
Active sprint(s) :
SPRINT - 1 : 11pt [ Running ] プロジェクト開始、重要度の高い機能をとりあえず作る
To Wait at 2016-05-03 17:59:42.212454
To Running at 2016-05-03 18:09:39.96355
STORY - 3 : 4pt [ Running ] Cさんは〜が出来る。それは〜だからだ。
TASK - 1 : 3pt [ Running ] 機能Xを作る
TASK - 2 : 1pt [ Wait ] 機能Yを作る
STORY - 2 : 7pt [ Wait ] Bさんは〜が出来る。それは〜だからだ。
TASK - 3 : 2pt [ Wait ] 機能Zを作るための技術Nについて調べる
TASK - 4 : 5pt [ Wait ] 機能Zを作る
Product backlog :
STORY - 1 : 0pt [ Wait ] Aさんは〜が出来る。それは〜だからだ。
尚、このrun
されたタイミングを元に、今後追加されるタスクが計画内作業なのか、
予想外の追加作業なのか判別する事が出来るので、run
するのはプランニングが終了してからの方が良いです。
実際に、STORY
やTASK
等のステータスが変更されたタイミングも記録されているので、
便利そうな照会機能や集計機能は思いついた時に追加されていくかもしれません。
タスクの完了
タスクが完了した場合ttask finish task -i [タスクのID]
コマンドでステータスをFinished
に変更出来ます。
また、作業中に新たな追加作業が生じた場合はどんどん追加していきましょう。
$ ttask finish task -i 1
$ ttask run task -i 2
$ ttask active
PROJECT - sample : 14pt [ Wait ] サンプルプロジェクトです
Active sprint(s) :
SPRINT - 1 : 14pt [ Running ] プロジェクト開始、重要度の高い機能をとりあえず作る
To Wait at 2016-05-03 17:59:42.212454
To Running at 2016-05-03 18:09:39.96355
STORY - 3 : 7pt [ Running ] Cさんは〜が出来る。それは〜だからだ。
TASK - 1 : 3pt [ Finished ] 機能Xを作る
TASK - 2 : 1pt [ Running ] 機能Yを作る
TASK - 5 : 3pt [ Wait ] 機能Wを作る
STORY - 2 : 7pt [ Wait ] Bさんは〜が出来る。それは〜だからだ。
TASK - 3 : 2pt [ Wait ] 機能Zを作るための技術Nについて調べる
TASK - 4 : 5pt [ Wait ] 機能Zを作る
Product backlog :
STORY - 1 : 0pt [ Wait ] Aさんは〜が出来る。それは〜だからだ。
全てのタスクが完了したら同じ要領でstory
やsprint
もFinished
に変更します。これでスプリント作業完了です。
その他
現在の所スプリント登録時に期間を定める仕組みは無いのですが、一度決めたスプリント期間は尊守し、 それまでに完了しなかった作業は次期スプリントに繰り越すのが良いとされています。
また。実際に作業してみたら不要になったタスク等が出てくる事もあるでしょう。 そのため、以下の二つのステータスが用意されています。
ttask nota -i [ID]
で完了出来なかった事を表すNot Achieved
に更新ttask reject -i [ID]
でタスクやストーリー等を却下した事を表すRejected
に更新
これらもおいおい分析材料に使えるため、上手く活用すると良いでしょう。
ログの照会
ttask log -i [スプリントId]
で、指定したスプリントのStatusの変更ログを照会する事ができます。
$ ttask log -i 1
SPRINT - 1 : 14pt [ Running ] プロジェクト開始、重要度の高い機能をとりあえず作る
To Wait at 2016-05-03 17:59:42.212454
To Running at 2016-05-03 18:09:39.96355
2016-05-03 : Total Finished point = 5
[STORY 7pt Wait at 17:54:41.121922] 2 : Bさんは〜が出来る。それは〜だからだ。
[STORY 7pt Wait at 17:54:52.559651] 3 : Cさんは〜が出来る。それは〜だからだ。
[SPRINT 14pt Wait at 17:59:42.212454] 1 : プロジェクト開始、重要度の高い機能をとりあえず作る
[TASK 3pt Wait at 18:02:53.522256] 1 : 機能Xを作る
[TASK 1pt Wait at 18:06:10.331305] 2 : 機能Yを作る
[TASK 2pt Wait at 18:06:41.003772] 3 : 機能Zを作るための技術Nについて調べる
[TASK 5pt Wait at 18:06:47.726077] 4 : 機能Zを作る
[TASK 3pt Running at 18:09:24.241093] 1 : 機能Xを作る
[STORY 7pt Running at 18:09:31.880485] 3 : Cさんは〜が出来る。それは〜だからだ。
[SPRINT 14pt Running at 18:09:39.96355] 1 : プロジェクト開始、重要度の高い機能をとりあえず作る
[TASK 2pt Finished at 18:10:48.585817] 3 : 機能Zを作るための技術Nについて調べる
[TASK 1pt Running at 18:10:56.600559] 2 : 機能Yを作る
[TASK 2pt Running at 18:11:45.51535] 3 : 機能Zを作るための技術Nについて調べる
[TASK 3pt Finished at 18:11:49.527379] 1 : 機能Xを作る
[TASK 2pt Wait at 18:12:10.619377] 3 : 機能Zを作るための技術Nについて調べる
[TASK 3pt Wait at 18:13:44.597384] 5 : 機能Wを作る
2016-05-04 : Total Finished point = 1
[TASK 1pt Finished at 03:01:38.742591] 2 : 機能Yを作る
[TASK 3pt Running at 03:02:54.303788] 5 : 機能Wを作る
Wait : 7pt
Running : 3pt
Finished : 4pt
Not Achieved : 0pt
Rejected : 0pt
この機能を使えば、現在のスプリントの全体の進行状況やボトルネックになった作業を確認する事ができます。
うまく活用して振り返りに用いると良いでしょう。