とあるメーカーの
Redmine活⽤事例
2019年12⽉2⽇(⽉)
第1回 関⻄Lychee Redmineユーザー会
古野電気(株) IT部 デジタルソリューション課 課⻑ ⽥村 進司
⾃⼰紹介
名前: ⽥村進司(たむらしんじ)
所属: 古野電気
仕事内容:
表の仕事 裏の仕事
1995 デジタル変復調のシミュレーション 社内ネットワーク・サーバー管理
2001 GPSモジュールの開発 WEBサーバー, 全⽂検索システム, ファイル
サーバー構築・運⽤・保守
2003 Matlab導⼊
新規衛星端末のデジタル変復調、
TURBO符号の研究・開発、システム
設計
メーリングリスト, CMS(PukiWiki, Xoops)導
⼊
Trac, Subversion導⼊
2010 主としてシステム設計, ネットワーク
設計, IoTシステムの研究開発
Redmine構築・運⽤・保守
関⻄Tableauユーザー会幹事2015 Tableau導⼊
2017 AWS導⼊, Tableau Server構築
PSIRT⽴ち上げ
2019 セキュリティ(CSIRT), GDPR対応, 故障予測, データ解析, データカタログ⾊々構築中
@crosspointst crosspoints
crosspointscrosspointst
古野電気って︖
社名 古野電気株式会社
本社所在地 兵庫県⻄宮市
設⽴ 1951年 (昭和26年)
事業内容
舶⽤電⼦機器および産業⽤電⼦
機器などの製造・販売
資本⾦ 7,534 百万円
従業員(連結) 2,920 名
売上⾼(連結) 79,050 百万円
代表者 古野 幸男
上場取引所 東京証券取引所市場第⼀部
2018年2⽉28⽇現在
古野電気は1948年に世界で初めて⿂群探知機の実⽤化に成功して以来、舶⽤電⼦機器分野にお
いて、その独⾃の超⾳波技術と電⼦技術をもとに数々の世界初・⽇本初の商品を提供し続けて
きました。そして今⽇、世界80カ国以上に販売拠点を有し、世界規模の舶⽤電⼦機器総合メー
カーとしての確固たる地位とブランドを築いてきました。
事業内容
統合航海システム
ソナー
AIS
GPSプロッタ
超⾳波⾻密度測定装置
漁
労
機
器
無
線
通
信
航
海
機
器
舶
⽤
事
業
通
信
・
GNSS
ヘ
ル
ス
ケ
ア
そ
の
他
産
業
⽤
・
そ
の
他
無線機器
潮流計⿂群探知機
ETC⾞載器
DSRC
路側アンテナ
GPS(GNSS)
周波数発⽣器
GPS(GNSS)
受信機
衛星通信装置
レーダー
超⾳波
技術
無線
技術
レーダー
技術
GPS
技術
⽣化学⾃動分析装置
無線ハンディターミナル 無線LANアクセスポイント
1948
世界初
「⿂群探知機」の
実⽤化に成功
1952
「漁業⽤無線機」
を開発
1959
「船舶⽤レーダー」
を開発 1986
「GPS航法装置」
を開発
地盤変位観測システム
使⽤している部署と利⽤⽬的
社内外向けすべてで約30サイト
企画部⾨
• ナレッジ
• タスク管理
• ポータル
• ⽂書管理
• BIツール向
けデータ
部⾨横断
• ナレッジ
• タスク管理
• ポータル
• ⽂書管理
• 案件管理
• 在庫管理
• 出荷管理
• ヘルプデス
ク
研究・開発
• ナレッジ
• タスク管理
• ポータル
• ⽂書管理
• アイデア
シート
• Gitlab連携
• RocketChat
連携
営業業務
• タスク管理
(国内外)
• CRM
サービス部⾨
• インシデン
ト管理
本社部⾨
• ヘルプデス
ク
主な利⽤プラグイン
• Clipboard image paste
• Computed custom field
• Redmine Agile(RedmineUP)
• Redmine Banner
• Redmine Issue Templates
• Redmine Select2
• Redmine Checklists(RedmineUP)
• Redmine Default Custom Query
• DMSF
• Knowledgebase
• Redmine LDAP Sync
• Redmine Startpage
• Redmine Tags
• Redmine Wiki Extensions
• Redmine Wiki Lists
• Redmine Wiki Unc
• Redmine XLSX format issue exporter
• Sidebar Hide
• Spectator
• View Customize
• WikiNG
• Lychee,採番プラグイン等
Qiitaにも古いですが書いてます https://qiita.com/crosspointst/items/33f0313e14b2c7b3595a
使⽤中のLychee Redmineプラグイン
• Lycheeベーシック
• プロジェクトビュー
• イージーアサイン
• ワークデイズ
• チケットスプレッドシート
• Lycheeスケジュール管理
• ガントチャート
• カンバン
• チケットセット
• プロジェクトテンプレート
• アクチュアルデイト
• Lychee⼯数リソース管理
• タイムマネジメント
• リソースマネジメント
• Lycheeカスタムフィールド
Lychee Redmineの良いところと悪い
ところ
• 良いところ
• バージョン対応の幅がある
• バグ対応が⽇本語でできる
• 類似の他のプラグインがなかっ
た
• ⽇本企業向きの機能が⼊ってい
る
• 悪いところ
• ⾼い
• 機能追加は別プログラムを推奨
される…
• ⾊遣いが派⼿︖
基本構成
ü社内向け: VM, 社外向け: AWS(EC2)
ü1ホストでApacheのVirtualHostで個別に⽴てている
üShellScriptでホスト⽴ち上げをできるように簡略化
ü認証は基本的にActive Directoryで連携(同期をとっている)
ü社内向けもSSL化(ADで証明書配布)
• 混在コンテンツ対応
運⽤ポリシー
ü 社内システムの隙間を埋める
• 社内上にシステムがあるけど、個⼈作業を共有したいけどエクセルで破綻している
• システム⽴ち上げたいけど、どんな規模になるかわからないから、要件定義をするためにRedmineで構築
してみる
ü データの正規化
• エクセルで⼊⼒させると⾃由すぎる
• 履歴がわからん
• 誰かが編集してたら編集できない
• BIツールで可視化できる状態になる
ü システム管理者おまかせ
• 各ホスト管理者にお任せ(ブラウザで操作できる範囲)
• “こんなことしたい”って⾔われたらそれに対応する
• おかげで︖ViewCustomizeでワークフロー作る⼈もでてきた!(⾮エンジニア)
ü 社内コミュニティ
• 基本社内コミュニティで情報共有で助け合い(数⼈)
• サーバー側の管理者は⼀⼈…
どうやって管理してるの︖
⽥村
使いたい⼈が
システム管理者
システム管理者 システム管理者 システム管理者 システム管理者 システム管理者
Redmine
使いたい⼈
使いたい
依頼
作成
プラグインいれて
こんなんしたい
なんかおかしい
ü サーバー構築
ü プラグインインストール
ü プラグインのサポート(デバッグ含む)
ü 要件定義
ü 使い⽅⽀援
ü 運⽤ルールきめる
ü WEBから設定できることは基本システム管理者(ユーザ部⾨)がする
ü 不具合対応窓⼝
最近やったこと
üRedmineのページビュー解析
• Matomo(旧piwik) + View Customize
• https://matomo.jp/
Matomoを利⽤するための
Redmine(View Customize)の設定
var _paq = window._paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
function embedTrackingCode() {
var u=“https://<matomoのホストurl>";
var user_id = "anonymous";
if(($('div#loggedas').length)){
user_id = $('#loggedas').text();
}
_paq.push(['setUserId', user_id]);
_paq.push(["setTrackerUrl", u+"matomo.php"]);
_paq.push([“setSiteId”, “<matomoで割り振られるID>"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"matomo.js"; s.parentNode.insertBefore(g,s);
}
if (window.addEventListener) {
window.addEventListener("load", embedTrackingCode, false);
} else if (window.attachEvent) {
window.attachEvent("onload",embedTrackingCode);
} else {
embedTrackingCode();
}
RedmineのログインID取得
Matomo上でみるとこんな感じ
Redmine ×
ü新商品開発スケジュールの管理はガントチャートだけでは無理
üRedmineをDBとしてつかって、CSVファイルをデイリーで抽
出してTableau⽤のファイルを作成
ü年単位のガントチャート、条件によって⾊分け等、可視化で弱
い部分をTableauでカバー
+
パッケージドワークブック
UNZIP
Dataフォルダ
ワークブック
データファイル更新
チケット⼀覧をクエリ毎にCSVダウンロード
ZIP
Dataフォルダ
デイリー & 任意のタイミングで更新
TableauとRedmineの連携⽅法
ü RedmineのDBに直接接続(Postgresql, mysql)
• https://www.redmine.org/projects/redmine/wiki/DatabaseModel
• 頑張ればできる
• Tableau上でjoinもできるし
• でも⾯倒くさい
ü WebDataConnectorを使う
• https://help.tableau.com/current/pro/desktop/ja-jp/examples_web_data_connector.htm
• RedmineのREST APIからWebDataConnector経由でTableauが読み込める形式に変換してデータを読み
込ませる
• Javascriptで開発が必要
• レスポンスにやや問題あり(昔は。今はわからない)
• https://tableau.github.io/webdataconnector/community/
• だれかRedmine⽤の作って…
ü カスタムクエリでCSVダウンロードしたものを使う
• これの説明します
ü 背景
• Excelで管理していたが変更履歴がわからない
• Excelだとデータ型が⾃由すぎる(⽇付の列にコメント書いたの誰だ!)
• ↓履歴管理・データの正規化を実現するために
• データをRedmineに集約・更新作業はRedmine
• ↓Redmineでは可視化が弱い, 会議時点の状態と⽐較したい
• そうだTableauを使おう
ü レシピ
• 基本になるTableauパッケージドワークブックを作成する
• (データのファイル名に⽇本語は使わない. ファイル名がUTF-8のため)
• パッケージドワークブックをZIPで解凍しておく(アンパッケージを使わない)
• ↓ データの更新をスクリプト(バッチ処理)で⾃動化
• 毎⽇RedmineからCSVデータをダウンロードして, 更新対象フォルダーに上書きコピー
• 解凍フォルダをZIP圧縮する à 更新されたパッケージドワークブックの出来上がり
Tableau運⽤事例
実際の⼿順
元のワークブックの作成と準備
Redmine (1)必要なカスタムクエリ作成
(2)APIキー準備
(3) CSVをダウンロード
(4) CSVを”Data”とか適当な英名ファイル名に保存
(5) ダウンロードしたCSVを使ってTableauのワークブックを作成
(6) 完成したらパッケージドワークブック(twbx)で保存
(7) パッケージドワークブックを更新処理するサーバーへアップロード
(8) パッケージドワークブックをunzipしておく
更新処理
(1)クエリID, APIキーでwget or curl でcsvをダウンロード
(2)保存先はパッケージドワークブックを展開した”Data”フォルダに保存
(3)ダウンロードしたら、zip圧縮して拡張⼦をtwbxにする
(4)DMSFの指定ファイルに上書き保存
データ接続
⼦チケット親チケット
親チケットのスナップ
ショット
製品マスター

とあるメーカーのRedmine活用事例