日々是精進。(はてな館)

日々ネットで調べたり、付箋に書き留めたものをアップしています。子育てで中断しながらも、年に数回投稿しています。皆様の恩恵に感謝しつつ。

日々の記録を残しています。皆様の恩恵に感謝しつつ。

ひさびさに機能追加しましたよ!Redmine Issue Templates Plugin v0.3.1を出しました。

みなさんこんにちは!はてなの記事、25件めになります。

実は、コツコツ作っているRedmineプラグイン、あまり「リリースしましたー」というのをブログに書いたことがありません。

だいたいTwitterと本家に投稿するくらいなのですが、今回は久しぶりにテーブル追加が入ったので、記録しておこうと思います。

f:id:akiko-pusu:20190313085529j:plain

手書きのリリースノート

そもそものきっかけ

Redmine Issue Templates pluginは、着手し始めてからもう7年近く!になります。
本家に登録してからのChangelogを眺めると、時間はかけていますが、色々調整していったのがわかります...。

さて、このプラグインは、そもそもはチケットの本文にテンプレートを差し込めるというもの。狙いは「メールで回っているワークフローをチケットに置き換えたい」というところからでした。

最初はヒアリングで「カスタムフィールド追加すればいいかな」と思っていたのですが、

  • メールがフリーフォーマットで柔軟性が高い分、なかなかチケットに置き換えにくいところがある
  • 必ず「カスタムフィールドを追加して」といった依頼が出てくる
  • 全部対応すると、申請系の項目なんて毎回変わったりするので、管理者の作業が追いつかないし、フィールドを作っても、それが適切に利用されるかがわからない
  • トラッカーも増える

という状況になってきました。わたしは面倒臭がりやなのと、この細かい設定を考えていったら、いつまでもチケットベースに乗らないだろうという気がしていたので、とにかく「メールの置き換えなんだからメールの申請フォーマットをそのまま貼り付ける」だけを第一目標にしました。

テンプレは返信側にも必要

さて、今回の機能追加は、「コメント(注記)」に対するテンプレートの適用です。
申請系ではなくて、サポート依頼の場合などは、おそらく最初はお客様からの「助けて」的な短いメッセージが多いかと思います。

そちらの要望を汲み取るために、返信の際に「これこれこういうことを伺いたい」という、サポート側としてのテンプレートがあるかと思います。

また、クロージングの際のメッセージなども、ある程度一定の文ではないでしょうか。

実は、わたしはRedmineは使う前に、サポート用チケットシステムを内製しており、こちらには「テンプレート機能」を実装していました。

また、Redmineのように本文があってコメントが続く...というのではなく、同等のメッセージが続く形式だったので、テンプレートはどの場合でも利用できるようになっていました。とくに「サポート側からお客様への返信の際のテンプレート」を色々と登録していました。

この経験があったので、「コメントにもテンプレは必要だなあ」と、ぼんやりと考えていました。

さて、何年かRedmineと関わって、プラグインを使っていただくことも増えてくると、やはり「返信にテンプレートを使いたい」というリクエスも頂くようになりました。

できなかった理由

作り上げる気力とスキルが足りなかったのが一番だとは思います...。

最初のころは、見よう見まねで作っていたので、Redmine 1系から2系へのバージョンアップだけで、瀕死の痛手でした。

ただし、その時点では職場でも使っていたので、わたしが対応しないと会社のRedmineのバージョンが上げられません。必要に迫られて、プラグインのバージョンアップ対応をしました。

その後少しずつRedmineのリリースサイクルに慣れて行き、なんとか対応しつつ機能を増やしていきました。

それでもやはり失敗は多かったのですが、転職を踏まえてRailsを扱う現場に入ったこと、テストも重視するスタイルに変えたおかげで、Redmine 3.2系から先の対応が、グッと楽になってきました。

この期間に、Rails4, Rails5双方のアプリケーションを見ていたので、Redmine4 (Rails5)対応も早めには取り掛かっていました。

ただし、なかなかRedmine4がリリースされなかったので、大きな変更は加えにくく、この期間での「コメント用テンプレート」の対応は無理でした...。

モチベーションの維持と密接に関わっている

もう一つ、正直な気持ちを書いておきます。
機能の追加は、モチベーションの維持が無いと出来ません。

Redmineを使う現場から離れてもう3年以上経ちますので、使っていない(自分自身が困っていない)ものに対して、「そこまでして改善する必要があるのか?」というモチベーションの維持が大変です。

