Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

タスク管理ソフトTbpgTodoManager-TTM開発/設計

概要

自分自身のTODOを管理するためのソフト=TTM(TbpgTodoManager)をRubyで開発します。
Ruby初心者なので勉強を兼ねて、という意味合いが強い。
あとせっかくなので独りアジャイル手法で開発。

前提

TODOは下記のルールで管理している

  • 1日の作業の区切り文字は黒塗りの四角『■』※この記号は変更可能とする
  • TODO名,見積もり時間(1=30分として記入),作業開始時間+作業終了時間,作業時間の4項目からなる
  • 作業の各要素の区切り文字はパイプ『|』※この記号は変更可能とする
  • TODO名の中に細分化されたタスクがある場合は[]で囲ってカンマ区切りで記載※この記号は変更可能とする
  • 割り込み作業のTODO名は【割込】割り込み内容、と記入
  • 休憩のTODO名は【休憩】と記入

用語定義

マンスリー=1ヵ月分のデイリー。1つのtxtファイルで扱う。todoYYYYMM.txt
デイリー=1日のタスク
デイリープリフィックス=日付の頭に設定する記号
TODOセパレーター=1行のTODOの各項目を分割するセパレーター
TODO=TODOの内容を表す1行のデータ全体
タスク=TODOの名称
細分化タスク=タスク内にもつ細分化された小タスク
細分化タスクエンクロージャー=タスク内にもつ細分化された小タスクを囲む識別子
細分化タスクセパレーター=タスク内にもつ細分化された小タスクを分割するセパレーター
見積=見積もり時間
開始時間=TODOの開始時間
終了時間=TODOの終了時間
実績時間=TODOの実績時間
割込=割り込み作業
休憩=休憩時間

TODO例

■2012/02/06
準備[アクティビティのコミット,メールチェック]|1|2012/02/06 09:01:28-2012/02/06 09:08:34|0時間7分6秒
機能A設計|4|2012/02/06 09:12:13-2012/02/06 09:49:28|0時間37分15秒
機能A製造|4|2012/02/06 09:12:13-2012/02/06 09:49:28|0時間37分15秒
機能Aテスト[テスト仕様書作成,テスト,テスト結果の反映]|4|2012/02/06 09:12:13-2012/02/06 09:49:28|0時間37分15秒
まとめ[1日のTODOを振り返る,翌日繰越]|0.5|2012/02/06 20:05:11-2012/02/06 20:15:13|0時間10分2秒
【割込】部下より質問|XX|2012/02/07 13:00:31-2012/02/07 13:30:37|0時間30分6秒
【休憩】|XX|2012/02/07 15:00:31-2012/02/07 15:30:37|0時間30分6秒
■2012/02/03

アーキテクチャ

TODOの集計 = Ruby
Veiw = HTML5+CSS3
データ = テキストからJSONに変換して使用
現状はWin7のローカルPCだけで完結予定。
外部公開なしで静的なHTMLを作って自分のPC内で確認できれば問題なし。

ユースケース

ユーザーが日常業務を秀丸で記録 = TgpgTodo形式
記録した月次Todoファイルは任意のフォルダに配置
TbpgTodo.rbをスケジューリングして、1日一回TODO結果を最新化する
・入力ファイルのパス、出力先フォルダのパス、出力ファイル名はyamlに設定
・TbpgTodo.rbを単独で実行すればスケジュールとは関係なくTODO結果の最新化が可能

画面設計

View
優先度1
4項目からなるtableで結果を表示する(1項目目は日付)
各列項目でソート可能とする
データはjsonで保持して、1アクションごとにJavaScriptで再描画する
細分化タスクがある場合は各タスクにフォーカスをあてるとポップアップ表示される
各行は奇数行、偶数行で色分けする。色分けの中身は設定可能にする。
割込タスクの行は別色の文字にする。色分けの中身は設定可能にする。
休憩の行は別色の文字にする。色分けの中身は設定可能にする。
優先度2(今回は実装しないが後々欲しい機能)
カレンダーUIの導入
検索機能の導入
タグ機能
集計機能
グラフ機能

画面イメージ(ラフ)