ryouma-nagareのブログ

IT関連をメインに書いていきます。

redmine.tokyo 第11回勉強会 に行ってきました

redmine-tokyo.connpass.com

Redmineの簡易CRMとしての活用事例~システム・プラットフォームとしてのRedmine

Redmineをいろいろなプラットフォームとして使ってみた、というお話。

Redmineは多用途

  • Redmineが多用途に使える理由
    • 関連チケットによる関連付け
    • 複数/階層型PJに対応
    • トラッカー/ワークフロー/ステータスを自由に定義
    • プラグインJavascriptによる柔軟な機能拡張
    • REST APIによる外部連携

簡易CRMを実現するために使用するプラグイン

  • WikiLists
  • Issue Templates
  • View Customize

●実現イメージ

  • お客様=チケットとして、チケット内に設備情報、インシデント、お問い合わせを集約表示させる。
    • WikiListsでチケットinチケット
  • 設備、インシデント、お問い合わせはそれぞれ別PJで管理
    • 自動的にお客様チケットに反映

●実現方法

  • プロジェクトを作成する
    • お客様管理/インシデント/問い合わせ/設備の子PJを作成
  • トラッカーの作成
    • お客様/インシデント/問い合わせ/設備トラッカーを作成
  • ステータスの定義
    • 設備:構築中→運用中→EOS→撤去
    • 問い合わせ:新規→対応中→完了待ち→完了
    • 事象:新規→調査中→対処待ち→完了待ち→完了
    • お客様:新規→運用中→解約
  • 各テーブルのリレーションのために
    • カスタムフィールド「お客様ID」を作成し、全PJに追加
    • その他は各PJごとに必要なカスタムフィールドを追加
  • 各PJにカスタムクエリを作成
  • /issues/new に対して、View_customizeでスクリプトを登録
  • お客様チケットのテンプレートを作る
    • WikiListsを使用して、カスタムクエリの結果をチケット内に表示
  • お客様IDの自動採番

view_customize プラグインは@onozatyさんのブログが役に立つ。 http://blog.enjoyxstudy.com/

開発メンバーの協力なしでここまでできるという例として非常に参考になりました。

『IoT企業でのプロジェクト管理とその変遷 、またはなぜRedmineが僕らの終着点となったか』

  • IoTの設計はメカ〜物流まで、全部カバーする必要がある。
    • 1人の人間では管理できない
    • デバッグはほぼ必ず多レイヤーになる
  • 開発の工程は完全なるウォーターフォールだが、各工程はタスクがあふれかえっていて、アジャイルっぽい。
  • ハード開発部分では、よくあるリードタイムの長いタスクがどんどん溜まっていく
  • 経営/ビジネス側から進捗が見えないという批判がくる。
  • 依頼受け付けツールがSlackからRedmineに変わった。

Redmineを導入してよかったこと

  • ソフトウェアエンジニアもハードウェアエンジニアも両方が同一に使えるツール
  • CSからの問い合わせ対応で他レイヤーの間で、調査/対応を自由に移動できるようになった
  • ガントが欲しいという要素に応えられるようになった

●まだまだ課題は多い

「乱立してるRedmineを一つにまとめる話」

アジャイルウェアの堂端さんが登壇。 富士機械(fuji.co.jp)の事例 → 会社の人は「ふじこJP」と呼んでいるらしい。

  • インスタンスごとにauto increment列がチケット番号なので、CSVでのインポートは#での参照とかが崩れる
  • 結局、移行ツール作った。
  • 統合元のRedmineデータをSQLiteでエクスポート
  • インポート後に、文字列を統合前/後IDで置換
  • 添付ファイルをごっそり移行する ようにした。
  • 統合ツールはRedmineプラグインとして実装した
  • 外部ツールではない
  • Redmineバージョンにかなり依存
  • 15000件チケットのインポートで3日かかる…

なんやかんやでインフラ/ソフトウェアの最適化で最大サイズのインスタンスが43時間でインポートできるようになった。