「本当にこれは使われてるの?」「役に立ってるの?」という声もあまり聞こえてこないし、対応するとなると個人の時間を削ってなので、シビアに考えると割りに合いません。

それでも続けているのは、Redmineそのものへのモチベーションというよりは、小さくても開発を続けることで得られる知識、経験を踏まえてのことだったりします。

たとえば、Rails4 -> 5への移行でなにがあるかを把握する、新しいCIを使ってみる、フロントの動きや見た目を変えてみる、テストの書き方を変えてみる、E2Eテストを試してみるなど。

ソースコードGitHubに置いているので、GitHubとそのエコシステムの連携なども、試してみやすいということもあります。

そうはいっても、v0.3.0を出して、大きめのRedmine4.x対応が終わったので、じつはそろそろ手を引こうとも考えていました。

今回のこころみ

とか言いつつ、今回0.3.1に乗り出したのは、ちょっとした悔しさからです。
まあそういうこともあるのです。

勢いで、今回は以下の対応をいたしました。

機能面:
  • 返信(note もしくはコメント)フィールドに対するテンプレートを利用できるようにする
  • チケットの新規作成だけでなく編集時にも、トラッカーに応じたテンプレートを本文に差し込むことができるようにする
    (ただし、編集時に関しては、デフォルトテンプレートの指定があっても上書きをしてしまうわけにはいかないので、自動適用は行わない動きをしています)
裏側・テストなどの調整:

機能には直結しませんが、裏側も同じく調整しています。今回はNote Template用のテーブル追加もあるので、そのあたりから。

  • テーブル追加
  • テストコードの追加・調整・不要な箇所の削除
  • ネイディブJavaScriptCSSだけで対応できそうなところは、なるべくjQueryを使わずに対応する

また、毎回ですが、合わせてテストコード系の修正が多く入っています。

Rails5になると、minitestもrspecも少し書き方が変わります。
今回はNote Templateのコントローラに対しては、request specを取り入れるなど、ちょこちょこ入れ替えを行なっています。

redmine_issue_templates/note_templates_spec.rb at fbcbb21d002665477f4fd6b8ac9b828b42834804 · akiko-pusu/redmine_issue_templates · GitHub

 コードだけではわかりにくいかと思いますが、プルダウンの表示などは、サーバ側のレスポンスを受けてJSで描画するといったこともあるので、E2Eのテストも差し込んでいます。

https://github.com/akiko-pusu/redmine_issue_templates/blob/fbcbb21d002665477f4fd6b8ac9b828b42834804/spec/features/update_issue_spec.rb

 ここでは、「チケット編集時に編集画面にテンプレート選択のプルダウンが表示されるか」ということと、「同じくチケット編集時の返信フォームに、コメント用テンプレート選択のリンクが表示されるか」のチェックをしています。
(ポップアップしてクリックして適用、というテストも本当は必要なのですが、今回はここまで)

JSでの調整があると、ここまで試さないと(私自身)信用できないというのがそもそもの理由です....。

 

また、こちらに関しては、Qiitaにも関連する記事を上げておきました。


できあがったもの

とりあえず、v0.3.1としてリリースをしています。

今回もDockerで簡単に確認できるように、Dockerfile & docker-compose.yml を添えています。

 

ただし、前回v0.3.0に上げてから今のところissueはそこまで上がってきていない様子を見ると、まだRedmine4系自体に移行しているところが少ないのかな、という気がしています。

フィードバックはもう少し様子を見ますが、1件ご要望をいただいたのでそこまではおそらく対応する予定です。

もちろん、入れてみた際に管理者さんが困らないように、テストもしっかりつけて参ります!合わせて、もう少し必要になる技術があれば、そこもカバーできるように精進するつもりです。

それ以降は、おそらくRedmine本体にテンプレート機能実装のissueが上がっているので、今度こそそちらにお任せして、手を放していけたらなあとは思います^^

とりあえず願っているもの

OSSということでRedmineに関わっていますが、わたしは実のところITS / BTS といったものにこだわりはなく、実際に色々使っていまして、どれも好きです。

「使う人が操作しやすい」「それとなく案内がある」「管理者でなくとも登録できる」「まずはメールを置き換えられる」というところを目指しているので、Redmine本体(もしくはRedmineでなくてもいろんなツール)にそういうものが提供されることが、一番の願いであったりします。