投稿

2017の投稿を表示しています

[Redmine Advent Calendar 2017 1日目] shields.ioでredmine.orgのプラグインレイティングのバッヂを表示する

イメージ
Redmine Advent Calendar 2017の1日目です!

Redmineのオフィシャルサイトであるredmine.orgには、開発されているプラグインを確認できるPlugins Directoryがあります。

Plugins Directoryにプラグインを登録しておくと、Redmine上から最新バージョンのチェックも行えます(管理画面のCheck for updatesから行えます)。


しかし、ソースコードは別のリポジトリに登録してある状態になります。
例えばGitHubにソースを登録しておいた場合、READMEやWiki、Issuesなど、そこだけで足りてしまうのが実際のところです。
検索してGitHubに飛んだら、Plugins Directoryを見ることがない場合も多いと思います。

そこで何か誘導するものがあれば、Plugins Directoryで他のプラグインに巡り会う機械にもつながるな、ということで、Plugins Directoryのレイティングをバッヂとして表示する仕組みを考えました。
バッヂからPlugins Directoryへリンクしてレイティングしてもらう、というモチベーションでプラグイン開発者の方にも入れてもらいやすいかなと考えています。

shields.ioというサービスが、いろいろなサービスのバッヂを提供しています。
これにredmine.orgのプラグインレイティングが載れば、プラグイン開発者の方がみんなで使えるな、ということでプルリクエストを出したところ、入れてもらえました

以下はRedmine XLSX format issue exporterの GitHubにバッヂを入れた例です。
星がでるパターンですが、数字で出すパターンもあります。

