Redmine issue assign notice plugin の v2.1.0 をリリースしました

チケットの担当者が変わったときに、SlackやRocket.Chat、Teams、Google Chat、Mattermostなどに通知するプラグイン、Redmine issue assign notice pluginのv2.1.0をリリースしました。

Teamsでもメンションできるようになりました。

f:id:onozaty:20220201232714p:plain

TeamsのIncoming Webhooksでは、元々メンションができなかったのですが、Adaptive Card形式で送ることが可能になったため、それを利用するようにしました。

Assign Notice ID には、UPNを入れる形となります。
会社のドメインで運用しているようなTeamsならば、そのままログイン時のメールアドレスと同じだと思いますが、Teams Free(Classic) で作った組織だと、UPNでのドメインとログイン時のメールアドレスが異なるので注意が必要です。(Azure Portal の Azure AD でUPNが何になっているか要確認)

2021年音楽振り返り

2020年に引き続き、2021年に聴いた音楽を振り返ってみます。
アーティストをさん付けで書くかいつも迷う(Twitterとかでも付けたり、付けなかったり混在してしまう)のですが、すいません、ここでは敬称略で、、

Spotifyの2021まとめは下記のような感じでした。
Spotifyで聴いた時間は89,356分ということで、2020年以上に音楽聴く時間が増えました。

f:id:onozaty:20220122223649j:plain

  • トップアーティスト
    1. クボタカイ
    2. YOASOBI
    3. Vaundy
    4. Rin音
    5. eill
  • トップソング
    1. 春にふられて (Rin音、クボタカイ)
    2. 深海 feat.諭吉佳作/men (fishbowl、諭吉佳作/men)
    3. 地球儀 (Aimer, Vaundy)
    4. きらり (藤井風)
    5. SPOTLIGHT (eill)

クボタカイ

2021年になって良く聴くようになったのはクボタカイです。
たくさん聴きました。

f:id:onozaty:20220122225526j:plain

心地よい曲が、どんなシチュエーション(運転中、仕事中など)にもあうので、ついついヘビーローテーションしていました。
どの曲も良いのですが、、その中でもTWICE、せいかつ、インサイダーあたりが大好きです。


www.youtube.com

素敵な曲をたくさんありがとうございます。

ROOFTOP

Rin音、クボタカイ、asmi、A夏目、、と気が付いたら好きなアーティストがROOFTOP所属アーティストだらけとなりました。

ROOFTOP所属アーティストでのライブがあったら、一度でたくさん楽しめるな、、って期待しています。

eill

2020年に一番聴いていたeillですが、すぐに有名になるのでは、、って2020年のまとめに書いたとおり、いろんな場所で耳にする機会が増えた気がします。
2021年は、「ここで息をして」、「hikari」、「花のように」、「23」 と、良い曲が連続でリリースされました。23は今一番聴いている曲です。


www.youtube.com

メジャー1stアルバムがもうすぐ出るので楽しみにしています!

諭吉佳作/men

「からだポータブル」、「放るアソート」と2つのEP同時リリースでとうとう2021年デビューです。おめでとうございます。
Spotifyでも聴ける曲が増えてうれしいです。

「ムーブ」が大好きな曲です。音楽と声がリズミカルに流れていきながら、途中で転調して、、諭吉さんの声自体が楽器の一つみたいな感覚におちいることがあります。


www.youtube.com

「深海 feat.諭吉佳作/men」は2021年良く聴いた曲になりましたが、この曲のおかげで fishbowl 知りました。ヤマモトショウさんの作る曲がどれも良いです。

YOASOBI

出す曲どれも良い曲で、2021年はたくさん曲がリリースされたのもあって、気が付いたら良く聴くアーティスト上位にあがっていました。
Spotifyのプレイリストの日本Top50、Top Hits Japan、Tokyo Super Hits!、Teen Cultureあたりを良く聴くのですが、YOASOBIは1年間常に数曲入っていた気がします。

YOASOBIほんとすごい。

Vaundy

どの曲もかっこいいです。
その中でもAimerとの「地球儀」がすごく良くて、2021年は聴きまくっていました。


www.youtube.com

年末にリリースされた「milet×Aimer×幾田りら - おもかげ (produced by Vaundy) 」も素晴らしい曲でした。
AimerとVaundyのコラボはまた別の曲でも聴きたいです。

藤井風

