Redmineのことを誰も知らない職場に導入　～準備編～

# はじめに

日本企業はExcelが大好き、そんな噂を聞いたことがあります。
あいにくと日本というでかい主語で語れるほどの知見はありませんが、私がいる現場はExcelが大好きです。

+ 資料は8割Excel。2割パワポ
+ 毎日編集する引き継ぎ帳もExcel
+ 編集したらファイル名に日付をつけて保存していくので稼働日数×部署数のファイルがある
+ 案件が増えるたびに引き継ぎ帳は行を挿入して長くなっていく。
+ 読みにくさのあまり案件の取りこぼしが増えて業務に支障

･･････と、このような現状を抱えています。数週間前の引き継ぎ帳など誰も読みませんが、膨大な量のテキストが存在します。プロパティの容量カウンタが300GBを超えたあたりでウィンドウを閉じました。
いい加減我慢できなくなってきて「導入しよう！」と思い立ったわけです。

## やりたいこと

1. 小規模チームでRedmineを使って進捗管理
2. 期限のフォローをしなくてもいいようにメールで通知
3. オンプレで外部から接続できない環境での設置
4. 平易でわかりやすい言葉を使い、心理的な導入コストを極力下げる

1と3はマストです。2は出来ればいいなというレベルです。
4はExcel以外で進捗管理をしたことのない人々に導入するという意味では限りなくマストに近いです。

## 想定利用者数

閲覧者の想定は100～200人程度。
チケットを発行するなどして参加する人の数は3～10人を想定。
つまり、私が所属する小規模なワーキンググループがメインで利用することが前提です。
全社的なExcel信仰を改めることはハッキリ言って無理です。

## 使用可能なリソース

### お金：0円

まず予算はありません。
ぶっちゃけヒラの思いつきなので。

### Windows10 PC：1台

個人用のものとは別に現場管理用のデスクトップPCが1台あります。
ここにBitnamiのRedmineをインストールしてサーバ代わりにすることにします。
ただのPCを24時間運用はリスキーですが、そこはこまめにバックアップをとって対策します。

### 導入予定のバージョン：4.0.X

導入当時の最新版をインストールすることにしました。
Pluginでゴリゴリやるなら3の方が良いのでしょうが、そこは重視していないので4で。

### 上司の理解：プライスレス

冒頭に挙げた問題点については上司もストレスに思っていたらしく、「進捗管理システムを導入したい」という私の話を「じゃあやってみなよ！」と快諾してくれました。
お金はくれません。

---

## インストール

https://bitnami.com/stack/redmine
まずWindows用のRedmineを~~世界的に誤検知で有名な~~ウイルス対策ソフトに引っかからないよう祈りながらダウンロードします。

1. 言語設定は日本語にします。
2. コンポーネントはデフォルトのまま。
3. インストールするフォルダは`C:\Bitnami\redmine-4.0.5-0`（執筆当時のバージョン）にします。
4. 表示用氏名、メールアドレス、ログイン名、パスワードを入力。
5. Apache Webサーバのポート番号も特に問題なければデフォルトのまま。
6. MySQLも同様に。
7. データベース設定の規定値として使用する言語は日本語にしておきます。
8. Configure SMTP Settingsはメール通知に関する設定の要求です。  
あとでconfigは編集するので、ここではチェックボックスはチェックしなくてもいいです。
9. Deploy redmine to the Cloud in One Clickの「Bitnami クラウド・ホスティングについて、もっと詳しく」はチェックを外します。

以上、インストールを開始します。
無事インストールが完了したらブラウザで開いてみましょう。
以下の画面が表示されたら成功です。

![redmine_top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186560/96e7e4cf-9c43-7de3-93c5-1097d228ce12.png)

以後、インストールしたPCが起動している間はRedmineに接続できます。
インストールしたPCのIPアドレスを事業所内の別PCで入力して接続できるか確認してみましょう。

---

## 運用前の下ごしらえ

まずAccess Redmineをクリックしてログインします。
画面上の管理メニューから設定に入ります。

### 設定

#### 全般

ここはお好みでどうぞ。
ホスト名とパスはデフォルトでは localhost:3000になっているはずです。
これを IP:ポート番号/redmineとしておきましょう。
テキスト書式はお好みで。ちなみに私はMarkdownの方が好きです。

#### 認証

部外者へのアクセスを一切許さない設定にしたい場合**認証が必要**を「はい」に設定しましょう。

#### プロジェクト

**デフォルトで新しいプロジェクトは公開にする**は導入予定の環境の情報セキュリティを考慮して選択してください。
**デフォルトで有効になるトラッカー**は必要なときに編集します。今はいいです。

#### チケットトラッキング

**グループへのチケット割り当てを許可**は特定の職位の人や限定的なグループにチケットをアサインする際に便利ですのでチェックしておきます。
休業日はデフォルトで土日がONなので環境に合わせて設定してください。
チケットの一覧で表示する項目は、期日を追加しておくことをおすすめします。

#### ファイル

デフォルトでは添付ファイル上限5MB程度なのでストレージ容量と必要性に相談しながら設定します。

#### メール通知

まだメール通知自体が有効になっていないのではしょります。

---

### グループ

現場の構成を反映したわかりやすい名前でグループを作成し、ユーザを分類します。

### ロールと権限

開発者、報告者という名称をわかりやすい名称に変更します。
私の現場では開発者＝承認者、報告者＝担当者という風に変更。
細かなルールは運用しながら権限の要不要を変更します。

### トラッカー

