Redmine Pomodoro Timerプラグインりました
はじめに
Redmine Japanの打ち合わせをしているときにポモドーロでやろうよ、ということになり、初めてポモドーロ・テクニックを知りました。そのときはキッチンタイマーでやったのですが、検索してみると、いろいろとアプリもあるようでした。個別のアプリはいろいろあるものの、Redmineと連携できるものは見つからなかったので、自分で作ってみることにしました。
この記事はRedmine Advent Calendar 2024/12/23 の記事です。Advent Calendarにエントリした23日に公開しようと思ってプラグインを作っておりましたが、23日中に紹介記事まで書けませんでしたので1日遅れですみません。
インストールについては上記Githubのページを参照ください。
ポモドーロ・テクニックとは
一般的には25分の作業と短い休息で作業時間と休息時間を分割する。1セットを「ポモドーロ」と呼ぶ。これはイタリア語で「トマト」を意味する言葉で、シリロが大学生時代にトマト型のキッチンタイマーを使用していたことにちなむ。ポモドーロ・テクニックを元に、ポモドーロ・タイマー[1]と呼ばれるタイマーがある。
Redmineポモドーロタイマープラグインのご紹介
概要
このプラグインを使うことで、ポモドーロ・テクニックのタイマーを使ってRedmineのチケットの作業を行い、その作業の記録もRedmineに残すことができます。
使い方
1.Redmineのチケット詳細画面から起動
チケット詳細画面に「Start Pomodoro Timer」というリンクが表示されます。
リンクをクリックすると、ポモドーロタイマーのタブ(別のタブ)が表示されます。
2.Pomodoroタイマーの操作
だいたい直感的にわかるように作ったつもりです。
- 作業分類を選択。作業分類はRedmineの管理画面で登録されているものです。
- 開始のアイコンクリックで25分のタイマーカウントダウンが始まります。
- 一時停止のアイコンクリックでタイマーが一時停止、再開は再度開始のアイコンをクリックします。
- スキップのアイコンクリックで現在実行中のタイマーをスキップします。
- 終了のアイコンクリックでタイマーを停止し、初期画面に戻ります。
3.Workタイマー満了(またはWorkタイマー中にスキップした場合)
- コメント入力のポップアップが表示されます。
- タイマー終了前に入力していたコメントはポップアップに引き継がれます。
- 「登録」で、時間、作業ユーザ、コメントがRedmineに登録されます。
- 「作業継続」で、タイマー画面に戻ります。
- 「キャンセル」で、このポモドーロはキャンセル。時間登録せずに次のタイマーになります。
- 登録する時間は0.5時間(固定)です。
4.Restタイマーの開始
- ポップアップで「登録」「キャンセル」すると、Restタイマー(5分)が自動的にスタートします。(「継続」の場合は元のタイマーを継続)
5.Restタイマーの満了(またはRestタイマー中にスキップした場合)
- 次のWorkタイマー(25分)の開始準備画面になります。
工夫したポイント
(ユーザ観点)
- タイマー操作やタイマー満了時には効果音が鳴ります。これにより実際やっている作業に集中していても音でタイマー満了に気づくことができます。
- タブのタイトルにもタイマー時間が表示されているので、タブを切り替えなくても残り時間がわかります。
- チケットに入力している予定工数と、これまでの作業時間計、作業の履歴をタイマー画面の下部に表示するようにしました。
(技術観点)
- タイマーの実装はJavaScriptで、クライアントで動作しています。JavaScriptからRedmineへの作業時刻の書き込みは、当初Rest APIを使おうかとおもいましたが、APIキーをJavaScriptに引き継ぐ必要があり、セキュリティ上問題があります。対策として、プラグイン独自の時刻登録用のコントローラーを用意してサーバにデータを送って反映しています。
今後の改善/機能追加について
以下のようなことができるといいかなと思っております。
他にもご意見あればいただければ検討しようとおもいます。(可能な範囲で)
- 25分/5分以外のタイマーにも対応できるようにする
- 0.5時間の固定時刻の書き込みか、実作業時間の書き込みかを選べるようにする
- 効果音を違うパターンのものも用意して選択できるようにする
- (現在のところ日本語のみだが)国際化対応する。 等
おわりに
Redmineはだいぶ使い込んでおりますが、今回初めてプラグイン作成をやってみました。ChatGPTと壁打ちしながら作りました。もしなにか気が付いてない問題等ありましたら、ご指摘いただければ幸いです。
生成AI、本当にすごいですね。生成AIがなかったら、プラグインを自分で作るところまでは無理だったとおもいます。知らなかったことも、こうやればできます、みたいなレベルでサンプルコードを書いてくれますし、結果として自分の勉強にもなり、楽しめました。引き続き、いろんなことにトライしていきたいとおもいます。
プラグイン、気にいっていただけたら、Githubに☆いただけるとうれしいです。よろしくおねがいします。
Discussion