🍅

Redmine Pomodoro Timerプラグインりました

2024/12/24に公開

はじめに

Redmine Japanの打ち合わせをしているときにポモドーロでやろうよ、ということになり、初めてポモドーロ・テクニックを知りました。そのときはキッチンタイマーでやったのですが、検索してみると、いろいろとアプリもあるようでした。個別のアプリはいろいろあるものの、Redmineと連携できるものは見つからなかったので、自分で作ってみることにしました。

この記事はRedmine Advent Calendar 2024/12/23 の記事です。Advent Calendarにエントリした23日に公開しようと思ってプラグインを作っておりましたが、23日中に紹介記事まで書けませんでしたので1日遅れですみません。

https://github.com/Mattani/redmine_pomodoro_timer

インストールについては上記Githubのページを参照ください。

ポモドーロ・テクニックとは

一般的には25分の作業と短い休息で作業時間と休息時間を分割する。1セットを「ポモドーロ」と呼ぶ。これはイタリア語で「トマト」を意味する言葉で、シリロが大学生時代にトマト型のキッチンタイマーを使用していたことにちなむ。ポモドーロ・テクニックを元に、ポモドーロ・タイマー[1]と呼ばれるタイマーがある。

Wikipediaより引用

Redmineポモドーロタイマープラグインのご紹介

概要

このプラグインを使うことで、ポモドーロ・テクニックのタイマーを使ってRedmineのチケットの作業を行い、その作業の記録もRedmineに残すことができます。

使い方

1.Redmineのチケット詳細画面から起動

チケット詳細画面に「Start Pomodoro Timer」というリンクが表示されます。

チケット詳細画面

リンクをクリックすると、ポモドーロタイマーのタブ(別のタブ)が表示されます。

2.Pomodoroタイマーの操作

だいたい直感的にわかるように作ったつもりです。

  • 作業分類を選択。作業分類はRedmineの管理画面で登録されているものです。
  • 開始のアイコンクリックで25分のタイマーカウントダウンが始まります。
  • 一時停止のアイコンクリックでタイマーが一時停止、再開は再度開始のアイコンをクリックします。
  • スキップのアイコンクリックで現在実行中のタイマーをスキップします。
  • 終了のアイコンクリックでタイマーを停止し、初期画面に戻ります。

Pomodoroタイマー画面

3.Workタイマー満了(またはWorkタイマー中にスキップした場合)

  • コメント入力のポップアップが表示されます。
    • タイマー終了前に入力していたコメントはポップアップに引き継がれます。
    • 「登録」で、時間、作業ユーザ、コメントがRedmineに登録されます。
    • 「作業継続」で、タイマー画面に戻ります。
    • 「キャンセル」で、このポモドーロはキャンセル。時間登録せずに次のタイマーになります。
  • 登録する時間は0.5時間(固定)です。

コメント入力ポップアップ

4.Restタイマーの開始

  • ポップアップで「登録」「キャンセル」すると、Restタイマー(5分)が自動的にスタートします。(「継続」の場合は元のタイマーを継続)

Restタイマー

5.Restタイマーの満了(またはRestタイマー中にスキップした場合)

  • 次のWorkタイマー(25分)の開始準備画面になります。

工夫したポイント

(ユーザ観点)

  • タイマー操作やタイマー満了時には効果音が鳴ります。これにより実際やっている作業に集中していても音でタイマー満了に気づくことができます。
  • タブのタイトルにもタイマー時間が表示されているので、タブを切り替えなくても残り時間がわかります。
  • チケットに入力している予定工数と、これまでの作業時間計、作業の履歴をタイマー画面の下部に表示するようにしました。

(技術観点)

  • タイマーの実装はJavaScriptで、クライアントで動作しています。JavaScriptからRedmineへの作業時刻の書き込みは、当初Rest APIを使おうかとおもいましたが、APIキーをJavaScriptに引き継ぐ必要があり、セキュリティ上問題があります。対策として、プラグイン独自の時刻登録用のコントローラーを用意してサーバにデータを送って反映しています。

今後の改善/機能追加について

以下のようなことができるといいかなと思っております。
他にもご意見あればいただければ検討しようとおもいます。(可能な範囲で)

  • 25分/5分以外のタイマーにも対応できるようにする
  • 0.5時間の固定時刻の書き込みか、実作業時間の書き込みかを選べるようにする
  • 効果音を違うパターンのものも用意して選択できるようにする
  • (現在のところ日本語のみだが)国際化対応する。 等

おわりに

Redmineはだいぶ使い込んでおりますが、今回初めてプラグイン作成をやってみました。ChatGPTと壁打ちしながら作りました。もしなにか気が付いてない問題等ありましたら、ご指摘いただければ幸いです。

生成AI、本当にすごいですね。生成AIがなかったら、プラグインを自分で作るところまでは無理だったとおもいます。知らなかったことも、こうやればできます、みたいなレベルでサンプルコードを書いてくれますし、結果として自分の勉強にもなり、楽しめました。引き続き、いろんなことにトライしていきたいとおもいます。

プラグイン、気にいっていただけたら、Githubに☆いただけるとうれしいです。よろしくおねがいします。

GitHubで編集を提案

Discussion