見出し画像

Node.js meets Redmine (第19回 Redmine大阪 LT発表内容)

このノートは、第19回 Redmine大阪 のLTで発表した内容を編集したものです。

それでは、よろしくお願いいたします。

CM

さっそくですが、宣伝です。
足羽川永都(あすわがわえいと)・著、「Redmineで始める異世界人心掌握術」、Kindleストアで絶賛発売中です。チケットの発行で魔法が発動する世界に迷い込んだSEの藤倉紅子が、Redmineを使って魔族をプロジェクトマネジメントする話です。99円という、大変お求めやすい価格となっておりますので、是非とも読んでみてください。

Node.js meets Redmine

では、ここから本題です。
足羽川永都というペンネームで小説を書いたりしていますが、普段は会社員をやっています。また、connpass や GitHub などでは'8amjp'というアカウントで活動しております。ちなみにこの8amjpの由来は'8am.jp'というドメインのサイトを運営しているからで、このサイトはもちろんさくらのレンタルサーバーで動いております。さくらインターネットさんにはもう10年以上お世話になっております。

で、その普段の業務では、ある地方自治体の業務システムの運用維持をやっていまして、その業務を管理するためのツールを探していたところRedmineに出会い、深く勉強するためにファンタジー小説を書いてみたところ、このRedmine大阪のスタッフの方々からお誘いを受けてLTすることになった、というのが前回までの話です。もう1年前の話です。今回はそれ以降の話で、本格的に運用を開始したのですが、今までの業務とのギャップを埋めるためにどのような工夫を行ったのか、についてお話します。なお、昨年末のアドベントカレンダーでも書きましたが、その内容の詳細となります。

エクセル入出力ツール

さて、Redmineへの移行にあたり、最もネックとなったのが、いわゆる「エクセル帳票」です。サポートデスクへの質問票や作業計画などをエクセルの帳票に記入してメールでやり取りする、というフロー、本当はなくしたいのですが、今は時期尚早です。なので、エクセル帳票の内容を読み取ってチケットとしてインポートする、逆にチケットの内容をエクセル帳票としてエクスポートするという仕組みは必須でした。
これをどうやって実装しようかと考えたのですが、Redmineには強力なAPIが備わっているので、自分の得意なJavaScriptを使って、データをAPI経由でやり取りするWebアプリを作れば良い、と思いつきました。node.jsという仕組みを利用すれば、フレームワークを使ってWebアプリを簡単に作成できたり、また便利なライブラリが揃っているので、APIで取得したエクセルファイルを読み込んでゴニョゴニョしてJSONとしてPUTする、などという機能も比較的簡単に作ることが出来ます。

いろいろ作りました

これに気を良くした私は、他のツールも全部JavaScriptで作りました。
まずは、バックアップやメール受信スクリプトの定期実行。だいたいcronでやるものですが、JavaScriptだってできます。それから、MattermostとCTIとの連携。そして、RSSからのチケット自動起票。期日の近いチケットをMattermostに自動投稿。このようなJavaScript製のWebアプリをRedmineと共に運用しています。

Redmine Dashboard

最後に、ダッシュボードの紹介です。
Redmineの画面は、どうしても地味だったり、必要な情報にたどり着くまでがちょっと面倒だったりします。職場の人たちにRedmineに興味を持ってもらうためには、いい感じで目を引くダッシュボードが必要だと考えました。
ダッシュボードは、CoreUIというダッシュボードのテンプレートを改良して使っています。内容としては、「開始日」「期日」「作成日」が今日であるチケットの件数と一覧を常に表示しています。これをRedmineへの導線とすることで、興味を持ってもらうように工夫しています。

このように、Redmineの持っている強力なAPIを使うことで、自分の得意な方法で機能追加ができます。参考にしてください。以上です。

あとがき

なんだか予想以上に緊張してしまって、特に後半の内容は全然伝わってなかったかと思います。すみません……

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
4
福井市に住むSE・プログラマ。Kindleストアで技術系異世界ファンタジー小説「Redmineで始める異世界人心掌握術」発売中。 https://8am.jp/
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。