Happy SE Life

IT業界で働いている人のブログです

Redmineかんばんプラグインの紹介

おはようございます。

 早いもので、このRedmineプラグインを公開して1年が経ちました。さまざまな方から応援のメッセージをいただき、機能を改善してきました。感謝いたします!

 開発がひと段落したので、どのようなものか、ここで紹介したいと思います。これは、かんばんボードを実現するプラグインです。世間的には、タスクボードやWIPボードと呼ぶこともあります。

 以下にスクリーンショットで紹介していきます。
(2020/2/8 追記)英語に対応しました。

1.チケットをドラッグ&ドロップで状態遷移できます。

f:id:it-managers-life:20190324105519p:plain

ドラッグ&ドロップ

 マウスを使って、チケットを移動すると状態を変更できます。

(2020/1/26 追記)担当者別にレーン分けする改修をしましたので、ドラッグ&ドロップで、担当者の変更も可能になりました。画面イメージは以下になります。 

f:id:it-managers-life:20200126101136p:plain

担当者のレーン分け

(2020/1/26 追記)ドロップ時に同時にコメントを保存できるようになりました。

(2020/8/2 追記)ドロップ時の動作は設定でoffにすることもできます。

f:id:it-managers-life:20200126160126p:plain

コメント投稿ダイアログ

2.標準のコンテクストメニューが使えます。

f:id:it-managers-life:20190324105821p:plain

コンテクストメニュー

 Redmine標準の機能をそのまま使えるようにしています。いちいち個別チケットの画面に遷移しなくて良いので便利です。 

3.未アサインチケットを表示できます。

f:id:it-managers-life:20190324105956p:plain

アサインのチケット表示

 これが出来るプラグインが見つからなかったのが、今回、自分で作ろうと思ったきっかけです。未アサインのチケットが同画面にないと、担当者に割り当てる時に一覧画面に移動する必要があり、とても面倒です。

 開発メンバーが、未アサインのチケットを積極的に引き取ってくれるようになれば、いいかなと思っています。 

4.各種フィルタがあります。

f:id:it-managers-life:20190324110322p:plain

各種フィルタ

 更新日、終了日でチケットの表示数を調整できます。グループとプロジェクトも選択でき、グループを自分の開発チーム、プロジェクトを全体にして、全体状況を俯瞰する使い方も想定しています。

 表示するフィールド(ステータス)も任意に選択できます。 

(2020/5/16 追記)バージョンの切り替えに対応しました。

(2020/8/9 追記)期日のフィルターを追加しました。

(2022/9/7 追記)トラッカーのフィルターを追加しました。

5.サイドバーに履歴表示とコメント投稿ができます。

f:id:it-managers-life:20190324111049p:plain

履歴表示とコメント投稿

 チケットの個別ページを開かずにコメントの確認ができます。短文であれば十分読めるかと思いますし、コメントも投稿できます。 

6.WIP制限超過の警告が出せます。

f:id:it-managers-life:20190324111227p:plain

WIP制限超過

 3チケット以上/人で警告表示できます。チケット上限数はフィルタで設定できます。マルチタスクに陥らない様に、気を付けることができます。

7.カードの種類が4種類から切り替えができます。(2021/1/7 追記)

f:id:it-managers-life:20210107065620p:plain

期限日との差

f:id:it-managers-life:20210107065705p:plain

予定工数

f:id:it-managers-life:20210107065726p:plain

最小サイズ

 カードの種類が4種類から切り替えが可能です。後述のキーボードショートカットが使用できます。最小サイズでは、チケットやメンバーが多い場合に1画面内の表示量を増やすことができます。

(2022/9/7 追記)作業工数表示が加わり4種類になりました