ある意味実運用において一番大事なのがトラッカー設定です。
ソフトウェア開発ならいざ知らず、それ以外の環境では「バグ・機能・サポート」というチケット分類は意味不明ですらあります。
そこでまずバグは「トラブル」、機能は「要望」、サポートは「問い合わせ」に変更。他、「対応」や「気付き」という名称も他のトラッカーをコピーして作成しました。

### チケットのステータス

「フィードバック」は「差し戻し」に名称を変更してわかりやすく。
新しいステータスとして「確認中」を作成。「トラブル」「対応」トラッカーの処置後のインターバルとなるステータスを追加しました。

### ワークフロー

ステータスは追加しただけでは反映されませんのでワークフローを編集します。
どこにも紐付いていないステータスはデフォルトでは表示されませんので「このトラッカーで使用中のステータスのみ表示」のチェックを外します。

また、「報告者」がチケットを片付けた後必ずワンクッション入れるために「報告者」が遷移できるステータスを「解決」と「フィードバック」、「確認中」に限定。クローズするために「承認者」の手が必要なようにしました。
（本人が作ったチケットは除く）

### カスタムフィールド

必要に応じて追加します。

---

## メール設定

メール設定は完全にイントラネット内で完結させたいか、それともGmailを使えるかで変わります。
ではまずメールの設定ファイルを開きます。
`C:\Bitnami\redmine-4.0.5-0\apps\redmine\htdocs\config\configuration.yml`がそれです。

![mail.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186560/e1b6c54e-3e1f-50ba-95c6-e83bede47925.png)

ファイルを開くとこんな感じになっていると思います。

### Gmailの場合の設定方法

GmailのSMTPサーバを利用出来る場合、Googleアカウントのセキュリティ設定からアプリパスワードを作成してください。

![gmail.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186560/b6678c0b-ccdc-dc8c-d0a2-326352b18142.png)

作成したアプリパスワードをpassword:の後に入力します。
下図を参考に入力してください。

![mail2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186560/3d3c3025-9b53-21fe-d218-76950ddb9a25.png)

user_nameのところは使用するGmailアドレスを入力してください。

### それ以外の場合の設定方法

システム管理者に問い合わせてください。
Microsoft Exchange Serverの場合デフォルトでは認証不要、delivery_method: :smtpでaddressとportの指定だけで接続できるかも。

## 設定が終わったら

`C:\Bitnami\redmine-4.0.5-0`のmanager-windows.exeを起動。
Manage Serversのタブで「Restart All」をクリックします。

![manage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186560/4c42d9a2-6e8d-e4d1-787d-38688fed7c5b.png)

すべてのServerがRunningになったらひとまずOKです。管理画面のメール通知から正常に送信できるかテストしてみましょう。

---

## リマインダーの設定

メール送信設定についての基本的なところは下記参照。
http://redmine.jp/faq/issue/send_reminders/

ただしこちらの記事はLinuxな環境が前提なので、このまま`bundle exec rake redmine:send_reminders`をコマンドプロンプトで実行しても**'bundle' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。**と言われるのがオチです。

まずWindowsでbundleコマンドを認識してくれるようにします。

1. 画面右下の検索で「control panel」と入力、コントロールパネルを開く
2. システムとセキュリティ　＞　システム　＞　システムの詳細設定へと進む

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186560/86f18b04-bd37-5c82-f24c-7b23ec761a04.png)

3. 環境変数をクリック
4. 画面下側の「システム環境変数」のPathをダブルクリック
5. 新規をクリックして`C:\Bitnami\redmine-4.0.5-0\ruby\bin`を追加する
6. すべて閉じてからコマンドプロンプトを開いて「bundle」と入力。Could not locate Gemfileと表示されたら成功。

これでコマンドを実行する用意は出来ました。
次にリマインダーを実行するためのバッチファイルを用意します。
`C:\Bitnami\redmine-4.0.5-0\apps\redmine\htdocs`の下に以下の内容のファイルを作成します。

``` bat
cd %~dp0
bundle exec rake redmine:send_reminders days=3 RAILS_ENV=production
```

ファイル名はreminder.batとします。
days=の後の数字はn日前に期日が来るチケットの通知を送信するという意味になります。
お好みに合わせて編集してください。

保存したバッチファイルを実行してメールが送信されることを確認します。

### 自動通知

Linuxではcronを使えますがWindowsではそうもいきません。
しかし代わりになるものはあります。

1. 画面右下のWindowsロゴを右クリック＞コンピュータの管理をクリック
2. タスクスケジューラ＞タスクスケジューラライブラリを開く

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186560/87faaa83-06c2-d954-fdda-29f6a9ae6304.png)

3. ライブラリを右クリックしてフォルダを作成。名称は「Redmine」とします
4. 作成したフォルダを選択後、画面右側の操作から「基本タスクの作成」を選択
5. 任意の名前と説明を入力
6. トリガーは毎日とします
7. 開始時刻は始業前・交代前がおすすめです
8. 操作は「プログラムの開始」を選択
9. プログラム/スクリプトで先ほど作成したバッチファイルを指定します。
10. 設定が完了したら「実行」をクリックして正常に動作するかを確認します。

## 準備完了

ここまででシステム的な準備は完了です。
あとはプロジェクトを作ってチケットを切って自分の環境に合わせた設定を作り込んでいくことになります。
そして何よりも困難な**「みんなに導入したRedmineに参加してもらう」**という一大事業が待ち受けています。
そこは私自身が四苦八苦しながら取り組んでいますので、また改めて記事にしたいと思います。

ではでは。