最終的に16インスタンスRedmineを統合

●統合後のRedmine

  • PJ:1434
  • チケット:92710
  • 履歴:377513
  • カスタムフィールドの値:851932
  • コミットログ:1058789

  • せっかくデカいRedmineができたので、いろいろデータ分析していきたい

    • 業務フローのパターン洗い出しとか
    • パフォーマンスチューニングとか

プラグインはいずれかのインスタンスで試行してから横展開したので、プラグインの状態に大幅な差が無かったことが勝因の一つでしたとのこと。

Redmineのバージョンアップに追従していくための一工夫」

第5版の適用例として、わざわざバーベキューをRedmineで管理。

●バージョンアップの支障になること

  • プラグイン大量死の歴史

    • redmine1.3:デフォルトルーティング廃止
    • redmine1.4:bundler導入
    • redmine2.0:Rails3へアップデート
    • redmine2.1:prototype.js からjQueryへ移行
    • redmine3.0 :Rails4へアップデート
  • どうしてもプラグインを使う場合は厳選する

    • 継続的にメンテナンスされていることが必須
    • プラグインのインストール後に本体のテストが通るか。
      • export RAILS_ENV=test
      • bundle exec rake ci:setup
      • bundle exec rake ci
  • ソースコードリポジトリからチェックアウト

    • svn switch でブランチの変更が簡単にできます。

「美しく高機能に改良されたRedmine「Planio」と、Redmineへの貢献」

PlanioはRedmineをカスタマイズしてサービスしているが、本体へのフィードバックもしているとのことで素晴らしい。

RedmineとElectronで新人の育成状況を可視化した話」

  • 最初に所属チームを決めないようにした。
    • あまり面倒を見てくれないチームに配属されると可哀想。
  • 新人教育のカリキュラム/活動データをRedmineで記録して、改善の仕組みを簡単にする。
  • チケット数/工数などで評価すると正しい評価にならないと思ったので、Redmineの外で評価軸を作ることにした。
  • Electronで日報ジェネレーターを作成した
    • 新人くんはチケットさえ正しく入力しておけばそれっぽく日報を生成してくれるので動機づけになる。

教育はする側も学ぶことがいっぱいありますね。

Redmine最新動向-3.4の変更点について-

  • チケット編集画面に添付ファイルの一括削除機能追加
  • 文書/Wikiページに添付ファイルのサムネイル表示を追加
  • ファイル書式カスタムフィールドで添付ファイル必須とすることが可能
  • 注記の変更時にプライベート属性の変更が可能に
  • チケットのPJ移動/トラッカー変更でカスタムフィールドが無効になった場合に注記が残るようになった
    • 戻しても値は復活しません
  • バージョンのステータスなどがカスタムクエリに使えるようになった
  • プラグインパスをconfiguration.ymlで変更可能に
  • REST APIのレスポンスにカスタムフィールド値が返却されるようになった
  • ユーザ単位でテキストエリアのフォントを等幅/プロポーショナルから選べるようになった
  • 時間表記でhh:mm形式を選べるようになった

欲しい機能がある人は

http://www.redmine.rg/versions/32

http://www.redmine.rg/versions/33

で+1しましょう

グループディスカッション

使用プラグインのアンケートは、資料から抜けていましたが、View_customizeが10件で1位。

ファシリテータとして、@tkusukawa さんに入っていただいてのディスカッション。

ひろめる手段として、トップダウンボトムアップともあるが、見える化したくない人もいる、というのはかなりの阻害要因となりますね…

「Unofficial Redmine Cooking」の案内

Redmineユーザ会でプラグインやパッチなどの情報共有をはじめました。

https://redmine.tokyo/projects/unofficialcooking/issues?query_id=3

これはいいですね。自分も協力できることがあれば参加したいと思いました。

終わったあとは懇親会でさらに情報収集。 次回もぜひ参加したいと思います。