8.キーボードショートカットに対応しました。(2021/1/7 追記)

 o : ログインしているユーザーのレーンのみ表示します。
 e : プロジェクトメンバー全員のレーンを表示します。
 d+u : 期日のフィルターを解除します。
 d+o : 期日のフィルターを期限切れにします。
 d+t : 期日のフィルターを本日にします。
 d+w : 期日のフィルターを今週にします。
 n : カードの種類を期日との差に変更します。
 k : カードの種類を予定工数に変更します。
 p : カードの種類を作業工数に変更します。(2022/9/7 追加
 s : カードの種類を最小サイズにします。
 h : ショートカットのヘルプを表示します。

最後に。

 タスクボードのプラグインは、沢山存在します。他のプラグインも参考にさせて頂きながら、自分のチームに合わせてカスタマイズしていきたいと思っています。

  ご意見・ご感想をいただけましたら開発の励みになります。ではまた!

(2019/10/27追記)コードを公開しました。
(2022/9/7 追記)寄付金の受付を始めました。

github.com

2021年の新作プラグインです。かんばんと組み合わせてお使いいただけます。
ご興味があれば、ぜひご覧ください。

it-managers-life.hatenablog.com

Kindleのノートブックをnotionに取り込むツール作った

こんばんは。

天気が悪い日が続いて嫌ですね。

今日は自宅で個人開発です。

前書き

仕事でnotionにふれる機会が増えて、もっと上手に使えないかなと思っていたりしています。そんな折、notion APIが公開されたそうなので、じゃあ触ってみようと思いました。題材に悩みましたが、読書で使っているkindleでノートブックを作るのに凝っているので、それをnotionの読書リストに取り込んでみようと思います。

開発環境

  • kindle
    • iOS: 6.43
    • Amazon Fire: 14.43.100(1.3.243053.0)
  • notion API beta
    • 2021-05-13
  • PHP
    • 7.3.24
  • curl
    • 7.64.1

ツールの入手とインストール方法

github.com

notionの準備

空のページにTableを配置して、プロパティにAutours(テキスト)、Created time(日付)を追加します。下図を参考にしてください。ShareからIntegrationを設定してください。

f:id:it-managers-life:20210619211907p:plain

DBを準備

ノートブックの準備

下図はiPhoneのKindleのイメージです。↑からエクスポートします。htmlファイルを添付してメール送信することができます。

f:id:it-managers-life:20210619212253p:plain

kindleノートブックをエクスポート

notionにインポート後

インポートするとタイトル、著者名、追加日が挿入され、ノートブックのページが作成されます。

f:id:it-managers-life:20210619212628p:plain

インポート後のDB

f:id:it-managers-life:20210619212701p:plain

ノートブックの画面

後書き

notionのAPIはベータ版のため、文字の装飾やdividerなどが一部使えず、あまり美しいページにはできなかったのが残念でした。部分的に有償になるのでしょうか?しりませんが、ただ簡単にページを作ったり、DBに追加したり、文字入力したりできることはわかりました。jsonを扱うスキルがないのでPHPを使いましたが、どんな言語からでも簡単に利用できるものです。

ノートブックをGmailにhtmlで送信した時点で検索できるから、notionで管理いらないとか、notionにもhtmlのインポート機能あるよねとか、は十分理解しておりますです、はい。notionが大好きで、DB管理したい方はぜひお試しください。

 それでは、また。

極アウトプット

[本] 極アウトプット

読書日:2021/5/9

所要時間:3時間

  1. きっかけ

    樺沢先生と和田秀樹先生のYouTubeライブを見て本書を知りました。本動画は大変興味深く拝見しました。悩める10代の若者を対象に、人生をより良くするためのポイントはアプトプットにあり、それはコミュニケーションの改善にも繋がるというお話です。私の娘に読ませたいと思い購入して、まず自身で読んでみました。

  2. 感想

    なぜアウトプットが重要なのかを平易な文章で丁寧に説明していて、理解しやすいです。アウトプットは、決して難しいことでなく誰でもできる様になることを説き、上達のコツや、楽しみながら取り組むコツなどを織り交ぜつつ、ポジティブな気持ちで読み進められました。樺沢先生らしさが出ています。

    書く、行動するの章は、学校では(自信がないですが)教えてくれないのではないかなと思います。少なくとも私が中高生の頃にそんな話をする先生はいなかったように記憶しています。本は沢山読んだ方がいいよーという大人は沢山いました。曰く、読むまでだとインプット教育。
    SNSとの付き合い方、ネット時代の正しい情報収集方法にも、少し言及があります。良いと思いました。
    最終章では、アフターコロナの見方も示していて良かったです。3時間程度で読めて、10代の自己成長を応援する良書と思いました。

  3.  気づき

    私が社会人1年目で大きく躓いたのは、こういう訓練ができてなかったことが原因かと理解できます(知ってた)。「君たちは、どうやら大学受験は合格できた様だが、全然文章書けないから、俺が特訓してやる」と豪語する教授が1人だけ当時いて、授業のたびに小論文書かされたことを思い出しました。確かに酷かった。
    行動から学ぶ話もあって、私らITの社会人の世界では振り返りとか言いますが、本書ではフィードバック例として載っています。個人的にはYWT手法がポジティブな印象で良いと思いました。

  4. やること

    娘に薦めたいと思います。
    私は3行ポジティブ日記を書いていますが、日記を書く際のネガティブな感情の処理に困っていたので「賢者のワーク」を自身のToDoにしたいと思う。

レッツ・ポジティブ・シンキング!

M1 MacBook Air - 4大ウェブブラウザ速度比較

目次

目的

  • M1 native バージョンの速度比較

前提条件

ブラウザ バージョン
Safari 14.0.2 (16610.3.7.1.9)
Chrome 88.0.4324.96(Official Build)(arm64)
Firefox 84.0.2 (64 ビット)
Edge 88.0.705.49 (公式ビルド) Beta (64 ビット)
Edge 88.0.705.68 (公式ビルド) (64 ビット)
  • H/W:MacBook Air (M1, 2020)
  • チップ:Apple M1
  • メモリ:8 GB
  • OS:macOS Big Sur 11.2.1

JetStream2

  1. Safariが他と大きく差をつけている。
  2. ChromeとEdgeは同スコア、Safariより50ポイント下となった。
  3. Firefoxは、Safariより110ポイント下となった。
ブラウザ Score
Safari 14 237
Chrome 88 187
Firefox 84 120
Edge 88ベータ 182
Edge 88 186

browserbench.org

Speedometer2.0

  1. Safariが1番で、Chrome、Firefox、Edgeは同列となった。
  2. テストの性格から実際のブラウジングにおいて実感する差はないと思われる。
ブラウザ Score
Safari 14 228
Chrome 88 210
Firefox 84 202
Edge 88ベータ 197
Edge 88 198
  • スコアが大きいほど良い。スコアの詳細は を参照。

browserbench.org

MotionMark1.1

  1. Safariが圧倒的に高スコア。
  2. ChromeとEdgeは同程度のスコア。Firefoxはその半分のスコア。
  3. 実際のブラウジングの体感にどの程度影響するのか今後研究したい。
ブラウザ Score
Safari 14 1551
Chrome 88 597
Firefox 84 279
Edge 88ベータ 566
Edge 88 566
  • スコアが大きいほど良い。スクリーンサイズは Medium screen (laptop, tablet) と認識。
  • スコアの詳細は下記リンクのaboutを参照。

browserbench.org

YouTube 4K動画再生時のCPU使用率

  1. SafariがCPUを一番使わない。
  2. EdgeのCPU使用率だけが異常に高い。
  3. CPU使用率だけでは、バッテリーの持ちは評価できない。今後、他の方法も検討したい。
ブラウザ user sys idle
Safari 14 2.4% 2.3% 95.4%
Chrome 88 5.1% 3.8% 91.2%
Firefox 85 6.1% 5.6% 88.4%
Edge 88 23.1% 3.5% 73.5%
  • topコマンドをバックグラウンドで実行して計測(3秒毎)。5分間の平均値。

www.youtube.com

付録:全データ

JetStream2

Safari 14
211.719
241.377
239.579
234.717
238.117

Chrome 88
155.596
186.262
187.794
188.495
188.090

Firefox 84
118.395
120.600
121.814
120.607
108.838

Edge 88ベータ
177.497
167.932
185.245
184.887
184.210

Edge 88
186.261
185.944
187.241
186.669
154.745

Speedometer2.0

Safari 14
224 ±9.9
229 ±6.0
228 ±4.2
229 ±3.4
228 ±3.9

Chrome 88
209.7 ±1.6
210 ±2.3
210.0 ±1.5
209.9 ±1.9
212 ±3.1

Firefox 84
198 ±2.8
203.4 ±1.6
201.0 ±1.6
203.3 ±1.9
203 ±3.0

Edge 88ベータ
197.6 ±1.5
197.6 ±1.7
195.4 ±1.5
197.3 ±1.6
197 ±2.9

Edge 88
198.2 ±1.3
197.8 ±1.4
196.9 ±1.2
197.8 ±1.3
196 ±1.1

MotionMark1.1

Safari 14
1578.09 ±14.59%
1563.88 ±14.67%
1131.93 ±20.91%
1523.49 ±21.29%
1565.21 ±16.12%

Chrome 88
594.83 ±4.23%
601.05 ±4.50%
589.03 ±2.76%
594.65 ±2.97%
600.55 ±3.26%

Firefox 84
304.43 ±10.32%
329.47 ±7.60%
248.25 ±8.96%
277.56 ±10.74%
253.55 ±12.48%
255.00 ±9.43%

Edge 88 ベータ
563.57 ±4.56%
565.52 ±2.93%
565.10 ±3.09%
568.95 ±2.97%
567.06 ±3.13%

Edge 88
562.79 ±5.77%
559.33 ±4.40%
566.41 ±4.81%
569.73 ±3.97%
572.40 ±3.94%

更新履歴

  • 2021/01/24:新規作成
  • 2021/02/24:Edge 88 正式リリース版データを追加

Redmine着地プラグインの紹介

 明けましておめでとうございます。今年も皆様にとって、いい年になりますように!

 さて、今年の最初のチャレンジです。正月休みに作成したRedmineプラグインを公開したいと思います。

 このプラグインは、バージョンの全てのチケットが完了する日を推定して表示します。バーンダウンチャートかEVMでいいよね、と言うお話がありますが、まあ、その通りです。。私の興味なのかもしれませんが、メンバーの一人ひとりが抱えている進み・遅れ日数を知りたいことがあるんですよね。メンバーの報告を信用していない訳ではないですが、裏付けも欲しいです。また遅れている人がわかれば、早期にサポートできる。この辺りが作成に至った理由です。イメージとしては、バーンダウンチャートが個人レベルで見れる感じでしょうか。

 個人の最初のチケットの開始日と最後のチケットの期限日の間で、その人の総予定工数で三角形を作って計算をしています。大胆に単純化しているので、-1日、+1日などと細かく追っても正直なところ意味がないと思いますが、異常な状況の発見くらいには、使えるのではないかと思ったりしています。スケジュールに偏りがあったりする場合は、正統なEVMを使った方が良いとは思いますが、それは他にいくらでもプラグインがあるので、真似しても仕方がないかと思いました。また、この画面をメンバーに見せるかどうかは是非がありそうです。それはPMの判断かなと思っています。

 実戦経験はございません。興味を持ってくださって、挑戦される方がいらっしゃいましたら、サポートさせていただきます。インストール方法は、下記のGitHubのページを参考にしてみてください。フィードバック頂けると喜びます。

 以下に簡単に説明します。

日本語の画面

f:id:it-managers-life:20210106213440p:plain

日本語の画面

各項目の説明

バージョン詳細の表

  • バージョン名:これは、バージョンの名前です。
  • 開始日:これは、バージョンに含まれているチケットの最も早い開始日です。
  • 期日:これは、バージョンの期日です。
  • チケット数:これは、バージョンに含まれているチケットの数です。
  • 完了チケット数:これは、バージョンに含まれる完了チケットの数です。
  • 残り営業日:これは、今日からバージョンの期日までの営業日数です。土曜日と日曜日を除きます。
  • 遅れ日数:これは、すべてのメンバーの遅れ日数の合計です。
  • 着地日:バージョンの完成予定日を意味します。土曜日と日曜日を除きます。

ユーザー詳細の表

  • ユーザー名:これは、メンバーの名前です。
  • チケット数:これは、メンバーが持っているチケットの数です。
  • 予定工数:これは、メンバーが持っているチケットの予定工数の合計です。
  • 作業時間:これは、メンバーが持っているチケットの合計作業時間です。
  • 進捗率:これは、メンバーが持っているチケット
    の進捗率の平均です。
  • 遅れ日数:これは、今日の時点での遅延日数です。本日の計画値は、開始日から期日までの予定工数を線形補間して算出しています。遅れ日数は、本日時点のアーンドバリューを差し引いた値から算出します。プラス値は遅延を示します。クリックすると検証ダイアログが表示できます。
  • 期日:これは、メンバーが持っているチケットの最遅の期日です。
  • 着地日:メンバーが持っているチケットの完成予定日を意味します。土曜日と日曜日を除きます。

英語の画面

f:id:it-managers-life:20210106215140p:plain

英語の画面

計算の検証画面(個人毎)

f:id:it-managers-life:20210106215350p:plain

計算の検証画面(個人毎)

ご意見ご感想は、コメント欄へお願いします。
インストールは、以下を参考にしてください。それでは、また!

github.com

姉妹プラグインのかんばんプラグインです。ご興味がありましたら、こちらもご覧ください。

it-managers-life.hatenablog.com

Redmineプラグイン開発入門(4)メールを送信する方法

Redmineプラグインでメールを送信する方法

こんばんは。 寒い日が続きますね。こんな日は温かくして自宅でゴロゴロしています。 Redmineプラグインでメールを送信する方法をメモしておきます。 いいね!プラグインにメール通知機能を追加しましたので、その軌跡となります。 記事はプラグイン名=likeで書いています。

1. 専用のメール送信クラスを作成します。

Mailerクラスを継承して作成します。メールアドレスは.mailメソッドが使えます。

plugins\like\app\models\like_mailer.rb

class LikeMailer < Mailer
    def on_like(user_to, title, content)
        @title = title
        @content = content
        mail to: user_to.mail, subject: @title
    end
end

2. プレーンテキスト用とHTMLメール用の2つのviewを作成します。

views/クラス名/メソッド名でファイルを作成します。

plugins\like\app\views\like_mailer\on_like.text.erb

<%= @title %>
<%= @content %>

plugins\like\app\views\like_mailer\on_like.html.erb

<p><%= @title %></p>
<p><%= @content %></p>

3. 送信処理を書きます。

  1. で作成したメソッド+.deliverメソッドを呼びます。これでメールが送信されます。

plugins\like\app\controllers\like_controller.rb

user_to = User.find(user_id)
title = User.current.lastname + " liked your Ticket"
content = "本文を書きます"
# Send a mail
LikeMailer.on_like(user_to, title, content).deliver

以上となります。

参考になりましたら幸いです。ではまた。

github.com

it-managers-life.hatenablog.com

Redmineいいね!プラグインの紹介


 こんばんは。仕事が落ち着いてきたこともあり、自宅でプログラミングする余裕がでてきた今日この頃です。Redmineプラグインを書くのもほぼ1年ぶりです。もともとRailsはきちんと勉強してないのですが、忘れまくっています。今回のプラグインはリハビリです。

 会社でRedmineを使っています。前々から、感謝やためになるという意味をこめて、いいね!(LIKE!)が、できればいいなと考えていました。いいね!ができるプラグインは、すでにいろいろな方が開発済みです。ソースを拝見すると私なんか素人には高度な内容で、尊敬してしまいます。viewをhookする練習をしてみたかったのと、いいね!を集計する機能が欲しくて作ってみました。

 サンプルくらいの気持ちで、よろしければ、自由に改変してご利用ください。フィードバック頂けると喜びます。GitHubページは、下の方に貼っておきます。

このプラグインでできること

 以下の3つにいいね!ができます。

  • チケット
  • 注記
  • Wiki

(2020/2/9 更新)メール通知できるようになりました。

 スクリーンショットを載せたいと思います。

1)いいね!した画面