READMEには、Markdownで以下のように記載してPlugins Directoryへリンクしています。
[![Stars](https://img.shields.io/redmine/plugin/stars/redmine_xlsx_format_issue_exporter.svg)](https://www.redmine.org/plugins/redmine_xlsx_format_issue_exporter) SVGのファイル名部分は、プラグインのPl…

Redmine Auto Assign Group Pluginを作りました!

イメージ
Redmine Auto Assign Group Pluginを作りました!

@akipiiさんが既にブログで取り上げてくださっています。ありがたや!
で、ブログ書いてないと気づいた。。。
きっかけredmine.orgのフォーラムに以下の投稿がありました。
Plugin to automatically assign new users to groups?

ユーザーの登録時に自動的にグループを設定したいという要求は、結構昔からあったようです。
上の投稿から参照されているスレッドは2012/04に開始されています。
パッチやプラグインの書き込みがありますが、条件によって別のグループを設定したい、というのが今回の投稿でした。

ユースケースとして挙げられていた、グループごとでアクセス権限を行なうような運用は、規模が大きかったり複数の組織が絡むようなときに、手間が大幅に削減できそうな感じがしました。
他にも思いつかないようなシーンが隠れてそうだなあとも思い、なんか既にありそうな感じ・・・と思ったんでググってもないから、面白そうだし作るか!ということにしました。
使い方 GitHubにインストール方法簡単な使い方を書きました。
グループの設定画面から、グループごとに正規表現でルールを設定できます。
ユーザーが追加された際に、ルールに合致するとそのグループに追加されます。
今後の方向性 とりあえず、正規表現のチェック機能が必要と思っています。
あとは、グループ横断でのルール一覧もあるといいかな、と思ったり、いらないんじゃないかな、と思ったり。
作ったばかりなので、フィードバックを頂いたら考えていこうかなあと思います。

RedmineプラグインでMroongaを使うときのテスト

Full text search pluginRedmine XLSX format issue exporterが競合した話。
パッチのロード順でチケットが表示(issues#show)できなった。
パッチを提示してもらい、パッチを適用する位置を変更して対処した。
https://github.com/two-pack/redmine_xlsx_format_issue_exporter/issues/50

ここからが本題。
いつも開発環境はsqlite3でやっているが、Full text search pluginがMroongaを使用するので、Unofficial Redmine CookingのRedmine AnsiblePlaybook Unofficial Cooking Edition(闇鍋版)を使用した。
すると、rake redmine:plugins:testでRedmine XLSX format issue exporterのテストを実行すると以下のようなエラーが出た。
Mysql2::Error: The used table type doesn't support FULLTEXT indexes: CREATE fulltext INDEX `index_issue_contents_on_contents`
調べて見るとdb/schema.rbにテーブル作成時のオプション指定が入らないことが原因。
プラグインでは以下のようなmigrateが書かれている。
create_table :issue_contents, options: "ENGINE=Mroonga" do |t| t.integer :project_id t.integer :issue_id, unique: true, null: false t.string :subject t.text :contents, limit: 16.megabytes t.integer :status_id t.boolean :is_private end 対してschema.r…

長岡IT開発者勉強会(NDS) 第52回勉強会に参加してきました #nds52

長岡IT開発者勉強会(NDS) 第52回勉強会に参加してきました。
http://nagaoka.techtalk.jp/no52
Togetterでまとめてくださっています。
https://togetter.com/li/1120966

今回のテーマは「初心者むけ」でした。
初心者とは・・・という哲学的な内容で非常に勉強になりましたw
メモを見ながら雑感です。へえと思ってばかりで何年やっても初心者だな、俺。。。

「はじめてのC#プログラミング」 ailightさん歴史的なあれ。N88BASIC、Quick C、Etc.... とても懐かしかった。caseのbreak漏れでコンパイルエラーとか、へえと思った。
機械、規約がうまく問題を解決してくれるのはうれしい。「分岐が複雑の始まりであることを理解する」、「ループは前処理と後処理がセットでループ」とか、その通りだなと思いつつ、普段から意識できているかというと怪しいと思った。。。
「なんてかんたんなJavaEE」 civicさんFull Profile / Web Profile / Micro Profile
薄いという選択肢があるのはいい。
「文字コードとプログラミング(仮)」 gonchan93さん「UNICODEを使え」、もうこれだね!wJavaのStringがメモリ節約の方向にという話は、へえと思った。
この辺の話。http://openjdk.java.net/jeps/254
「Netcatを使おう」 hayajoさんtelnetみたいなのか、と思ったらそれどころではなかった。すごいコマンドがあるもんだ!
「怖くないし役に立つ設計原則の話」 neko_gata_sさんDRY原則おじさん。いるわー、おれだわー、こぴぺするなーいってるわーorz「設計原則同士は関連している」というところに集約されていると思った。おまけのデザパタも含めて。話を聞くとうんうん、と思うけど、こうやって筋立てて話をできることや反例の出せることは、本当にすごいと思う。硬い、柔らかい、のあたりが、理屈はわかっても初心者には判断が難しいところだと思う。DRYにしないと!と言って見たり、こういう時は重複してもさ、とかいうことは確かにあるが、腑に落ちるように説明するのが難しいところ。
「はじめてのソフトウェアテスト(仮)」 kasacchifulさん工…

RedmineのテストFixturesを手動テスト用に投入する

イメージ
RedmineのテストFixturesを手動テスト用に投入するのに以下のようなスクリプトを作成しました。
https://github.com/jbbarth/redmine-scripts
を参考にしました。

#!/bin/bash export RAILS_ENV=test test -e test/.fixtures.core || cp -a test/fixtures test/.fixtures.core rm -rf test/fixtures mkdir test/fixtures cp -i test/.fixtures.core/*yml test/fixtures/ cp -i plugins/*/test/fixtures/*yml test/fixtures/ cp -i plugins/*/spec/fixtures/*yml test/fixtures/ bundle exec rake db:drop db:create db:migrate redmine:plugins db:schema:dump db:fixtures:load cp -f db/test.sqlite3 db/test.template.sqlite3
上記を実行してから、
$ RAILS_ENV=test ruby bin/rails server で起動すると、Fixturesに含まれているeCookbookなどのプロジェクトが使えます。

Travis-CIで行っているRedmineプラグイン用テストをローカルで行う

Redmine XLSX format issue exporterのCIはTravis-CIを使わせてもらっています。
Travis Integration for Redmine Pluginsを使うとRubyとRedmineのバージョンの組み合わせなども結構簡単に環境を作れます。
ただGitHubへのPushがトリガーなのでローカルでもできると確認とかできていいかな、と思って、Travis-CI環境をローカルでというのをやってみました。
結論から言うと、Pushしちゃう方が早い、と言う感じでした。。。

まずは公式Troubleshooting Locally in a Docker Imageで、Dockerで提供されているイメージと.travis.ymlからCI用のシェルスクリプトを出力するtravis-buildのインストールについて書かれています。
最後の最後で手動で依存関係解決しCIコマンド実行してね、で終わってて詰まりました。

実際にやった手順 環境macOS Sierra 10.12.4Docker version 17.03.1-ce, build c6d412e 手順1. Dockerイメージを起動してログインする
~ $ docker pull travisci/ci-garnet:packer-1478744932 packer-1478744932: Pulling from travisci/ci-garnet Digest: sha256:9380acbb65ed1ae6e5a0b545616f2f4a9f8d6855c264a45924dd52d3ff0589f5 Status: Image is up to date for travisci/ci-garnet:packer-1478744932 ~ $ docker run --name travis-redmine-ci --rm -dit travisci/ci-garnet:packer-1478744932 /sbin/init <snip> ~ $ docker exec -it travis-redmine-ci bash -l root@foo:/# su - travis travis@bar:~$
参考ページ
https://docs.docker.c…

JaSST'17 Niigataの振り返り

2017/04/28(金)に、「JaSST'17 Niigata ソフトウェアテストシンポジウム 2017 新潟」行われました。
テーマは「ユーザビリティ / UX」。私は実行委員なのにテーマが決まってから本を読む、という有様でしたので、非常に勉強になりました。
そのうち資料の公開もあると思いますが、現時点での振り返りです。

基調講演基調講演は、利用品質ラボの樽本 徹也さんから
「ユーザエクスペリエンスの要素とプロセス——UX/UCD概論」
でお話頂きました。
UXとは?なぜUXなのか?そしてUCDと、概論として非常に分かりやすい形でのお話でした。著書の「ユーザビリティエンジニアリング (第2版)」を読んでから臨みましたが、更に理解が深まった気がしました。
心にとまった幾つかピックアップ。
効果、効率、満足度Experienceが儲かるUXの要素 表層、骨格、構造、要件、戦略
(ジェス・ジェームス・ギャレットの「The Elements of User Experience」)
事例紹介事例紹介として、日立ソリューションズの柳生 大介さんから、 「機能中心から人間中心へ ~日立ソリューションズの取り組み~」 でお話頂きました。 どんなきっかけでUXへの活動を始めたのかから、具体的な取り組みと非常に興味深かったです。 手法の紹介も具体的で実際のイメージがつかみやすかったのではないかと思います。 心にとまった幾つかピックアップ。 共通の物差しとしてのペルソナブレストでのアンチプロブレムユーザーに伝わるのか、まずは言葉を見直す
情報交換会JaSST Niigataでは毎回、本会後に情報交換会が行われています。
お茶やお菓子とともに講演者の方々や参加者の方々と語り、交流を深めるという会です。
新潟だけではなく各地から参加してくださ方もおられ、いい刺激になりました。
そして、樽本さんからは「ユーザビリティエンジニアリング (第2版)」にサインを頂きました!

というわけでぼんやりな感じの振り返りになりましたが、UXを知る、というところからと考えていた私としては、得るものが多い場となりました。
このあとも、JaSSTは東北、関西、北海道と続いていきますので、足を運んでみてはいかがでしょうか?