「きらり」ほどドライブにマッチした曲は無いと言うくらい、ドライブ中に聴きたくなる曲でした。車中で家族で良く歌いました。


www.youtube.com

YouTubeに投稿されている動画をついつい遡ってみてしまいまいしたが、、藤井風のキャラクター自体が個性的でとても好きです。
個性があふれんばかりの曲も多いと思いましたが、「きらり」はある意味個性を抑えめにした曲なのかなと思いました。

2022年に向けて

早くライブでアーティストと一緒に歌える状態になって欲しいです。
今年こそは、、

Redmine: View customize plugin の v3.0.1 をリリースしました

View customize plugin の v3.0.1 をリリースしました。

DBマイグレーションが戻せなくなっていたのを直しています。
前田さんからPull Requestいただきました。ありがとうございます。

一部のユーザでしか管理者を作成できないようにする(Redmine View Customize Plugin)

下記の問い合わせがあって作ったサンプルです。

一部のユーザでしか管理者を作成できないようにするといったものです。
許可されたユーザ以外だと、Administratorのチェックボックスを無効にします。

https://github.com/onozaty/redmine-view-customize-scripts/raw/master/examples/0044.allow_only_some_users_to_create_admin/user2.png

コード内容は下記にまとめています。

ステータスを終了から変更した際に期日をクリアする(Redmine View Customize Plugin)

下記の問い合わせがあって作ったサンプルです。

ステータスを終了から他のステータスに変えた時に、期日をクリアするといったものになります。

https://github.com/onozaty/redmine-view-customize-scripts/raw/master/examples/0042.clear_due_date_when_status_changed_from_closed/result.gif

コード内容は下記にまとめています。

指定した値をファイルに埋め込むCLIのツール(emv)を作りました

指定した値をファイルに埋め込むemvというCLIのツールをGoで作りました。

ビルドツール自体にGitのタグなどを利用してバージョン番号を埋め込むといった方法が提供されているものも多いですが、それだとカバーできないようなパターンをカバーしたくて作っています。

利用方法

emv -c project/emv.json 1.0.2
Usage: emv [-c CONFIG] [-t TARGET] VALUE1 ...

Flags
  -c, --config string   Config file path. (default "emv.json")
  -t, --target string   The base directory to search for target files. If not specified, it is the same directory as the config file.
  -h, --help            Help.

設定ファイルに埋め込みのためのルールを記載し、そのルールに従って、CLIでのコマンドライン引数として指定されたものを埋め込みます。

例として下記のような設定を用意します。ファイル名はemv.jsonとしておきます。

{
  "values" : [
    { 
      "name" : "version"
    }
  ],
  "targets" : [
    {
      "files" : [
        "example.properties"
      ],
      "embeddeds" : [
        {
          "pattern" : "version=[0-9\\.]+",
          "replacement" : "version={{.version}}"
        }
      ]
    }
  ]
}

valuesで入力値(emvの引数として指定)の定義を行っています。
nameで入力値に対して名前(上記例だとversion)を付与しています。この名前を使って、replacementで入力値を参照することができます。

targetsで対象となるファイルや埋め込み内容を定義しています。
filesはターゲットとなるファイルです。相対パスとして指定した場合、デフォルトでは設定ファイルと同じディレクトリを基準とします。-tオプションで基準とするディレクトリを変更することができます。

embeddedsで埋め込むコンテンツを定義します。
patternは正規表現になります。patternreplacementの値で置き換えます。
replacementには、{{.name}}のように入力値を埋め込むことができます。Goのtext/templateを利用しています。

filesで指定しているexample.propertiesは下記のような内容です。

version=1.1.2

emv.jsonexample.propertiesが配置されているフォルダで実行します。
2.0.0を埋め込みます。

$ emv 2.0.0
Embedded values:
  version=2.0.0
Files: ([U] Updated, [-] None)
  [U] example.properties

example.propertiesは下記のようになりました。

version=2.0.0

入力値の一部を利用する

入力値はpatternで正規表現の名前付きキャプチャを利用すると、別の名前として切り出すことができます。

  "values" : [
    { 
      "name" : "version",
      "pattern" : "^(?P<major>[0-9]+)\\.(?P<minor>[0-9]+)\\.(?P<revision>[0-9]+)$"
    }
  ],

たとえば上記の設定で2.1.2と入力した場合、下記のような名前と値のペアになります。

  • version : 1.2.3
  • major : 1
  • minor : 2
  • revision : 3