(2020/2/22 更新)お好みで6種類のアイコン画像を使用できます。アイコンをクリックでいいね!がカウントアップされます。

f:id:it-managers-life:20200222170644p:plain

6種類のアイコン

2)ユーザ集計の画面

 こういうのあるとダメですか?ソートはしてませんよ。

f:id:it-managers-life:20200202202014p:plain

いいね!をユーザ集計した画面

(2022/4/29 更新)いいねを受け取った数、送った数の2つを表示できるようになりました。

次にやること

 自分自身にいいね!できなくする。

最後に

 今後のためにRubyRailsどちらも、きちんと勉強したいなあ。Googleさん頼みも限界を感じてきました。GitHubは以下からどうぞ。

それでは、また。

github.com

Redmineかんばんプラグイン公開

こんにちは。

涼しいというか、寒くなってきましたね。風邪ひいていませんか?

最近は、仕事が忙しくブログの更新ができないでいます。

仕事は PHP/Laravel でサービスを開発しています。基本プロマネなんですが、人数が足りない場合のみプログラミングも手伝っています。

さて、Redmineかんばんプラグインですが、嬉しいことにご興味を持って頂けた方がコメントくださったので、公開することにしました。下記にGitHubのリポジトリを載せておきます。

初めてRuby on Railsで作ったもので、お恥ずかしい内容ですが、ご利用いただけたら幸いです。また、ご意見・ご要望も受け付けますので、お気軽にコメントください。

 

ではまた。

github.com

it-managers-life.hatenablog.com