OSS+Dockerを利用して最速で社内インフラを整えるが、挫折の連続。だがめげない

## はじめに
生産技術部で製品の検査工程を担当しているエンジニアです。工場の設備を作ったりするお仕事です。
我々の業界は、ソフトウェア業界で当たり前に導入されているプログラム管理のホスティングサービス、ナレッジ管理システム、データを可視化するシステムなどが導入されていないことは珍しくありません。そして、未知のシステムを導入することは、理解してもらえないことが多くハードルが高いです。特に、クラウドサービスと呼ばれるものに対する抵抗感が強い企業体質があります。

そこで、これらのシステムをスモールスタートで、気軽に試せることを重要視し、業務の効率化と業務品質の向上を目的として、社内インフラの構築を実施していきます。
（もちろん、本業が疎かにならないように、空いた時間に片手間でやってます。）

実際に立ち上げた社内インフラがこちらです。全て自社管理、オンプレミスです。

* [GitLab（+ Mattermost）](https://qiita.com/TomoyukiSugiyama/items/ba7ef0ebab8242dbacb0)
* [Growi](https://qiita.com/TomoyukiSugiyama/items/94e7f43f93215146f4d2)
* [Elastic-Stack(Elasticsearch,Kibana,Logstash,Filebeat,Metricbeat)](https://qiita.com/TomoyukiSugiyama/items/619ab258ba230dfcf0a0)

## 最初の壁
オンプレでも、最低限サーバは必要です。しかし、よくわからないことのために会社はサーバを買ってはくれません。困っていたら、たまたま部屋に置いてあったミドルレンジサーバが目に止まりました。誰が置いたか聞き込み、なんで置いたのか確認すると、生産現場で使っていたが捨てるからだそうです。壊れたのかと聞くと、ハードディスクが満タンになったからだと言いました。なんだそれ？w

とにかく、ちゃんと動くミドルレンジサーバが手に入ると思い、すぐにもらいました。

## GitLabの導入に至ったきっかけ
生産技術部では、プログラムを年間数百個作成し、それぞれが何かのプログラムをベースに派生したもので、ベースにするプログラムのバージョンも高頻度で更新されます。プログラムの管理は複雑ですが、エクセルを使って手作業で管理しています。エクセルへの記入忘れが原因で先祖返りしてしまったり、品質トラブルが多発していました。そこでなんとかしたいと思い、立ち上がりました。

GitHubのようなサービスが、自前で運用出来るものが無いか探すと、

* GitLab
* BitBucket
* GitBucket

などが、見つかりました。この中から利用制限や機能を比べて、私たちの業務にもっとも適したGitLabを選定しました。 


### GitLabでの運用を断念
Dockerを使い、GitLabはあっという間に立ち上げることができました。そして、部署のメンバーにお披露目し、実際に使っているところを見てもらいました。結果は、便利そうだけどちょっと無理と言われてしまいました。理由はコンソールを使ったことが無いから、Gitの仕組みが複雑だから、でした。

実際に使ってもらえば理解してもらえると思い、GitLabを使って、プログラミング教育を開催しました。一つづつ説明し、なんとか最後まで教育を終えることはできましたが、感触はよくなかったです。

### コロナ渦で活躍したGitLabに付嘱のMattermost（チャットツール）
GitLabが導入できず、気持ちは落ちていましたが、思わぬところで立ち上げたシステムが活躍しました。コロナが広がり始めた頃、会社で行った対策の一つが部署関係なく全員で席替えでした。その当時、私たちの会社でチャットツールは何も利用しておらず、同じ部署でのコミュニケーションが取りづらい状況に陥りました。そこで、Mattermostを使うように呼びかけ、体調チェックの連絡など、仕事のコミュニケーションに使っていただきました。GitLabを立ち上げていたため、スムーズに運用することができました。今は、もちろんzoomやteamsを使っています。

## Growiの導入に至ったきっかけ
社内の文章は、大抵パワーポイントかエクセルに書かれています。技術的な内容もパワーポイントに書かれ、データベースに保存されています。やはり、必要な記事を検索しにくいです。せっかくナレッジを貯めても利用できなければ意味がないです。そして思う事は、今時のシステム使いたいよね？webhookで通知飛ばしたいよね？ってことで、ちょうど良いシステムを探し始めました。

* Confluenceが使ってみたい。でも、利用料がかかるし、無料版は30日間
* Clowi。お？なんだか良さそうなシステム
* Growi。ClowiのForkらしい。何やら機能が豊富そう。elasticsearch使って全文検索も出来る。通知飛ばせる！

機能豊富で、常に活発に開発が進められているGrowiを選定しました。

### Growiでの運用を断念
早速、Dockerを使い2０分程度で立ち上げ、先輩にこんなシステム導入しましたが、どうですか？と反応を伺う。おお！いい感じ！となかなかいい反応をもらいました。しかし、Markdownで記述することが難しそうと、言われました。そして最大の問題は、~~GrowiはIE、Edgeをサポートしてない~~が、社内のメンバーのPCにはIEとEdge以外に入っていない。社内のシステムは、IE以外サポートしていないからです。そのため、他のブラウザをいれるつもりもないそうです。


**21.1.18追記
Growiは、[Edgeの7.9以降をサポート](https://docs.growi.org/ja/guide/#%E5%88%A9%E7%94%A8%E6%8E%A8%E5%A5%A8%E7%92%B0%E5%A2%83)しています。**

### Growiの魅力
残念ながら、他の人に使ってもらうことが出来ませんでしたが、個人用に会議の議事録を付けたり、技術的な内容をまとめたり、最大限活用しています。Growiの面白いところは、幅広い機能追加にチャレンジしていて、drow.ioとの連携機能などがあります。これからもいろんな機能追加を楽しみにしていますし、応援したいと思います。

## Elastic-Stackの導入に至ったきっかけ
製品の検査工程では、設備故障や設備異常により製造ラインが停止した場合、生産に大きな影響を与え利益喪失に繋がります。そのため、早期に解決する必要があります。これらの問題を解決するために、私たちは製品を検査したログを解析し、異常の原因を突き止めます。製品の検査ログはcsvのデータとしてサーバに蓄積されますが、ログを集計し、エクセルでグラフを作って、分析していては時間がかかってしまいます。そこで、データを可視化出来るシステムはないか検討しました。

GitLabにはシステムの状態をモニタリングするために、GrafanaとPrometheusが導入されています。初めは、Grafanaで可視化すれば良いと思っていましたが、調べてみるとKibanaと言うシステムもデータの可視化が可能であることを知りました。Kibanaは、グラフの作成が簡単だと言う記事をよく見かけました。そして、なんと言ってもKibanaはcsv形式のデータをサポートしていることが決め手となりました。

### Elastic-Stackの運用に向けて
まずは、いつも通りDockerで立ち上げます。サーバに溜め込まれた検査ログを一年分、Elasticsearchに取り込んでみました。いくつかグラフを作成し、早速打ち合わせを開きました。使用感を見せ、簡単にElastic-Stackについて説明しました。便利そう。使ってみたい。とかなり良い反応でした。ちょっと言われたのは、Kibanaのページは日本語にならないか？と言うところ。これは日本語化するプラグインとか入れればなんとかなりそうです。（IEはサポートされていない事は黙っていましたw本当に必要なシステムであることがわかれば、別のブラウザもいれてくれるでしょう。そしてGrowiも諦めない！）即導入と言う訳には行きませんでしたが、大きな障害もなく、現状は運用に向けて進んでいます。

## 最後に
思うように行かないことが多々ありますが、めげずに取り組んでいます。ちょっとしたことでも上手く行くことがあれば、きっと次に繋がります。そして、何事もトライしないと始まりません。

次は、業務管理システムの導入を検討したいです。Jiraはライセンス的に難しそうですが、何かいいシステムがあれば教えてください。